From ad4533166f54ed711aade78f8b55bec688a3d1e1 Mon Sep 17 00:00:00 2001 From: Ngo Quoc Dat Date: Fri, 18 Sep 2026 17:59:57 +0700 Subject: [PATCH 1/2] feat(ios): rebuild the first run and connection list for the App Store release --- CHANGELOG.md | 24 + .../TableProModels/DatabaseConnection.swift | 15 +- .../SyncRecordCache.swift | 6 - .../DatabaseConnectionSampleTests.swift | 42 ++ .../ThirdPartyLicenseInventory.swift | 4 +- .../ThirdParty/ThirdPartyComponent.swift | 30 ++ .../Resources/ThirdPartyLicenses/licenses.yml | 48 +- .../ThirdPartyLicenses/texts/chinook.txt | 11 + .../Acknowledgements/Acknowledgements.json | 275 ++++++++++ TableProMobile/TableProMobile/AppState.swift | 225 ++++++-- .../Coordinators/ConnectionCoordinator.swift | 7 +- .../Coordinators/ScenePresenter.swift | 117 ++++ .../TableProMobile/Drivers/MSSQLDriver.swift | 4 - .../Helpers/AcknowledgementsInventory.swift | 72 +++ .../Helpers/ConnectionListState.swift | 46 ++ .../Helpers/GroupPersistence.swift | 10 +- .../TableProMobile/Helpers/SceneIntent.swift | 48 ++ .../Helpers/StreamingExporter.swift | 130 ----- .../Helpers/TagPersistence.swift | 10 +- TableProMobile/TableProMobile/Info.plist | 13 - .../TableProMobile/InfoPlist.xcstrings | 27 + .../TableProMobile/Localizable.xcstrings | 500 +++++++++++++++++- .../TableProMobile/Models/RowWindow.swift | 4 - .../Onboarding/ConnectionListTips.swift | 153 ++++++ .../Onboarding/FeatureHighlights.swift | 70 +++ .../Onboarding/FirstRunPlan.swift | 50 ++ .../Onboarding/FirstRunSheet.swift | 179 +++++++ .../Onboarding/OnboardingPageLayout.swift | 162 ++++++ .../Onboarding/WhatsNewSheet.swift | 53 ++ .../Platform/AppLockState.swift | 21 +- .../Platform/AppPreferences.swift | 7 +- .../ConnectionLibraryPreferences.swift | 6 - .../Platform/IOSAnalyticsProvider.swift | 2 +- .../Platform/IOSDriverFactory.swift | 2 + .../Platform/OnboardingPreferences.swift | 60 +++ .../Platform/SampleDatabaseInstaller.swift | 97 ++++ .../Platform/SceneLifecycle.swift | 92 ++++ .../TableProMobile/PrivacyInfo.xcprivacy | 65 +++ .../Security/CertificateMaterializer.swift | 5 - .../Services/IOSConnectionImportService.swift | 6 +- .../Sync/IOSSyncCoordinator.swift | 132 ++++- .../TableProMobile/TableProMobileApp.swift | 92 ++-- .../ViewModels/RowDetailViewModel.swift | 5 - .../Views/AcknowledgementsView.swift | 121 +++++ .../Views/Components/DatabaseIconView.swift | 21 +- .../Views/Components/ErrorView.swift | 14 - .../TableProMobile/Views/ConnectedView.swift | 24 +- .../Views/ConnectionListRow.swift | 32 +- .../Views/ConnectionListStatusViews.swift | 131 +++++ .../Views/ConnectionListView.swift | 480 ++++++++++------- .../Views/DataBrowserView.swift | 2 +- .../Views/GroupManagementView.swift | 161 ------ .../TableProMobile/Views/LockScreenView.swift | 43 +- .../TableProMobile/Views/OnboardingView.swift | 196 ------- .../TableProMobile/Views/SceneRootView.swift | 65 ++- .../TableProMobile/Views/SettingsView.swift | 198 ++++--- .../AcknowledgementsInventoryTests.swift | 63 +++ .../Onboarding/AppStateLibraryTests.swift | 138 +++++ .../Onboarding/ConnectionListStateTests.swift | 60 +++ .../Onboarding/FirstRunPlanTests.swift | 91 ++++ .../OnboardingPreferencesTests.swift | 61 +++ .../SampleDatabaseInstallerTests.swift | 71 +++ .../Onboarding/SceneIntentTests.swift | 61 +++ .../Onboarding/ScenePresenterTests.swift | 61 +++ .../Sync/IOSSyncCoordinatorTests.swift | 108 +++- .../AppIcon.appiconset/Contents.json | 35 -- .../TableProWidget.entitlements | 10 - TableProMobile/project.yml | 8 + .../ThirdPartyLicenseInventoryTests.swift | 125 ++++- docs/features/icloud-sync.mdx | 2 +- docs/images/ios-connection-list-dark.png | Bin 22001 -> 223416 bytes docs/images/ios-connection-list.png | Bin 21931 -> 215698 bytes docs/images/ios-first-run-dark.png | Bin 0 -> 234773 bytes docs/images/ios-first-run.png | Bin 0 -> 208259 bytes docs/ios/index.mdx | 44 +- docs/security/privacy.mdx | 2 + scripts/generate-ios-acknowledgements.py | 65 +++ 77 files changed, 4319 insertions(+), 1101 deletions(-) create mode 100644 Packages/TableProCore/Tests/TableProModelsTests/DatabaseConnectionSampleTests.swift create mode 100644 TablePro/Resources/ThirdPartyLicenses/texts/chinook.txt create mode 100644 TableProMobile/TableProMobile/Acknowledgements/Acknowledgements.json create mode 100644 TableProMobile/TableProMobile/Coordinators/ScenePresenter.swift create mode 100644 TableProMobile/TableProMobile/Helpers/AcknowledgementsInventory.swift create mode 100644 TableProMobile/TableProMobile/Helpers/ConnectionListState.swift create mode 100644 TableProMobile/TableProMobile/Helpers/SceneIntent.swift delete mode 100644 TableProMobile/TableProMobile/Helpers/StreamingExporter.swift create mode 100644 TableProMobile/TableProMobile/Onboarding/ConnectionListTips.swift create mode 100644 TableProMobile/TableProMobile/Onboarding/FeatureHighlights.swift create mode 100644 TableProMobile/TableProMobile/Onboarding/FirstRunPlan.swift create mode 100644 TableProMobile/TableProMobile/Onboarding/FirstRunSheet.swift create mode 100644 TableProMobile/TableProMobile/Onboarding/OnboardingPageLayout.swift create mode 100644 TableProMobile/TableProMobile/Onboarding/WhatsNewSheet.swift create mode 100644 TableProMobile/TableProMobile/Platform/OnboardingPreferences.swift create mode 100644 TableProMobile/TableProMobile/Platform/SampleDatabaseInstaller.swift create mode 100644 TableProMobile/TableProMobile/Platform/SceneLifecycle.swift create mode 100644 TableProMobile/TableProMobile/PrivacyInfo.xcprivacy create mode 100644 TableProMobile/TableProMobile/Views/AcknowledgementsView.swift create mode 100644 TableProMobile/TableProMobile/Views/ConnectionListStatusViews.swift delete mode 100644 TableProMobile/TableProMobile/Views/GroupManagementView.swift delete mode 100644 TableProMobile/TableProMobile/Views/OnboardingView.swift create mode 100644 TableProMobile/TableProMobileTests/Helpers/AcknowledgementsInventoryTests.swift create mode 100644 TableProMobile/TableProMobileTests/Onboarding/AppStateLibraryTests.swift create mode 100644 TableProMobile/TableProMobileTests/Onboarding/ConnectionListStateTests.swift create mode 100644 TableProMobile/TableProMobileTests/Onboarding/FirstRunPlanTests.swift create mode 100644 TableProMobile/TableProMobileTests/Onboarding/OnboardingPreferencesTests.swift create mode 100644 TableProMobile/TableProMobileTests/Onboarding/SampleDatabaseInstallerTests.swift create mode 100644 TableProMobile/TableProMobileTests/Onboarding/SceneIntentTests.swift create mode 100644 TableProMobile/TableProMobileTests/Onboarding/ScenePresenterTests.swift delete mode 100644 TableProMobile/TableProWidget/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 TableProMobile/TableProWidget/TableProWidget.entitlements create mode 100644 docs/images/ios-first-run-dark.png create mode 100644 docs/images/ios-first-run.png create mode 100755 scripts/generate-ios-acknowledgements.py diff --git a/CHANGELOG.md b/CHANGELOG.md index e13c230467..924a92bc73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Open in Agent Mode** on a connection in the welcome window. - **Outside MCP Servers** in Settings > Integrations, letting a session call tools on an MCP server you run. - Per-connection allowlist for an outside MCP server, with its token in the Keychain and neither synced. +- Welcome sheet on iPhone and iPad, asking once about iCloud sync and usage data. +- Sample database on iPhone and iPad, opened from the empty connection list or the **More** menu. +- What's New on iPhone and iPad after an update, and under **Settings > About**. +- Tips in the iOS connection list for swiping to favorite, touch and hold, and tag search. +- Acknowledgements and a privacy policy link under **Settings > About** on iPhone and iPad. +- Privacy manifest for the iOS app. ### Changed @@ -22,6 +28,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Every plugin bundle compiled under the same concurrency settings as the app that loads it. - Release C optimization and link-time optimization scoped to the app, not to its Swift package dependencies. - Assistant conversations belong to one connection, and outlive the window that opened them. +- iCloud sync and usage data on iPhone and iPad stay off until you turn them on. +- Group rows in the iOS connection list take swipe actions and show even when no connection is saved. + +### Removed + +- **Refresh from iCloud**, **Sync Now** and the toolbar sync button on iPhone and iPad. +- **Manage Groups**, the **Clear** button on **Recent**, and the **More** menu's tag filter on iPhone and iPad. ### Fixed @@ -82,12 +95,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Rows saved, added or deleted on iPhone and iPad refused by a MySQL, MariaDB, PostgreSQL or Redshift server that starts sessions read-only. - Copying objects into a connection that already has a transaction open committing it. - Replace-copy into a remote libSQL target failing at `BEGIN`. +- iOS edits uploaded to iCloud after iCloud Sync was turned off. +- iOS connections overwritten by the next edit after the saved library failed to load. +- A `.tablepro` file or link closing a half-filled form on iPhone and iPad. +- Links to a table opening only its connection on iPhone and iPad. +- Face ID symbol on the unlock button of Touch ID and Optic ID devices. +- Empty icon tiles for Snowflake, Beancount, SurrealDB and Kafka connections on iPhone and iPad. +- iOS edit mode left on after deleting every connection. +- Two rename fields when renaming a favorite on iPhone and iPad. +- Connection names cut off at large text sizes on iPhone and iPad. ### Security - Code inside a plugin bundle, and its resource envelope, were not verified before the bundle was loaded. - The system log carried query text, schema and table names, file paths and driver error messages, which can hold row values. - A chat tool registered at runtime could take the name of a tool TablePro ships. +- An open connection, a sheet and the app switcher preview left usable or visible behind the iOS app lock. +- **Require Face ID** turned off on iPhone and iPad without authenticating. ## [0.75.0] - 2026-09-18 diff --git a/Packages/TableProCore/Sources/TableProModels/DatabaseConnection.swift b/Packages/TableProCore/Sources/TableProModels/DatabaseConnection.swift index 24c32d3cb1..195ba1e151 100644 --- a/Packages/TableProCore/Sources/TableProModels/DatabaseConnection.swift +++ b/Packages/TableProCore/Sources/TableProModels/DatabaseConnection.swift @@ -29,6 +29,11 @@ public struct DatabaseConnection: Identifiable, Hashable, Sendable { public var tagIds: [UUID] public var sortOrder: Int public var isFavorite: Bool + public var isSample: Bool + + public var participatesInSync: Bool { + !isSample + } public var tagId: UUID? { get { tagIds.first } @@ -55,7 +60,8 @@ public struct DatabaseConnection: Identifiable, Hashable, Sendable { groupId: UUID? = nil, tagIds: [UUID] = [], sortOrder: Int = 0, - isFavorite: Bool = false + isFavorite: Bool = false, + isSample: Bool = false ) { self.id = id self.name = name @@ -77,13 +83,14 @@ public struct DatabaseConnection: Identifiable, Hashable, Sendable { self.tagIds = tagIds self.sortOrder = sortOrder self.isFavorite = isFavorite + self.isSample = isSample } private enum CodingKeys: String, CodingKey { case id, name, type, host, port, username, database, color, colorTag case isReadOnly, safeModeLevel, queryTimeoutSeconds, additionalFields case sshEnabled, sshConfiguration, sslEnabled, sslConfiguration - case groupId, tagId, tagIds, sortOrder, isFavorite + case groupId, tagId, tagIds, sortOrder, isFavorite, isSample } } @@ -125,6 +132,7 @@ extension DatabaseConnection: Codable { } sortOrder = try container.decodeIfPresent(Int.self, forKey: .sortOrder) ?? 0 isFavorite = try container.decodeIfPresent(Bool.self, forKey: .isFavorite) ?? false + isSample = try container.decodeIfPresent(Bool.self, forKey: .isSample) ?? false } public func encode(to encoder: Encoder) throws { @@ -151,5 +159,8 @@ extension DatabaseConnection: Codable { } try container.encode(sortOrder, forKey: .sortOrder) try container.encode(isFavorite, forKey: .isFavorite) + if isSample { + try container.encode(isSample, forKey: .isSample) + } } } diff --git a/Packages/TableProCore/Sources/TableProSyncTransport/SyncRecordCache.swift b/Packages/TableProCore/Sources/TableProSyncTransport/SyncRecordCache.swift index 1fe3e14d99..a2d0364661 100644 --- a/Packages/TableProCore/Sources/TableProSyncTransport/SyncRecordCache.swift +++ b/Packages/TableProCore/Sources/TableProSyncTransport/SyncRecordCache.swift @@ -74,12 +74,6 @@ public final class SyncRecordCache { } } - public func removeAll() { - migration.withLock { $0 = true } - legacyDefaults?.removeObject(forKey: legacyStorageKey) - try? FileManager.default.removeItem(at: directory) - } - // MARK: - Migration /// Moves a cache written by an older build out of `UserDefaults` on first use, then clears the diff --git a/Packages/TableProCore/Tests/TableProModelsTests/DatabaseConnectionSampleTests.swift b/Packages/TableProCore/Tests/TableProModelsTests/DatabaseConnectionSampleTests.swift new file mode 100644 index 0000000000..2eb210fe7c --- /dev/null +++ b/Packages/TableProCore/Tests/TableProModelsTests/DatabaseConnectionSampleTests.swift @@ -0,0 +1,42 @@ +import Foundation +import Testing + +@testable import TableProModels + +@Suite("DatabaseConnection sample flag") +struct DatabaseConnectionSampleTests { + private static let storedWithoutFlag = """ + {"id":"6F9619FF-8B86-D011-B42D-00C04FC964FF","name":"Prod","type":"PostgreSQL","host":"db.local",\ + "port":5432,"username":"app","database":"prod"} + """ + + @Test("A connection stored before the flag existed decodes as not a sample") + func legacyRecordIsNotSample() throws { + let connection = try JSONDecoder().decode( + DatabaseConnection.self, + from: Data(Self.storedWithoutFlag.utf8) + ) + + #expect(connection.isSample == false) + #expect(connection.participatesInSync) + } + + @Test("A sample round-trips and stays out of sync") + func sampleRoundTrips() throws { + let sample = DatabaseConnection(name: "Sample", type: .sqlite, database: "Chinook.sqlite", isSample: true) + + let decoded = try JSONDecoder().decode(DatabaseConnection.self, from: JSONEncoder().encode(sample)) + + #expect(decoded.isSample) + #expect(decoded.participatesInSync == false) + } + + @Test("An ordinary connection writes no sample key") + func ordinaryConnectionOmitsKey() throws { + let connection = DatabaseConnection(name: "Prod", type: .mysql) + + let object = try JSONSerialization.jsonObject(with: JSONEncoder().encode(connection)) as? [String: Any] + + #expect(object?["isSample"] == nil) + } +} diff --git a/TablePro/Core/Services/Infrastructure/ThirdPartyLicenseInventory.swift b/TablePro/Core/Services/Infrastructure/ThirdPartyLicenseInventory.swift index 7a988e5355..d4c7bb18b7 100644 --- a/TablePro/Core/Services/Infrastructure/ThirdPartyLicenseInventory.swift +++ b/TablePro/Core/Services/Infrastructure/ThirdPartyLicenseInventory.swift @@ -27,13 +27,13 @@ struct ThirdPartyLicenseInventory { /// Components with a confirmed licence, which is what the acknowledgements list renders. var attributed: [ThirdPartyComponent] { - components.filter { !$0.isUnverified } + components.filter { $0.ships(on: .macos) && !$0.isUnverified } } /// Components whose licence could not be confirmed from a primary source. Surfaced rather /// than dropped, so an unresolved obligation stays visible instead of looking discharged. var unresolved: [ThirdPartyComponent] { - components.filter(\.isUnverified) + components.filter { $0.ships(on: .macos) && $0.isUnverified } } init(rootURL: URL) throws { diff --git a/TablePro/Models/ThirdParty/ThirdPartyComponent.swift b/TablePro/Models/ThirdParty/ThirdPartyComponent.swift index 60112603f4..dc6d0fdcfb 100644 --- a/TablePro/Models/ThirdParty/ThirdPartyComponent.swift +++ b/TablePro/Models/ThirdParty/ThirdPartyComponent.swift @@ -38,6 +38,11 @@ struct ThirdPartyComponent: Codable, Identifiable, Hashable { } } + enum Platform: String, Codable, Hashable { + case macos + case ios + } + let id: String let name: String let version: String @@ -51,15 +56,40 @@ struct ThirdPartyComponent: Codable, Identifiable, Hashable { let source: String let patched: Bool let notes: String? + let platforms: [Platform] var versionSource: VersionSource { VersionSource(rawValue: source) } + func ships(on platform: Platform) -> Bool { + platforms.contains(platform) + } + /// A component whose licence has not been confirmed from a primary source. It is listed /// as unresolved rather than being given a guessed licence, because a wrong SPDX line is /// a licence violation stated in the app's own voice. var isUnverified: Bool { spdx == ThirdPartyComponent.unverifiedSPDX } static let unverifiedSPDX = "UNVERIFIED" + + static let defaultPlatforms: [Platform] = [.macos] +} + +extension ThirdPartyComponent { + init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + id = try container.decode(String.self, forKey: .id) + name = try container.decode(String.self, forKey: .name) + version = try container.decode(String.self, forKey: .version) + spdx = try container.decode(String.self, forKey: .spdx) + copyrights = try container.decode([String].self, forKey: .copyrights) + homepageURL = try container.decode(String.self, forKey: .homepageURL) + licenseTextURL = try container.decode(String.self, forKey: .licenseTextURL) + textFile = try container.decodeIfPresent(String.self, forKey: .textFile) + source = try container.decode(String.self, forKey: .source) + patched = try container.decode(Bool.self, forKey: .patched) + notes = try container.decodeIfPresent(String.self, forKey: .notes) + platforms = try container.decodeIfPresent([Platform].self, forKey: .platforms) ?? Self.defaultPlatforms + } } private extension String { diff --git a/TablePro/Resources/ThirdPartyLicenses/licenses.yml b/TablePro/Resources/ThirdPartyLicenses/licenses.yml index 36ce352c07..e22b3dd34d 100644 --- a/TablePro/Resources/ThirdPartyLicenses/licenses.yml +++ b/TablePro/Resources/ThirdPartyLicenses/licenses.yml @@ -6,6 +6,11 @@ # # spdx: UNVERIFIED means the project publishes no license we could read. Those entries # carry no license text and render as unresolved rather than being given a guess. +# +# platforms lists where a component ships: macos, ios or both. Absent means [macos]. +# The iOS app reads TableProMobile/TableProMobile/Acknowledgements/Acknowledgements.json, the +# projection of every ios entry. Run scripts/generate-ios-acknowledgements.py after editing an +# ios entry; ThirdPartyLicenseInventoryTests fails while that file is stale. - id: bigint name: BigInt version: 5.7.0 @@ -17,10 +22,29 @@ textFile: texts/bigint.txt source: spm:bigint patched: false + platforms: [macos, ios] notes: Tag is `v5.7.0`; Package.resolved records the bare "5.7.0". The holder's name carries Hungarian diacritics (Karoly Lorentey, with o-acute and o-double-acute) in the original file; reproduce it from texts/bigint.LICENSE.txt rather than from this YAML, which is ASCII-folded. Transitive via oracle-nio. Zero `$s6BigInt` symbols in the app dylib. +- id: chinook + name: Chinook Database + version: vendored at ac32dbc3d, 2025-10-04 + spdx: MIT + copyrights: + - Copyright (c) 2008-2024 Luis Rocha + homepageURL: https://github.com/lerocha/chinook-database + licenseTextURL: https://github.com/lerocha/chinook-database/blob/ac32dbc3d5b383633c3fd687934f9c719773f00d/LICENSE.md + textFile: texts/chinook.txt + source: manual + patched: false + platforms: [macos, ios] + notes: 'The sample database, shipped as TablePro/Resources/SampleDatabases/Chinook.sqlite in both apps. + Byte-identical (SHA-256 7651ba37...) to ChinookDatabase/DataSources/Chinook_Sqlite.sqlite at upstream + commit ac32dbc3d5b3, the last commit to touch that file. No release asset matches it: v1.4.5, the newest + tag, predates the regenerated invoice dates. GitHub''s detector reports "other" / NOASSERTION because + LICENSE.md opens with a "Chinook Database" title and a rule of dashes; the body is the verbatim MIT + grant and warranty, and it has been unchanged since 2024-01-24 (800ed2d792).' - id: codeeditsourceeditor name: CodeEditSourceEditor version: vendored at 1fa4d3c3f, 2026-03; see Packages/TableProEditor/ORIGIN.md @@ -82,13 +106,16 @@ textFile: texts/duckdb.txt source: sh:DUCKDB_VERSION patched: false + platforms: [macos, ios] notes: 'Built from the v1.5.2 git tag with CMake (build-duckdb.sh:25), linking core_functions, json, parquet, icu and autocomplete statically (scripts/duckdb-macos-extensions.cmake). The build compiles the whole tree including third_party/, which holds 30 vendored projects (brotli, catch, concurrentqueue, fast_float, fastpforlib, fmt, fsst, httplib, hyperloglog, imdb, jaro_winkler, jemalloc, libpg_query, lz4, mbedtls, miniz, parquet, pcg, pdqsort, re2, ska_sort, skiplist, snappy, snowball, tdigest, thrift, utf8proc, vergesort, yyjson, zstd), each under its own licence. Those sub-licences are NOT enumerated - here: UNVERIFIED. scripts/build-duckdb-ios.sh pins the same tag for the iOS xcframework.' + here: UNVERIFIED. scripts/build-duckdb-ios.sh pins the same tag for the iOS xcframework. scripts/duckdb-ios-extensions.cmake + also names the out-of-tree httpfs and quack extensions; the xcframework in Libs/ios carries no symbol + from either today. Both are MIT under this same Stichting DuckDB Foundation notice, byte for byte.' - id: freetds name: FreeTDS version: 1.4.22 @@ -106,6 +133,7 @@ textFile: texts/freetds.txt source: sh:FREETDS_VERSION patched: true + platforms: [macos, ios] notes: 'COPYING_LIB.txt at v1.4.22 is the GNU *Library* General Public License Version 2, June 1991 (LGPL-2.0), not 2.1. Every source file built into libsybdb.a grants "either version 2 of the License, or (at your option) any later version", so LGPL-2.0-or-later is the id. The repo also ships COPYING.txt @@ -139,6 +167,7 @@ textFile: texts/hiredis.txt source: sh:HIREDIS_VERSION patched: false + platforms: [macos, ios] notes: 'COPYING at the tag names only the first two holders plus "All rights reserved."; the remaining five lines are per-file headers on sources compiled into the two archives: ssl.c (Redis Labs, 2019), sds.c (Sanfilippo 2006-2015, Oran Agra, Redis Labs, Inc) and alloc.c (Michael Grunder). All are the @@ -166,6 +195,7 @@ textFile: texts/libssh2.txt source: sh:LIBSSH2_VERSION patched: true + platforms: [macos, ios] notes: Linked by the main app target (SSH tunnels), not by a plugin. The tarball is fetched from the GitHub release for libssh2-1.11.1 and pinned by SHA-256 (build-libssh2.sh:38). The script writes only libssh2_arm64.a, libssh2_x86_64.a and libssh2_universal.a. The flat Libs/libssh2.a that project.yml @@ -210,6 +240,7 @@ textFile: texts/mariadb-connector-c.txt source: sh:MARIADB_VERSION patched: false + platforms: [macos, ios] notes: 'NOT the MariaDB server''s GPL-2.0. The connector ships COPYING.LIB = GNU Lesser General Public License Version 2.1, February 1999, and that is the only licence file in the repo root at v3.4.4. Nuance worth recording: the per-file grant in libmariadb/mariadb_lib.c says "GNU Library General Public @@ -254,6 +285,7 @@ textFile: texts/openssl.txt source: sh:OPENSSL_VERSION patched: false + platforms: [macos, ios] notes: OpenSSL 3.x is Apache-2.0 only; the old OpenSSL/SSLeay dual licence ended at 1.1.1. LICENSE.txt at the tag is the bare Apache-2.0 text with no copyright block, so the two holder lines above are quoted from the Copyright section of README.md at the same tag (https://raw.githubusercontent.com/openssl/openssl/openssl-3.4.3/README.md, @@ -275,6 +307,7 @@ textFile: texts/oracle-nio.txt source: spm:oracle-nio patched: false + platforms: [macos, ios] notes: 'NO state.version in any of the three Package.resolved files, only a revision. All three pin the SAME revision, so there is no version disagreement here. TableProApp/oracle-nio is a fork of lovetodream/oracle-nio (GitHub reports fork: true, parent: lovetodream/oracle-nio); at the pinned revision it is 21 ahead @@ -303,6 +336,7 @@ textFile: texts/postgresql-libpq.txt source: sh:PG_VERSION patched: false + platforms: [macos, ios] notes: Source tarball comes from ftp.postgresql.org (build-libpq.sh:71), SHA-256 pinned at build-libpq.sh:40; the GitHub tag REL_17_4 is the same release and is used here only as a stable URL for the COPYRIGHT file. The COPYRIGHT text is the whole licence; SPDX calls it "PostgreSQL" (a BSD/MIT-style permissive @@ -364,6 +398,7 @@ textFile: texts/swift-asn1.txt source: spm:swift-asn1 patched: false + platforms: [macos, ios] notes: 'VERSION SET, deliberately divergent: the app pins 1.5.1, TableProOracle and TableProMobile pin 1.7.1. LICENSE.txt is byte-identical (11359 bytes) at both tags and is PLAIN Apache-2.0 with no Runtime Library Exception. NOTICE.txt present at both tags and unchanged; its attribution must be reproduced @@ -380,6 +415,7 @@ textFile: texts/swift-async-algorithms.txt source: spm:swift-async-algorithms patched: false + platforms: [macos, ios] notes: '11751 bytes: Apache 2.0 plus the Runtime Library Exception section (verified by reading the file). No NOTICE.txt. Transitive via swift-service-lifecycle.' - id: swift-atomics @@ -393,6 +429,7 @@ textFile: texts/swift-atomics.txt source: spm:swift-atomics patched: false + platforms: [macos, ios] notes: '11751 bytes: Apache 2.0 plus the Runtime Library Exception section (verified by reading the file). No NOTICE.txt. Copyright from a source header.' - id: swift-collections @@ -406,6 +443,7 @@ textFile: texts/swift-collections.txt source: spm:swift-collections patched: false + platforms: [macos, ios] notes: 'LICENSE.txt is 11751 bytes: the Apache 2.0 body PLUS an appended "## Runtime Library Exception to the Apache 2.0 License: ##" section (verified by reading the file, not by trusting GitHub, whose detector reports plain "Apache-2.0" for both variants). The exception waives the attribution otherwise @@ -425,6 +463,7 @@ textFile: texts/swift-crypto.txt source: spm:swift-crypto patched: false + platforms: [macos, ios] notes: 'VERSION SET, deliberately divergent: the app pins 4.2.0, TableProOracle and TableProMobile pin 4.5.1. LICENSE.txt is byte-identical (11358 bytes) at both tags and is PLAIN Apache-2.0 with no Runtime Library Exception. NOTICE.txt present at both tags; its attribution must be reproduced under section @@ -445,6 +484,7 @@ textFile: texts/swift-distributed-tracing.txt source: spm:swift-distributed-tracing patched: false + platforms: [macos, ios] notes: PLAIN Apache-2.0 (11358 bytes, no Runtime Library Exception). NO NOTICE.txt at this tag (checked the root tree). Copyright from a source header. Transitive via oracle-nio. - id: swift-log @@ -458,6 +498,7 @@ textFile: texts/swift-log.txt source: spm:swift-log patched: false + platforms: [macos, ios] notes: 'PLAIN Apache-2.0 (11358 bytes, no Runtime Library Exception). NOTICE.txt present; its attribution must be reproduced under section 4(d). Not in TablePro.app: zero `$s7Logging` mangled-prefix symbols. (A naive `strings` grep for the bare word "Logging" hits 28 times in the app dylib, but those are @@ -473,6 +514,7 @@ textFile: texts/swift-nio-transport-services.txt source: spm:swift-nio-transport-services patched: false + platforms: [macos, ios] notes: PLAIN Apache-2.0 (11358 bytes, no Runtime Library Exception). NO NOTICE.txt at this tag (checked the root tree), unlike its swift-nio siblings, so nothing to carry under 4(d). Copyright line taken from a source header, since the LICENSE names no holder. @@ -487,6 +529,7 @@ textFile: texts/swift-service-context.txt source: spm:swift-service-context patched: false + platforms: [macos, ios] notes: 'PLAIN Apache-2.0 (11358 bytes, no Runtime Library Exception). NOTICE.txt present and must be carried under section 4(d). Reproduce it verbatim and do NOT "correct" it: the upstream NOTICE.txt has a copy-paste bug, pointing at https://github.com/apple/swift-asn1 as the project web site instead @@ -502,6 +545,7 @@ textFile: texts/swift-service-lifecycle.txt source: spm:swift-service-lifecycle patched: false + platforms: [macos, ios] notes: PLAIN Apache-2.0 (11358 bytes, no Runtime Library Exception). NOTICE.txt present and must be carried under section 4(d). Owned by the swift-server org, not apple. Transitive via oracle-nio. - id: swift-syntax @@ -543,6 +587,7 @@ textFile: texts/swift-nio.txt source: spm:swift-nio patched: false + platforms: [macos, ios] notes: 'PLAIN Apache-2.0 (11358 bytes, no Runtime Library Exception). NOTICE.txt is the LONGEST in the tree and section 4(d) requires all of it be carried: Netty (Apache-2.0), NodeJS llhttp (MIT), "cpp_magic.h" from uSHET (MIT), "sha1.c"/"sha1.h" from FreeBSD (BSD-3, "Copyright (C) 1995, 1996, 1997, and 1998 @@ -560,6 +605,7 @@ textFile: texts/swift-nio-ssl.txt source: spm:swift-nio-ssl patched: false + platforms: [macos, ios] notes: PLAIN Apache-2.0 (11358 bytes, no Runtime Library Exception). NOTICE.txt must be reproduced under section 4(d) and carries onward attributions for Netty (Apache-2.0), Tony Stone's process_test_files.rb (Apache-2.0), grpc-swift (Apache-2.0) and BoringSSL (combination ISC and OpenSSL licence). The vendored diff --git a/TablePro/Resources/ThirdPartyLicenses/texts/chinook.txt b/TablePro/Resources/ThirdPartyLicenses/texts/chinook.txt new file mode 100644 index 0000000000..7487a9edc2 --- /dev/null +++ b/TablePro/Resources/ThirdPartyLicenses/texts/chinook.txt @@ -0,0 +1,11 @@ +Chinook Database +-------------------------------------- +Copyright (c) 2008-2024 Luis Rocha + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and +to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/TableProMobile/TableProMobile/Acknowledgements/Acknowledgements.json b/TableProMobile/TableProMobile/Acknowledgements/Acknowledgements.json new file mode 100644 index 0000000000..6decc297f6 --- /dev/null +++ b/TableProMobile/TableProMobile/Acknowledgements/Acknowledgements.json @@ -0,0 +1,275 @@ +[ + { + "id": "bigint", + "name": "BigInt", + "version": "5.7.0", + "spdx": "MIT", + "copyrights": [ + "Copyright (c) 2016-2017 Karoly Lorentey" + ], + "homepageURL": "https://github.com/attaswift/BigInt", + "textFile": "texts/bigint.txt" + }, + { + "id": "chinook", + "name": "Chinook Database", + "version": "vendored at ac32dbc3d, 2025-10-04", + "spdx": "MIT", + "copyrights": [ + "Copyright (c) 2008-2024 Luis Rocha" + ], + "homepageURL": "https://github.com/lerocha/chinook-database", + "textFile": "texts/chinook.txt" + }, + { + "id": "duckdb", + "name": "DuckDB", + "version": "v1.5.2", + "spdx": "MIT", + "copyrights": [ + "Copyright 2018-2025 Stichting DuckDB Foundation" + ], + "homepageURL": "https://duckdb.org", + "textFile": "texts/duckdb.txt" + }, + { + "id": "freetds", + "name": "FreeTDS", + "version": "1.4.22", + "spdx": "LGPL-2.0-or-later", + "copyrights": [ + "FreeTDS - Library of routines accessing Sybase and Microsoft databases", + "Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Brian Bruns", + "Copyright (C) 2006-2015 Frediano Ziglio", + "Copyright (C) 2005-2015 Ziglio Frediano", + "Copyright (C) 2012 Frediano Ziglio", + "Copyright (c) 1987, 1993, 1994", + "The Regents of the University of California. All rights reserved." + ], + "homepageURL": "https://www.freetds.org", + "textFile": "texts/freetds.txt" + }, + { + "id": "hiredis", + "name": "hiredis", + "version": "1.2.0", + "spdx": "BSD-3-Clause", + "copyrights": [ + "Copyright (c) 2009-2011, Salvatore Sanfilippo ", + "Copyright (c) 2010-2011, Pieter Noordhuis ", + "All rights reserved.", + "Copyright (c) 2019, Redis Labs", + "Copyright (c) 2006-2015, Salvatore Sanfilippo ", + "Copyright (c) 2015, Oran Agra", + "Copyright (c) 2015, Redis Labs, Inc", + "Copyright (c) 2020, Michael Grunder " + ], + "homepageURL": "https://github.com/redis/hiredis", + "textFile": "texts/hiredis.txt" + }, + { + "id": "libssh2", + "name": "libssh2", + "version": "1.11.1", + "spdx": "BSD-3-Clause", + "copyrights": [ + "Copyright (C) 2004-2007 Sara Golemon ", + "Copyright (C) 2005,2006 Mikhail Gusarov ", + "Copyright (C) 2006-2007 The Written Word, Inc.", + "Copyright (C) 2007 Eli Fant ", + "Copyright (C) 2009-2023 Daniel Stenberg", + "Copyright (C) 2008, 2009 Simon Josefsson", + "Copyright (C) 2000 Markus Friedl", + "Copyright (C) 2015 Microsoft Corp.", + "All rights reserved." + ], + "homepageURL": "https://libssh2.org", + "textFile": "texts/libssh2.txt" + }, + { + "id": "mariadb-connector-c", + "name": "MariaDB Connector/C", + "version": "3.4.4", + "spdx": "LGPL-2.1-or-later", + "copyrights": [ + "Copyright (C) 2000, 2012 MySQL AB & MySQL Finland AB & TCX DataKonsult AB,", + "Monty Program AB", + "2013, 2022 MariaDB Corporation AB", + "This product includes PHP software, freely available from " + ], + "homepageURL": "https://mariadb.com/kb/en/mariadb-connector-c/", + "textFile": "texts/mariadb-connector-c.txt" + }, + { + "id": "openssl", + "name": "OpenSSL", + "version": "3.4.3", + "spdx": "Apache-2.0", + "copyrights": [ + "Copyright (c) 1998-2025 The OpenSSL Project Authors", + "Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson", + "All rights reserved." + ], + "homepageURL": "https://www.openssl.org", + "textFile": "texts/openssl.txt" + }, + { + "id": "oracle-nio", + "name": "OracleNIO", + "version": "rev:f09d088889e252655ea1833eed821cd2be0de03a", + "spdx": "Apache-2.0", + "copyrights": [ + "Copyright (c) 2023 Timo Zacherl" + ], + "homepageURL": "https://github.com/TableProApp/oracle-nio", + "textFile": "texts/oracle-nio.txt" + }, + { + "id": "postgresql-libpq", + "name": "PostgreSQL (libpq client library)", + "version": "17.4", + "spdx": "PostgreSQL", + "copyrights": [ + "PostgreSQL Database Management System", + "(formerly known as Postgres, then as Postgres95)", + "Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group", + "Portions Copyright (c) 1994, The Regents of the University of California" + ], + "homepageURL": "https://www.postgresql.org", + "textFile": "texts/postgresql-libpq.txt" + }, + { + "id": "swift-asn1", + "name": "swift-asn1", + "version": "1.5.1, 1.7.1", + "spdx": "Apache-2.0", + "copyrights": [ + "Copyright 2022 The SwiftASN1 Project", + "Copyright (c) 2019-2020 Apple Inc. and the SwiftASN1 project authors" + ], + "homepageURL": "https://github.com/apple/swift-asn1", + "textFile": "texts/swift-asn1.txt" + }, + { + "id": "swift-async-algorithms", + "name": "swift-async-algorithms", + "version": "1.1.5", + "spdx": "Apache-2.0 WITH Swift-exception", + "copyrights": [ + "Copyright (c) 2022 Apple Inc. and the Swift project authors" + ], + "homepageURL": "https://github.com/apple/swift-async-algorithms", + "textFile": "texts/swift-async-algorithms.txt" + }, + { + "id": "swift-atomics", + "name": "swift-atomics", + "version": "1.3.1", + "spdx": "Apache-2.0 WITH Swift-exception", + "copyrights": [ + "Copyright (c) 2020 - 2025 Apple Inc. and the Swift project authors" + ], + "homepageURL": "https://github.com/apple/swift-atomics", + "textFile": "texts/swift-atomics.txt" + }, + { + "id": "swift-collections", + "name": "swift-collections", + "version": "1.6.0", + "spdx": "Apache-2.0 WITH Swift-exception", + "copyrights": [ + "Copyright (c) 2021 - 2026 Apple Inc. and the Swift project authors" + ], + "homepageURL": "https://github.com/apple/swift-collections", + "textFile": "texts/swift-collections.txt" + }, + { + "id": "swift-crypto", + "name": "swift-crypto", + "version": "4.2.0, 4.5.1", + "spdx": "Apache-2.0", + "copyrights": [ + "Copyright 2019 The SwiftCrypto Project", + "Copyright (c) 2019-2020 Apple Inc. and the SwiftCrypto project authors" + ], + "homepageURL": "https://github.com/apple/swift-crypto", + "textFile": "texts/swift-crypto.txt" + }, + { + "id": "swift-distributed-tracing", + "name": "swift-distributed-tracing", + "version": "1.4.1", + "spdx": "Apache-2.0", + "copyrights": [ + "Copyright (c) 2020-2023 Apple Inc. and the Swift Distributed Tracing project authors" + ], + "homepageURL": "https://github.com/apple/swift-distributed-tracing", + "textFile": "texts/swift-distributed-tracing.txt" + }, + { + "id": "swift-log", + "name": "swift-log", + "version": "1.15.0", + "spdx": "Apache-2.0", + "copyrights": [ + "Copyright 2018, 2019 The SwiftLog Project" + ], + "homepageURL": "https://github.com/apple/swift-log", + "textFile": "texts/swift-log.txt" + }, + { + "id": "swift-nio-transport-services", + "name": "swift-nio-transport-services", + "version": "1.28.0", + "spdx": "Apache-2.0", + "copyrights": [ + "Copyright (c) 2017-2021 Apple Inc. and the SwiftNIO project authors" + ], + "homepageURL": "https://github.com/apple/swift-nio-transport-services", + "textFile": "texts/swift-nio-transport-services.txt" + }, + { + "id": "swift-service-context", + "name": "swift-service-context", + "version": "1.3.0", + "spdx": "Apache-2.0", + "copyrights": [ + "Copyright 2024 The Swift Service Context Project" + ], + "homepageURL": "https://github.com/apple/swift-service-context", + "textFile": "texts/swift-service-context.txt" + }, + { + "id": "swift-service-lifecycle", + "name": "swift-service-lifecycle", + "version": "2.11.0", + "spdx": "Apache-2.0", + "copyrights": [ + "Copyright 2019-2023 The ServiceLifecycle Project" + ], + "homepageURL": "https://github.com/swift-server/swift-service-lifecycle", + "textFile": "texts/swift-service-lifecycle.txt" + }, + { + "id": "swift-nio", + "name": "SwiftNIO", + "version": "2.101.3", + "spdx": "Apache-2.0", + "copyrights": [ + "Copyright 2017, 2018 The SwiftNIO Project" + ], + "homepageURL": "https://github.com/apple/swift-nio", + "textFile": "texts/swift-nio.txt" + }, + { + "id": "swift-nio-ssl", + "name": "SwiftNIOSSL", + "version": "2.37.2", + "spdx": "Apache-2.0", + "copyrights": [ + "Copyright 2017, 2018 The SwiftNIO Project" + ], + "homepageURL": "https://github.com/apple/swift-nio-ssl", + "textFile": "texts/swift-nio-ssl.txt" + } +] diff --git a/TableProMobile/TableProMobile/AppState.swift b/TableProMobile/TableProMobile/AppState.swift index d5a1bd4179..9b146d0c29 100644 --- a/TableProMobile/TableProMobile/AppState.swift +++ b/TableProMobile/TableProMobile/AppState.swift @@ -29,22 +29,36 @@ final class AppState { return .loading } - var pendingConnectionId: UUID? - var pendingTableName: String? - var pendingImportURL: URL? + private(set) var sampleResetRevision = 0 + let onboarding: OnboardingPreferences let connectionManager: ConnectionManager let backgroundRelease: BackgroundReleaseCoordinator let queryActivities = QueryActivityController() - let syncCoordinator = IOSSyncCoordinator() - let libraryPreferences = ConnectionLibraryPreferences() + let syncCoordinator: IOSSyncCoordinator + + @ObservationIgnored private var automaticPresentationOwner: UUID? + let libraryPreferences: ConnectionLibraryPreferences let sshProvider: IOSSSHProvider let secureStore: KeychainSecureStore - private let storage = ConnectionPersistence() - private let groupStorage = GroupPersistence() - private let tagStorage = TagPersistence() - - init() { + private let sampleInstaller: SampleDatabaseInstaller + private let storage: ConnectionPersistence + private let groupStorage: GroupPersistence + private let tagStorage: TagPersistence + + init( + libraryDirectory: URL = LibraryStorage.defaultDirectory, + defaults: UserDefaults = .standard, + syncCoordinator injectedSyncCoordinator: IOSSyncCoordinator? = nil, + sampleInstaller: SampleDatabaseInstaller = .live + ) { + self.sampleInstaller = sampleInstaller + onboarding = OnboardingPreferences(defaults: defaults) + libraryPreferences = ConnectionLibraryPreferences(defaults: defaults) + syncCoordinator = injectedSyncCoordinator ?? IOSSyncCoordinator() + storage = ConnectionPersistence(directory: libraryDirectory) + groupStorage = GroupPersistence(directory: libraryDirectory) + tagStorage = TagPersistence(directory: libraryDirectory) let driverFactory = IOSDriverFactory() let secureStore = KeychainSecureStore() self.secureStore = secureStore @@ -61,10 +75,11 @@ final class AppState { guard !TestRuntime.isActive else { return } - secureStore.cleanOrphanedCredentials(validConnectionIds: Set(connections.map(\.id))) - Task { - updateWidgetData() - updateSpotlightIndex() + if loadStatus == .ready { + secureStore.cleanOrphanedCredentials(validConnectionIds: Set(connections.map(\.id))) + Task { + publishLibrary() + } } syncCoordinator.onConnectionsChanged = { [weak self] merged in @@ -95,10 +110,34 @@ final class AppState { // MARK: - Load / Retry + var isLibraryWritable: Bool { + loadStatus == .ready + } + func retryLoadIfFailed() { guard loadStatus == .failed else { return } Self.logger.info("Retrying persistence load after previous failure") loadPersistedData() + guard loadStatus == .ready else { return } + publishLibrary() + } + + private func refuseWriteIfNotReady() -> Bool { + guard isLibraryWritable else { + Self.logger.error("Refusing a library write while the stored library is not loaded") + return true + } + return false + } + + private func publishLibrary() { + guard loadStatus == .ready else { return } + updateWidgetData() + updateSpotlightIndex() + } + + private func syncsConnection(_ id: UUID) -> Bool { + connections.first { $0.id == id }?.participatesInSync ?? true } private func loadPersistedData() { @@ -170,21 +209,19 @@ final class AppState { // MARK: - Connections - func addConnection(_ connection: DatabaseConnection) { + @discardableResult + func addConnection(_ connection: DatabaseConnection) -> Bool { apply(ConnectionLibraryEditing.adding(connection, to: connections, validGroupIds: validGroupIds)) } - func updateConnection(_ connection: DatabaseConnection) { + @discardableResult + func updateConnection(_ connection: DatabaseConnection) -> Bool { guard let change = ConnectionLibraryEditing.updating( connection, in: connections, validGroupIds: validGroupIds - ) else { return } - apply(change) - } - - var hasCompletedOnboarding: Bool = UserDefaults.standard.bool(forKey: "com.TablePro.hasCompletedOnboarding") { - didSet { UserDefaults.standard.set(hasCompletedOnboarding, forKey: "com.TablePro.hasCompletedOnboarding") } + ) else { return false } + return apply(change) } func reorderConnections(_ orderedIds: [UUID]) { @@ -207,7 +244,7 @@ final class AppState { func setFavorite(_ ids: Set, isFavorite: Bool) { let previousOrder = libraryPreferences.favoritesOrder - apply(ConnectionLibraryEditing.settingFavorite(ids, to: isFavorite, in: connections)) + guard apply(ConnectionLibraryEditing.settingFavorite(ids, to: isFavorite, in: connections)) else { return } guard isFavorite else { libraryPreferences.setFavoritesOrder(LibraryOrdering.favoritesOrder(previousOrder, removing: ids)) return @@ -221,8 +258,8 @@ final class AppState { libraryPreferences.setFavoritesOrder(orderedIds) } - @discardableResult - func duplicateConnection(_ connection: DatabaseConnection) -> DatabaseConnection { + func duplicateConnection(_ connection: DatabaseConnection) { + guard !refuseWriteIfNotReady() else { return } let result = ConnectionLibraryEditing.duplicating( connection, named: String(format: String(localized: "%@ Copy"), connection.name), @@ -231,14 +268,10 @@ final class AppState { ) ConnectionSecrets(secureStore: secureStore).copy(from: connection.id, to: result.copy.id) apply(result.change) - return result.copy - } - - func removeConnection(_ connection: DatabaseConnection) { - removeConnections([connection.id]) } func removeConnections(_ ids: Set) { + guard !refuseWriteIfNotReady() else { return } let removed = connections.filter { ids.contains($0.id) } guard !removed.isEmpty else { return } let secrets = ConnectionSecrets(secureStore: secureStore) @@ -247,23 +280,25 @@ final class AppState { clearPerConnectionPreferences(for: connection.id) } persist(connections: connections.filter { !ids.contains($0.id) }) - updateWidgetData() - updateSpotlightIndex() - for connection in removed { + publishLibrary() + for connection in removed where connection.participatesInSync { syncCoordinator.markDeleted(connection.id) } syncCoordinator.scheduleSyncAfterChange() } - private func apply(_ change: ConnectionLibraryChange) { - guard !change.changedConnectionIds.isEmpty else { return } + @discardableResult + private func apply(_ change: ConnectionLibraryChange) -> Bool { + guard !refuseWriteIfNotReady() else { return false } + guard !change.changedConnectionIds.isEmpty else { return false } persist(connections: change.connections) - updateWidgetData() - updateSpotlightIndex() - for id in change.changedConnectionIds { + publishLibrary() + let syncedIds = Set(change.connections.filter(\.participatesInSync).map(\.id)) + for id in change.changedConnectionIds where syncedIds.contains(id) { syncCoordinator.markDirty(id) } syncCoordinator.scheduleSyncAfterChange() + return true } private func clearPerConnectionPreferences(for id: UUID) { @@ -278,6 +313,7 @@ final class AppState { @discardableResult func addGroup(_ group: ConnectionGroup) -> Bool { + guard !refuseWriteIfNotReady() else { return false } guard let updated = ConnectionLibraryEditing.addingGroup(group, to: groups) else { return false } persist(groups: updated) syncCoordinator.markDirtyGroup(group.id) @@ -287,6 +323,7 @@ final class AppState { @discardableResult func updateGroup(_ group: ConnectionGroup) -> Bool { + guard !refuseWriteIfNotReady() else { return false } guard let updated = ConnectionLibraryEditing.updatingGroup(group, in: groups) else { return false } persist(groups: updated) syncCoordinator.markDirtyGroup(group.id) @@ -295,6 +332,7 @@ final class AppState { } func reorderGroups(_ orderedIds: [UUID]) { + guard !refuseWriteIfNotReady() else { return } let result = ConnectionLibraryEditing.reorderingGroups(orderedIds, in: groups) guard !result.changed.isEmpty else { return } persist(groups: result.groups) @@ -305,13 +343,14 @@ final class AppState { } func deleteGroup(_ groupId: UUID) { + guard !refuseWriteIfNotReady() else { return } let change = ConnectionLibraryEditing.deletingGroup(groupId, groups: groups, connections: connections) guard !change.removedGroupIds.isEmpty else { return } persist(groups: change.groups) persist(connections: change.connections) - updateWidgetData() + publishLibrary() - for id in change.changedConnectionIds { + for id in change.changedConnectionIds where syncsConnection(id) { syncCoordinator.markDirty(id) } for id in change.removedGroupIds { @@ -323,6 +362,7 @@ final class AppState { // MARK: - Tags func addTag(_ tag: ConnectionTag) { + guard !refuseWriteIfNotReady() else { return } var updated = tags updated.append(tag) persist(tags: updated) @@ -331,6 +371,7 @@ final class AppState { } func updateTag(_ tag: ConnectionTag) { + guard !refuseWriteIfNotReady() else { return } var updated = tags guard let index = updated.firstIndex(where: { $0.id == tag.id }) else { return } updated[index] = tag @@ -340,6 +381,7 @@ final class AppState { } func deleteTag(_ tagId: UUID) { + guard !refuseWriteIfNotReady() else { return } guard let tag = tags.first(where: { $0.id == tagId }), !tag.isPreset else { return } var updatedTags = tags @@ -349,15 +391,96 @@ final class AppState { var updatedConnections = connections for index in updatedConnections.indices where updatedConnections[index].tagIds.contains(tagId) { updatedConnections[index].tagIds.removeAll { $0 == tagId } - syncCoordinator.markDirty(updatedConnections[index].id) + if updatedConnections[index].participatesInSync { + syncCoordinator.markDirty(updatedConnections[index].id) + } } persist(connections: updatedConnections) - updateWidgetData() + publishLibrary() syncCoordinator.markDeletedTag(tagId) syncCoordinator.scheduleSyncAfterChange() } + // MARK: - First Run + + var currentAppVersion: String { + Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "" + } + + func claimLaunchPresentation(for sceneId: UUID) -> LaunchPresentation { + guard !TestRuntime.isActive else { return .none } + guard automaticPresentationOwner == nil || automaticPresentationOwner == sceneId else { return .none } + let version = currentAppVersion + let presentation = FirstRunPlan( + hasSeenWelcome: onboarding.hasSeenWelcome, + syncChoice: onboarding.syncChoice, + usageDataChoice: onboarding.usageDataChoice, + lastSeenVersion: onboarding.lastSeenVersion, + currentVersion: version, + hasHighlightsForCurrentVersion: FeatureHighlights.release(version) != nil + ).presentation + onboarding.recordLaunch(version: version) + guard presentation != .none else { return .none } + automaticPresentationOwner = sceneId + return presentation + } + + func releaseLaunchPresentation(for sceneId: UUID) { + guard automaticPresentationOwner == sceneId else { return } + automaticPresentationOwner = nil + } + + func finishFirstRun(pages: [FirstRunPage]) { + if pages.contains(.welcome) { + onboarding.markWelcomeSeen() + } + if pages.contains(.iCloud), onboarding.syncChoice == nil { + setCloudSyncEnabled(false) + } + if pages.contains(.usageData), onboarding.usageDataChoice == nil { + setUsageDataEnabled(false) + } + } + + func setCloudSyncEnabled(_ enabled: Bool) { + onboarding.setSyncChoice(enabled) + syncCoordinator.setEnabled(enabled) + } + + func setUsageDataEnabled(_ enabled: Bool) { + onboarding.setUsageDataChoice(enabled) + } + + // MARK: - Sample Database + + func openSampleDatabase() throws -> UUID { + try sampleInstaller.installIfNeeded() + if let existing = connections.first(where: \.isSample) { + return existing.id + } + let sample = DatabaseConnection( + name: SampleDatabaseInstaller.connectionName, + type: .sqlite, + host: "", + port: 0, + database: SampleDatabaseInstaller.fileName, + color: .green, + isSample: true + ) + guard addConnection(sample) else { throw SampleDatabaseError.libraryUnavailable } + return sample.id + } + + func resetSampleDatabase() async throws { + let sampleIds = connections.filter(\.isSample).map(\.id) + for id in sampleIds { + await connectionManager.disconnect(id) + } + try sampleInstaller.reset() + sampleResetRevision += 1 + } + // MARK: - Spotlight private func updateSpotlightIndex() { @@ -411,14 +534,20 @@ final class AppState { // MARK: - Persistence +nonisolated enum LibraryStorage { + static var defaultDirectory: URL { + let base = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first + ?? URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true) + return base.appendingPathComponent("TableProMobile", isDirectory: true) + } +} + private struct ConnectionPersistence { + let directory: URL + private var fileURL: URL? { - guard let dir = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first else { - return nil - } - let appDir = dir.appendingPathComponent("TableProMobile", isDirectory: true) - try? FileManager.default.createDirectory(at: appDir, withIntermediateDirectories: true) - return appDir.appendingPathComponent("connections.json") + try? FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) + return directory.appendingPathComponent("connections.json") } func save(_ connections: [DatabaseConnection]) throws { diff --git a/TableProMobile/TableProMobile/Coordinators/ConnectionCoordinator.swift b/TableProMobile/TableProMobile/Coordinators/ConnectionCoordinator.swift index ff8cf6e817..c65754040d 100644 --- a/TableProMobile/TableProMobile/Coordinators/ConnectionCoordinator.swift +++ b/TableProMobile/TableProMobile/Coordinators/ConnectionCoordinator.swift @@ -28,6 +28,7 @@ final class ConnectionCoordinator { } } var pendingQuery: String? + var pendingTableName: String? var tablesPath = NavigationPath() var showingEditSheet = false @@ -85,8 +86,6 @@ final class ConnectionCoordinator { private var attemptToken = UUID() private var connectTask: Task? - var isConnecting: Bool { connectTask != nil } - /// Returning early without touching `phase` is what left the connecting screen up for good. func connect() async { if let inFlight = connectTask { @@ -338,9 +337,9 @@ final class ConnectionCoordinator { } func navigateToPendingTable() { - guard let tableName = appState.pendingTableName, + guard let tableName = pendingTableName, let table = tables.first(where: { $0.name == tableName }) else { return } - appState.pendingTableName = nil + pendingTableName = nil selectedTab = .tables Task { @MainActor in tablesPath.append(table) diff --git a/TableProMobile/TableProMobile/Coordinators/ScenePresenter.swift b/TableProMobile/TableProMobile/Coordinators/ScenePresenter.swift new file mode 100644 index 0000000000..17ac0a1c21 --- /dev/null +++ b/TableProMobile/TableProMobile/Coordinators/ScenePresenter.swift @@ -0,0 +1,117 @@ +import Foundation +import Observation +import TableProModels + +enum SceneSheet: Identifiable { + case firstRun([FirstRunPage]) + case whatsNew(version: String) + case addConnection + case editConnection(DatabaseConnection) + case moveConnections([UUID]) + case newGroup(parentId: UUID?) + case editGroup(ConnectionGroup) + case tags + case settings + case importFile(URL) + case export + + var id: String { + switch self { + case .firstRun: "firstRun" + case .whatsNew(let version): "whatsNew-\(version)" + case .addConnection: "addConnection" + case .editConnection(let connection): "editConnection-\(connection.id.uuidString)" + case .moveConnections(let ids): "moveConnections-\(ids.map(\.uuidString).joined(separator: ","))" + case .newGroup(let parentId): "newGroup-\(parentId?.uuidString ?? "root")" + case .editGroup(let group): "editGroup-\(group.id.uuidString)" + case .tags: "tags" + case .settings: "settings" + case .importFile(let url): "importFile-\(url.absoluteString)" + case .export: "export" + } + } + + var isLaunchPresentation: Bool { + switch self { + case .firstRun, .whatsNew: true + default: false + } + } +} + +nonisolated struct PendingTableRequest: Hashable, Sendable { + let connectionId: UUID + let tableName: String +} + +@MainActor @Observable +final class ScenePresenter { + let sceneId = UUID() + + var sheet: SceneSheet? + private(set) var pendingIntent: SceneIntent? + private(set) var pendingTable: PendingTableRequest? + private(set) var holdsConnectionRestore = false + + @ObservationIgnored private var hasBegunLaunch = false + @ObservationIgnored private var presentedLaunchSheet = false + @ObservationIgnored private var presentedFirstRunPages: [FirstRunPage] = [] + + func beginLaunch(with appState: AppState) { + guard !hasBegunLaunch else { return } + hasBegunLaunch = true + switch appState.claimLaunchPresentation(for: sceneId) { + case .none: + return + case .firstRun(let pages): + holdsConnectionRestore = true + presentedFirstRunPages = pages + present(.firstRun(pages)) + case .whatsNew(let version): + present(.whatsNew(version: version)) + } + } + + func sheetDidDismiss(appState: AppState) { + guard presentedLaunchSheet, sheet == nil else { return } + presentedLaunchSheet = false + holdsConnectionRestore = false + appState.finishFirstRun(pages: presentedFirstRunPages) + presentedFirstRunPages = [] + appState.releaseLaunchPresentation(for: sceneId) + } + + func releaseLaunchClaim(appState: AppState) { + appState.releaseLaunchPresentation(for: sceneId) + } + + func present(_ newSheet: SceneSheet) { + if newSheet.isLaunchPresentation { + presentedLaunchSheet = true + } + sheet = newSheet + } + + func receive(_ intent: SceneIntent) { + pendingIntent = intent + } + + func takeDeliverableIntent(isLocked: Bool, isLibraryWritable: Bool) -> SceneIntent? { + guard let pendingIntent, sheet == nil, !isLocked, !holdsConnectionRestore else { return nil } + if case .importConnections = pendingIntent, !isLibraryWritable { + return nil + } + self.pendingIntent = nil + return pendingIntent + } + + func requestTable(_ tableName: String?, in connectionId: UUID) { + pendingTable = tableName.map { PendingTableRequest(connectionId: connectionId, tableName: $0) } + } + + func takeTable(for connectionId: UUID) -> String? { + guard let pendingTable, pendingTable.connectionId == connectionId else { return nil } + self.pendingTable = nil + return pendingTable.tableName + } +} diff --git a/TableProMobile/TableProMobile/Drivers/MSSQLDriver.swift b/TableProMobile/TableProMobile/Drivers/MSSQLDriver.swift index 75ec22e466..bc374f296b 100644 --- a/TableProMobile/TableProMobile/Drivers/MSSQLDriver.swift +++ b/TableProMobile/TableProMobile/Drivers/MSSQLDriver.swift @@ -56,10 +56,6 @@ nonisolated final class MSSQLDriver: DatabaseDriver, @unchecked Sendable { self.currentSchema = options.schema } - private var escapedSchema: String { - (currentSchema ?? "dbo").replacingOccurrences(of: "'", with: "''") - } - // MARK: - Connection func connect() async throws { diff --git a/TableProMobile/TableProMobile/Helpers/AcknowledgementsInventory.swift b/TableProMobile/TableProMobile/Helpers/AcknowledgementsInventory.swift new file mode 100644 index 0000000000..3f0cf6d5a9 --- /dev/null +++ b/TableProMobile/TableProMobile/Helpers/AcknowledgementsInventory.swift @@ -0,0 +1,72 @@ +import Foundation +import os + +nonisolated struct AcknowledgementComponent: Decodable, Identifiable, Hashable, Sendable { + let id: String + let name: String + let version: String + let spdx: String + let copyrights: [String] + let homepageURL: String + let textFile: String? + + private static let revisionPrefix = "rev:" + private static let shortRevisionLength = 7 + + var displayVersion: String { + guard version.hasPrefix(Self.revisionPrefix) else { return version } + return String(version.dropFirst(Self.revisionPrefix.count).prefix(Self.shortRevisionLength)) + } + + var homepage: URL? { + URL(string: homepageURL) + } +} + +nonisolated enum AcknowledgementsInventoryError: Error, Equatable { + case manifestMissing + case licenseTextMissing(componentId: String) +} + +nonisolated struct AcknowledgementsInventory: Sendable { + private static let logger = Logger(subsystem: "com.TablePro", category: "Acknowledgements") + + static let manifestName = "Acknowledgements" + static let manifestExtension = "json" + + let components: [AcknowledgementComponent] + private let rootURL: URL + + init(manifestURL: URL) throws { + let data = try Data(contentsOf: manifestURL) + components = try JSONDecoder().decode([AcknowledgementComponent].self, from: data) + rootURL = manifestURL.deletingLastPathComponent() + } + + static func bundled(in bundle: Bundle = .main) throws -> AcknowledgementsInventory { + guard let manifestURL = bundle.url(forResource: manifestName, withExtension: manifestExtension) else { + logger.error("Acknowledgements manifest is missing from the app bundle") + throw AcknowledgementsInventoryError.manifestMissing + } + do { + return try AcknowledgementsInventory(manifestURL: manifestURL) + } catch { + logger.error("Could not read the acknowledgements manifest: \(error.localizedDescription, privacy: .private)") + throw error + } + } + + func licenseText(for component: AcknowledgementComponent) throws -> String { + guard let textFile = component.textFile else { + throw AcknowledgementsInventoryError.licenseTextMissing(componentId: component.id) + } + do { + return try String(contentsOf: rootURL.appendingPathComponent(textFile), encoding: .utf8) + } catch { + Self.logger.error( + "Missing license text \(textFile, privacy: .public) for \(component.id, privacy: .public)" + ) + throw AcknowledgementsInventoryError.licenseTextMissing(componentId: component.id) + } + } +} diff --git a/TableProMobile/TableProMobile/Helpers/ConnectionListState.swift b/TableProMobile/TableProMobile/Helpers/ConnectionListState.swift new file mode 100644 index 0000000000..6e252f7938 --- /dev/null +++ b/TableProMobile/TableProMobile/Helpers/ConnectionListState.swift @@ -0,0 +1,46 @@ +import Foundation +import TableProSyncTransport + +nonisolated enum ConnectionListState: Equatable, Sendable { + case loading + case failed + case checkingICloud + case iCloudUnavailable(SyncError) + case empty(syncsWithICloud: Bool) + case content(syncProblem: SyncError?) + + static func resolve( + loadStatus: LoadStatus, + hasLibraryItems: Bool, + isSyncEnabled: Bool, + syncStatus: SyncStatus, + hasCompletedFirstSync: Bool + ) -> ConnectionListState { + switch loadStatus { + case .failed: + return .failed + case .loading: + return .loading + case .ready: + break + } + let syncError = isSyncEnabled ? syncStatus.error : nil + if hasLibraryItems { + return .content(syncProblem: syncError) + } + guard isSyncEnabled, !hasCompletedFirstSync else { + return .empty(syncsWithICloud: isSyncEnabled) + } + if let syncError { + return .iCloudUnavailable(syncError) + } + return syncStatus == .syncing ? .checkingICloud : .empty(syncsWithICloud: true) + } +} + +nonisolated private extension SyncStatus { + var error: SyncError? { + guard case .error(let error) = self else { return nil } + return error + } +} diff --git a/TableProMobile/TableProMobile/Helpers/GroupPersistence.swift b/TableProMobile/TableProMobile/Helpers/GroupPersistence.swift index 249300e164..152787a9ed 100644 --- a/TableProMobile/TableProMobile/Helpers/GroupPersistence.swift +++ b/TableProMobile/TableProMobile/Helpers/GroupPersistence.swift @@ -2,13 +2,11 @@ import Foundation import TableProModels struct GroupPersistence { + let directory: URL + private var fileURL: URL? { - guard let dir = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first else { - return nil - } - let appDir = dir.appendingPathComponent("TableProMobile", isDirectory: true) - try? FileManager.default.createDirectory(at: appDir, withIntermediateDirectories: true) - return appDir.appendingPathComponent("groups.json") + try? FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) + return directory.appendingPathComponent("groups.json") } func save(_ groups: [ConnectionGroup]) throws { diff --git a/TableProMobile/TableProMobile/Helpers/SceneIntent.swift b/TableProMobile/TableProMobile/Helpers/SceneIntent.swift new file mode 100644 index 0000000000..73084c0a0f --- /dev/null +++ b/TableProMobile/TableProMobile/Helpers/SceneIntent.swift @@ -0,0 +1,48 @@ +import CoreSpotlight +import Foundation + +nonisolated enum SceneIntent: Hashable, Sendable { + case openConnection(UUID, table: String?) + case importConnections(URL) + + static let viewConnectionActivity = "com.TablePro.viewConnection" + static let viewTableActivity = "com.TablePro.viewTable" + static let connectionFileExtension = "tablepro" + + static func parse(url: URL) -> SceneIntent? { + if url.isFileURL { + guard url.pathExtension.lowercased() == connectionFileExtension else { return nil } + return .importConnections(url) + } + guard url.scheme?.lowercased() == "tablepro", + url.host(percentEncoded: false)?.lowercased() == "connect" else { return nil } + let segments = url.pathComponents.filter { $0 != "/" } + guard let first = segments.first, let connectionId = UUID(uuidString: first) else { return nil } + guard segments.count == 3, segments[1] == "table", !segments[2].isEmpty else { + return .openConnection(connectionId, table: nil) + } + return .openConnection(connectionId, table: segments[2]) + } + + static func parse(activityType: String, userInfo: [AnyHashable: Any]?) -> SceneIntent? { + switch activityType { + case CSSearchableItemActionType: + guard let identifier = userInfo?[CSSearchableItemActivityIdentifier] as? String, + let connectionId = UUID(uuidString: identifier) else { return nil } + return .openConnection(connectionId, table: nil) + case viewConnectionActivity: + guard let connectionId = connectionId(in: userInfo) else { return nil } + return .openConnection(connectionId, table: nil) + case viewTableActivity: + guard let connectionId = connectionId(in: userInfo) else { return nil } + let table = (userInfo?["tableName"] as? String).flatMap { $0.isEmpty ? nil : $0 } + return .openConnection(connectionId, table: table) + default: + return nil + } + } + + private static func connectionId(in userInfo: [AnyHashable: Any]?) -> UUID? { + (userInfo?["connectionId"] as? String).flatMap(UUID.init(uuidString:)) + } +} diff --git a/TableProMobile/TableProMobile/Helpers/StreamingExporter.swift b/TableProMobile/TableProMobile/Helpers/StreamingExporter.swift deleted file mode 100644 index 0ff1721461..0000000000 --- a/TableProMobile/TableProMobile/Helpers/StreamingExporter.swift +++ /dev/null @@ -1,130 +0,0 @@ -import Foundation -import os -import TableProDatabase -import TableProModels - -actor StreamingExporter { - private static let logger = Logger(subsystem: "com.TablePro", category: "StreamingExporter") - - init() {} - - func exportToFile( - driver: DatabaseDriver, - query: String, - format: ExportFormat, - tableName: String, - options: StreamOptions = .default - ) async throws -> URL { - let url = FileManager.default.temporaryDirectory - .appendingPathComponent("TablePro-export-\(UUID().uuidString).\(format.fileExtension)") - FileManager.default.createFile(atPath: url.path, contents: nil) - - let handle = try FileHandle(forWritingTo: url) - defer { try? handle.close() } - - var headerWritten = false - var seenColumns: [String] = [] - var rowIndex = 0 - - if case .json = format { - try handle.write(contentsOf: Data("[\n".utf8)) - } - - do { - for try await element in driver.executeStreaming(query: query, options: options) { - switch element { - case .columns(let cols): - seenColumns = cols.map(\.name) - if !headerWritten, format != .json { - let header = formatHeader(format: format, columns: seenColumns) + "\n" - try handle.write(contentsOf: Data(header.utf8)) - headerWritten = true - } - case .row(let row): - let values = row.legacyValues - let line = formatRow( - format: format, - columns: seenColumns, - values: values, - tableName: tableName, - isFirst: rowIndex == 0 - ) - try handle.write(contentsOf: Data(line.utf8)) - rowIndex += 1 - case .rowsAffected, .statusMessage, .truncated: - continue - } - } - } catch { - try? FileManager.default.removeItem(at: url) - throw error - } - - if case .json = format { - try handle.write(contentsOf: Data("\n]\n".utf8)) - } - - Self.logger.info("Streaming export wrote \(rowIndex) rows to \(url.lastPathComponent, privacy: .public)") - return url - } - - private func formatHeader(format: ExportFormat, columns: [String]) -> String { - switch format { - case .csv: - return columns.map(escapeCsv).joined(separator: ",") - case .json: - return "" - case .sqlInsert: - return "" - } - } - - private func formatRow(format: ExportFormat, columns: [String], values: [String?], tableName: String, isFirst: Bool) -> String { - switch format { - case .csv: - let cells = columns.indices.map { i in - escapeCsv(i < values.count ? (values[i] ?? "NULL") : "NULL") - } - return cells.joined(separator: ",") + "\n" - case .json: - var dict: [String: Any] = [:] - for (i, name) in columns.enumerated() where i < values.count { - if let value = values[i] { - dict[name] = value - } else { - dict[name] = NSNull() - } - } - let data = (try? JSONSerialization.data(withJSONObject: dict, options: [.sortedKeys])) ?? Data() - let json = String(data: data, encoding: .utf8) ?? "{}" - return (isFirst ? " " : ",\n ") + json - case .sqlInsert: - let safeTable = tableName.replacingOccurrences(of: "`", with: "``") - let columnList = columns.map { "`\($0.replacingOccurrences(of: "`", with: "``"))`" }.joined(separator: ", ") - let valueList = columns.indices.map { i -> String in - guard i < values.count, let value = values[i] else { return "NULL" } - let escaped = value.replacingOccurrences(of: "'", with: "''") - return "'\(escaped)'" - }.joined(separator: ", ") - return "INSERT INTO `\(safeTable)` (\(columnList)) VALUES (\(valueList));\n" - } - } - - private func escapeCsv(_ value: String) -> String { - if value.contains(",") || value.contains("\"") || value.contains("\n") { - let escaped = value.replacingOccurrences(of: "\"", with: "\"\"") - return "\"\(escaped)\"" - } - return value - } -} - -extension ExportFormat { - nonisolated var fileExtension: String { - switch self { - case .csv: return "csv" - case .json: return "json" - case .sqlInsert: return "sql" - } - } -} diff --git a/TableProMobile/TableProMobile/Helpers/TagPersistence.swift b/TableProMobile/TableProMobile/Helpers/TagPersistence.swift index a2ce03aa56..990d54037e 100644 --- a/TableProMobile/TableProMobile/Helpers/TagPersistence.swift +++ b/TableProMobile/TableProMobile/Helpers/TagPersistence.swift @@ -2,13 +2,11 @@ import Foundation import TableProModels struct TagPersistence { + let directory: URL + private var fileURL: URL? { - guard let dir = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first else { - return nil - } - let appDir = dir.appendingPathComponent("TableProMobile", isDirectory: true) - try? FileManager.default.createDirectory(at: appDir, withIntermediateDirectories: true) - return appDir.appendingPathComponent("tags.json") + try? FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) + return directory.appendingPathComponent("tags.json") } func save(_ tags: [ConnectionTag]) throws { diff --git a/TableProMobile/TableProMobile/Info.plist b/TableProMobile/TableProMobile/Info.plist index 0552a14591..b8c2c1eb73 100644 --- a/TableProMobile/TableProMobile/Info.plist +++ b/TableProMobile/TableProMobile/Info.plist @@ -6,22 +6,10 @@ $(ANALYTICS_HMAC_SECRET) AppIdentifierPrefix $(AppIdentifierPrefix) - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - NSFaceIDUsageDescription TablePro uses Face ID to protect your saved database connections and credentials. NSLocalNetworkUsageDescription TablePro connects to database servers and SSH tunnels running on your local network, including Bonjour (.local) hostnames. - NSBonjourServices - - _ssh._tcp - _mysql._tcp - _postgresql._tcp - _redis._tcp - NSSupportsLiveActivities NSUserActivityTypes @@ -50,7 +38,6 @@ UIBackgroundModes fetch - processing BGTaskSchedulerPermittedIdentifiers diff --git a/TableProMobile/TableProMobile/InfoPlist.xcstrings b/TableProMobile/TableProMobile/InfoPlist.xcstrings index f6f99f601d..606e4449a0 100644 --- a/TableProMobile/TableProMobile/InfoPlist.xcstrings +++ b/TableProMobile/TableProMobile/InfoPlist.xcstrings @@ -1,6 +1,30 @@ { "sourceLanguage" : "en", "strings" : { + "CFBundleDisplayName" : { + "comment" : "Bundle display name", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "TablePro" + } + } + } + }, + "CFBundleName" : { + "comment" : "Bundle name", + "extractionState" : "extracted_with_value", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "TableProMobile" + } + } + } + }, "NSFaceIDUsageDescription" : { "comment" : "Privacy - Face ID Usage Description", "extractionState" : "manual", @@ -72,6 +96,9 @@ } } } + }, + "TablePro Connections" : { + } }, "version" : "1.0" diff --git a/TableProMobile/TableProMobile/Localizable.xcstrings b/TableProMobile/TableProMobile/Localizable.xcstrings index a0fa1e02b8..37d951a308 100644 --- a/TableProMobile/TableProMobile/Localizable.xcstrings +++ b/TableProMobile/TableProMobile/Localizable.xcstrings @@ -58,6 +58,7 @@ } }, "%1$@ (ORA-%2$ld)." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -84,6 +85,9 @@ } } } + }, + "%1$@ via %2$@" : { + }, "%@" : { "localizations" : { @@ -146,6 +150,9 @@ } } } + }, + "%@ Copy" : { + }, "%@ connections do not support adding rows from Shortcuts." : { "localizations" : { @@ -341,6 +348,7 @@ } }, "%@, %@, %@" : { + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -375,6 +383,7 @@ } }, "%@, %@, %@, tag %@" : { + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -443,6 +452,7 @@ } }, "%@, port %lld" : { + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -797,6 +807,7 @@ } }, "A fast, lightweight database client for your iPhone and iPad." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -823,8 +834,15 @@ } } } + }, + "A hashed identifier for this device" : { + + }, + "A running query shows its time and row count in a Live Activity." : { + }, "A sync conflict was detected and needs to be resolved." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -907,6 +925,12 @@ } } } + }, + "Accepted" : { + + }, + "Acknowledgements" : { + }, "Active DB" : { "localizations" : { @@ -1109,6 +1133,9 @@ } } } + }, + "Add Tag" : { + }, "Add a connection in TablePro" : { "localizations" : { @@ -1137,8 +1164,12 @@ } } } + }, + "Add a connection to your database, or explore TablePro with the sample database." : { + }, "Add a database connection to get started." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -1305,6 +1336,9 @@ } } } + }, + "Add to Favorites" : { + }, "Added %lld rows to %@." : { "localizations" : { @@ -1481,6 +1515,7 @@ } }, "All" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -1622,6 +1657,7 @@ } }, "An unknown sync error occurred: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -1872,6 +1908,9 @@ } } } + }, + "Authenticate to stop locking TablePro." : { + }, "Authentication Failed" : { "localizations" : { @@ -1984,8 +2023,12 @@ } } } + }, + "Browse and Edit Data" : { + }, "Build" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -2042,6 +2085,7 @@ } }, "CA certificate not found: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -2432,6 +2476,12 @@ } } } + }, + "Checking iCloud" : { + + }, + "Chinook (Sample)" : { + }, "Choose File" : { "localizations" : { @@ -2462,6 +2512,7 @@ } }, "Choose a connection from the sidebar." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -2742,6 +2793,7 @@ } }, "Client certificate not found: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -2770,6 +2822,7 @@ } }, "Client key not found: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -2880,6 +2933,9 @@ } } } + }, + "Computed by the database" : { + }, "Configuration Error" : { "localizations" : { @@ -2910,6 +2966,7 @@ } }, "Confirm Writes" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -2992,6 +3049,9 @@ } } } + }, + "Connect Securely" : { + }, "Connect Using" : { "localizations" : { @@ -3132,6 +3192,9 @@ } } } + }, + "Connection Cancelled" : { + }, "Connection Deleted" : { "localizations" : { @@ -3188,8 +3251,12 @@ } } } + }, + "Connection failed while waiting on the socket." : { + }, "Connection failed: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -3272,6 +3339,9 @@ } } } + }, + "Connection timed out." : { + }, "Connections" : { "localizations" : { @@ -3300,6 +3370,12 @@ } } } + }, + "Connections Unavailable" : { + + }, + "Connections from your other devices appear here." : { + }, "Connections in this group will be moved to ungrouped." : { "localizations" : { @@ -3328,6 +3404,12 @@ } } } + }, + "Connections you add here or in TablePro on your Mac appear on all your devices." : { + + }, + "Connections, groups, and tags from TablePro on your Mac appear here over iCloud." : { + }, "Continue" : { "localizations" : { @@ -3582,6 +3664,7 @@ } }, "Could not complete Oracle native network encryption with this server. It may require an encryption or checksum algorithm the driver does not support." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -3636,6 +3719,9 @@ } } } + }, + "Could not install the sample database: %@" : { + }, "Could not read the columns of %@." : { "localizations" : { @@ -3664,6 +3750,9 @@ } } } + }, + "Could not start a connection." : { + }, "Create" : { "localizations" : { @@ -3694,6 +3783,7 @@ } }, "Create Group" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -3778,6 +3868,7 @@ } }, "Create a group to organize your connections." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -3832,6 +3923,9 @@ } } } + }, + "DEFAULT" : { + }, "Database" : { "localizations" : { @@ -4058,6 +4152,7 @@ } }, "Decryption failed: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -4252,6 +4347,9 @@ } } } + }, + "Delete %d Connections" : { + }, "Delete Connection" : { "localizations" : { @@ -4338,6 +4436,7 @@ } }, "Delete group" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -4504,6 +4603,9 @@ } } } + }, + "Don't Share" : { + }, "Done" : { "localizations" : { @@ -4728,6 +4830,9 @@ } } } + }, + "Empty String" : { + }, "Enabled" : { "localizations" : { @@ -4756,6 +4861,9 @@ } } } + }, + "Encoding" : { + }, "Enter a name for the new SQLite database." : { "extractionState" : "stale", @@ -5010,6 +5118,9 @@ } } } + }, + "Every change you made to the sample database is replaced with the original data." : { + }, "Execute" : { "localizations" : { @@ -5122,6 +5233,9 @@ } } } + }, + "Explore a music store database without connecting to a server." : { + }, "Export" : { "localizations" : { @@ -5208,6 +5322,7 @@ } }, "Failed to encode connection data" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -5236,6 +5351,7 @@ } }, "Failed to encode sync data: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -5264,6 +5380,7 @@ } }, "Failed to establish connection" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -5321,6 +5438,7 @@ } }, "Failed to parse connection file: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -5349,6 +5467,7 @@ } }, "Failed to read file: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -5489,6 +5608,7 @@ } }, "Failed to write file: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -5515,6 +5635,12 @@ } } } + }, + "Favorite" : { + + }, + "Favorites" : { + }, "File" : { "localizations" : { @@ -5543,6 +5669,12 @@ } } } + }, + "Fill in Password, and Username too if the server uses Redis 6 ACL users." : { + + }, + "Fill in at least one column. This database cannot insert a row made only of defaults." : { + }, "Filter" : { "localizations" : { @@ -5713,6 +5845,7 @@ } }, "Get Started" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -5937,6 +6070,7 @@ } }, "Group by Folder" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -5991,8 +6125,12 @@ } } } + }, + "Help decide what to improve next by sending one small report a day." : { + }, "Help improve TablePro by sharing anonymous usage statistics (no personal data or queries)." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -6019,6 +6157,9 @@ } } } + }, + "Hide Query in Live Activities" : { + }, "Hide query in Live Activities" : { "extractionState" : "manual", @@ -6076,6 +6217,9 @@ } } } + }, + "Homepage" : { + }, "Host" : { "localizations" : { @@ -6106,6 +6250,7 @@ } }, "If items appear on another device but not here, refresh forces a full re-download from iCloud. This may take a moment on slow networks." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -6302,6 +6447,7 @@ } }, "Import connections from your Mac" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -6328,6 +6474,9 @@ } } } + }, + "In Memory" : { + }, "In-Memory Database" : { "localizations" : { @@ -6386,6 +6535,7 @@ } }, "Incorrect passphrase" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -6580,8 +6730,21 @@ } } } + }, + "Interrupted" : { + + }, + "Interrupted before the query finished." : { + + }, + "It never contains a hostname, username, password, query, or any data from your databases. You can change this in Settings." : { + + }, + "Its subgroups are deleted too. Their connections move to Ungrouped." : { + }, "Jump host key not found: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -6608,8 +6771,15 @@ } } } + }, + "Keep Connections at the Top" : { + + }, + "Keep your connections, groups, and tags the same on your iPhone, iPad, and Mac." : { + }, "Kerberos authentication failed: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -6664,6 +6834,9 @@ } } } + }, + "Last Connected" : { + }, "Last Sync" : { "localizations" : { @@ -6692,6 +6865,9 @@ } } } + }, + "License" : { + }, "Load Failed" : { "localizations" : { @@ -6893,6 +7069,7 @@ } }, "Local Network access is required. Open Settings > Privacy & Security > Local Network and turn TablePro on." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -7033,6 +7210,7 @@ } }, "Manage Groups" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -7087,6 +7265,15 @@ } } } + }, + "Manual" : { + + }, + "Many Databases, One App" : { + + }, + "Match All Tags" : { + }, "Match Case" : { "localizations" : { @@ -7199,6 +7386,24 @@ } } } + }, + "More Actions" : { + + }, + "Move" : { + + }, + "Move %d Connections" : { + + }, + "Move Connection" : { + + }, + "Move to Group" : { + + }, + "MySQL, PostgreSQL, SQL Server, Oracle, Redis, SQLite, DuckDB, and more." : { + }, "NULL" : { "localizations" : { @@ -7255,8 +7460,12 @@ } } } + }, + "Network Encryption" : { + }, "Network is unavailable. Changes will sync when connectivity is restored." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -7423,6 +7632,9 @@ } } } + }, + "New Subgroup" : { + }, "New Tag" : { "localizations" : { @@ -7537,6 +7749,7 @@ } }, "No Groups" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -7619,8 +7832,12 @@ } } } + }, + "No License Information" : { + }, "No Matching Connections" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -7652,8 +7869,8 @@ "localizations" : { "ko" : { "stringUnit" : { - "value" : "Microsoft Entra ID 액세스 토큰이 제공되지 않았습니다.", - "state" : "translated" + "state" : "translated", + "value" : "Microsoft Entra ID 액세스 토큰이 제공되지 않았습니다." } }, "vi" : { @@ -7817,6 +8034,7 @@ } }, "No connections match the selected filter." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -8011,8 +8229,12 @@ } } } + }, + "Not Now" : { + }, "Not connected to SQL Server" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -8041,6 +8263,7 @@ } }, "Not connected to database" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -8263,6 +8486,12 @@ } } } + }, + "One report a day: hashed device ID, versions, language, database types, first-use dates. Never hostnames, credentials, queries, or data." : { + + }, + "Open" : { + }, "Open Connection" : { "localizations" : { @@ -8319,6 +8548,9 @@ } } } + }, + "Open Sample Database" : { + }, "Open Settings > Privacy & Security > Local Network and turn TablePro on, then try again." : { "localizations" : { @@ -8347,6 +8579,12 @@ } } } + }, + "Open a connection or add rows from Shortcuts, Siri, and the Home Screen." : { + + }, + "Open a table, filter its rows, and change values in place." : { + }, "Opens a database connection in TablePro" : { "localizations" : { @@ -8571,6 +8809,9 @@ } } } + }, + "PING failed: %@" : { + }, "Page number" : { "localizations" : { @@ -8599,6 +8840,9 @@ } } } + }, + "Parent Group" : { + }, "Passphrase" : { "localizations" : { @@ -8739,8 +8983,15 @@ } } } + }, + "Passwords stay in your Keychain. Connect through an SSH tunnel or over SSL." : { + + }, + "Passwords stay on this device unless you turn on Sync Passwords in Settings. You can change this at any time in Settings." : { + }, "Passwords sync through iCloud Keychain, which is end-to-end encrypted. Only affects new saves. Re-save a password to update its sync." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -8767,6 +9018,9 @@ } } } + }, + "Passwords sync through iCloud Keychain, which is end-to-end encrypted. Turning it on affects new saves only, so re-save a password to sync it." : { + }, "Paste" : { "localizations" : { @@ -9048,6 +9302,9 @@ } } } + }, + "Privacy Policy" : { + }, "Private Key" : { "localizations" : { @@ -9160,6 +9417,9 @@ } } } + }, + "Queries on the Lock Screen" : { + }, "Query" : { "localizations" : { @@ -9247,6 +9507,7 @@ } }, "Query execution failed" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -9275,6 +9536,7 @@ } }, "Query failed: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -9331,6 +9593,7 @@ } }, "Query was cancelled" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -9415,6 +9678,7 @@ } }, "Read-Only" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -9441,6 +9705,9 @@ } } } + }, + "Recent" : { + }, "Reconnecting..." : { "localizations" : { @@ -9553,8 +9820,12 @@ } } } + }, + "Redis connection failed" : { + }, "Refresh from iCloud" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -9583,6 +9854,7 @@ } }, "Refresh from iCloud?" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -9609,6 +9881,9 @@ } } } + }, + "Rejected" : { + }, "Reload" : { "localizations" : { @@ -9665,6 +9940,12 @@ } } } + }, + "Remove from Favorites" : { + + }, + "Remove from Recent" : { + }, "Replace" : { "localizations" : { @@ -9693,6 +9974,9 @@ } } } + }, + "Requested" : { + }, "Require Face ID" : { "localizations" : { @@ -9805,6 +10089,15 @@ } } } + }, + "Reset" : { + + }, + "Reset Database" : { + + }, + "Reset Sample Database?" : { + }, "Results Cleared" : { "localizations" : { @@ -10142,6 +10435,12 @@ } } } + }, + "Run queries and find the ones you ran before in History." : { + + }, + "Running" : { + }, "Running query" : { "extractionState" : "manual", @@ -10509,6 +10808,7 @@ } }, "SSH private key not found: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -10619,6 +10919,12 @@ } } } + }, + "Sample Database" : { + + }, + "Sample Database Unavailable" : { + }, "Save" : { "localizations" : { @@ -10675,6 +10981,9 @@ } } } + }, + "Saved credentials for these connections will be permanently removed." : { + }, "Schema" : { "localizations" : { @@ -10731,6 +11040,9 @@ } } } + }, + "Search Connections" : { + }, "Search all columns" : { "localizations" : { @@ -10901,6 +11213,7 @@ } }, "Select a Connection" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -11013,6 +11326,7 @@ } }, "Set up a new database connection" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -11151,8 +11465,15 @@ } } } + }, + "Share Usage Data" : { + + }, + "Share Usage Data?" : { + }, "Share anonymous usage data" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -11179,6 +11500,9 @@ } } } + }, + "Shortcuts and Widgets" : { + }, "Showing the first %d rows. Add LIMIT to fetch more." : { "localizations" : { @@ -11263,8 +11587,12 @@ } } } + }, + "Sign in to iCloud in the Settings app to sync your connections." : { + }, "Skip" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -11459,6 +11787,9 @@ } } } + }, + "Stopped" : { + }, "Stopped at %d rows to stay within memory limits. Add LIMIT to fetch fewer." : { "localizations" : { @@ -11487,6 +11818,9 @@ } } } + }, + "Stopped before the query finished." : { + }, "Stopped. Showing %d rows." : { "localizations" : { @@ -11515,6 +11849,9 @@ } } } + }, + "Swipe right on a connection to add it to Favorites." : { + }, "Switching..." : { "extractionState" : "stale", @@ -11546,6 +11883,7 @@ } }, "Sync" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -11574,6 +11912,7 @@ } }, "Sync Now" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -11630,6 +11969,7 @@ } }, "Sync from iCloud" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -11658,6 +11998,7 @@ } }, "Sync token expired. A full sync will be performed." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -11714,6 +12055,7 @@ } }, "Sync zone not found. A full sync will be performed." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -11742,6 +12084,7 @@ } }, "Syncing from iCloud..." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -11796,8 +12139,12 @@ } } } + }, + "Syncs with Your Mac" : { + }, "TLS handshake failed: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -11937,6 +12284,18 @@ } } } + }, + "TablePro Is Locked" : { + + }, + "TablePro cannot receive the output of COPY TO STDOUT, so it was discarded. Run a SELECT instead." : { + + }, + "TablePro cannot run a replication COPY." : { + + }, + "TablePro cannot send data to COPY FROM STDIN, so no rows were sent. Insert the rows with INSERT instead." : { + }, "TablePro could not read that file." : { "localizations" : { @@ -11965,6 +12324,9 @@ } } } + }, + "TablePro could not read your saved connections. Nothing on this device has been changed." : { + }, "TablePro doesn't support “%@” connections" : { "extractionState" : "manual", @@ -12030,6 +12392,7 @@ } }, "TablePro is Locked" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -12058,6 +12421,7 @@ } }, "TablePro will re-download every connection, group, and tag from your iCloud account. Local data on this device is not deleted." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -12168,6 +12532,9 @@ } } } + }, + "Tap Retry to try again." : { + }, "Test Connection" : { "localizations" : { @@ -12481,8 +12848,8 @@ "localizations" : { "ko" : { "stringUnit" : { - "value" : "Microsoft Entra ID 액세스 토큰이 드라이버에서 거부되었습니다.", - "state" : "translated" + "state" : "translated", + "value" : "Microsoft Entra ID 액세스 토큰이 드라이버에서 거부되었습니다." } }, "vi" : { @@ -12506,6 +12873,7 @@ } }, "The Oracle listener refused the connection (ORA-%ld)." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -12534,6 +12902,7 @@ } }, "The Oracle listener refused the connection." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -12562,6 +12931,7 @@ } }, "The Oracle server closed the connection during the login handshake." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -12588,6 +12958,9 @@ } } } + }, + "The Password field is empty. Fill it in, or clear Username to sign in as the default user." : { + }, "The SSH server may be unreachable or running a different protocol." : { "localizations" : { @@ -12644,6 +13017,9 @@ } } } + }, + "The app and iOS versions, and your language" : { + }, "The certificate could not be saved to this device's keychain." : { "localizations" : { @@ -12756,6 +13132,9 @@ } } } + }, + "The connection attempt was cancelled." : { + }, "The data could not be read: %@" : { "localizations" : { @@ -12842,6 +13221,7 @@ } }, "The encrypted file is corrupt or incomplete" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -12930,8 +13310,15 @@ } } } + }, + "The license text is missing from this build." : { + + }, + "The list of open source libraries is missing from this build." : { + }, "The listener does not know the requested SID" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -12960,6 +13347,7 @@ } }, "The listener does not know the requested service name" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13044,6 +13432,7 @@ } }, "The listener has no handler available for the requested service" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13072,6 +13461,7 @@ } }, "The listener is blocking new connections to the requested service" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13128,6 +13518,7 @@ } }, "The query did not finish within the configured timeout, so the connection was reset. Run the query again." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13182,6 +13573,12 @@ } } } + }, + "The report contains:" : { + + }, + "The sample database is missing from the app." : { + }, "The server is not responding. Check the host and port." : { "localizations" : { @@ -13212,6 +13609,7 @@ } }, "The server sent an unexpected message and the connection was reset. Run the query again." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13380,6 +13778,7 @@ } }, "This Oracle server is older than release 11.1, which the database driver does not support." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13408,6 +13807,7 @@ } }, "This account uses a password verifier the database driver does not support." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13490,6 +13890,9 @@ } } } + }, + "This column is generated, so it is never written." : { + }, "This connection has a client certificate but no private key. Import both." : { "localizations" : { @@ -13604,6 +14007,7 @@ } }, "This connection's CA certificate is not readable on this device (%@). Certificate files do not sync between devices, so add the certificate here or lower the SSL mode to Required." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13632,6 +14036,7 @@ } }, "This connection's client certificate is not readable on this device (%@). Certificate files do not sync between devices, so add the certificate here before connecting." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13660,6 +14065,7 @@ } }, "This connection's client key is not readable on this device (%@). Key files do not sync between devices, so add the key here before connecting." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13772,6 +14178,7 @@ } }, "This file is encrypted and requires a passphrase" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13800,6 +14207,7 @@ } }, "This file is not a valid TablePro export" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13828,6 +14236,7 @@ } }, "This file requires a newer version of TablePro (format version %d)" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -13938,6 +14347,9 @@ } } } + }, + "This server requires authentication." : { + }, "This table has no foreign key relationships." : { "localizations" : { @@ -14108,6 +14520,7 @@ } }, "Timed out completing Kerberos authentication. The Kerberos KDC (domain controller) may be unreachable, the server's SPN may be missing, or this device's clock may be off. Check your network to the domain, or use SQL Server Authentication." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -14134,8 +14547,12 @@ } } } + }, + "Timed out connecting to the MySQL server." : { + }, "Timed out connecting to the server. Check the host, port, and that the server is reachable and accepting connections." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -14164,6 +14581,7 @@ } }, "Timed out during the Oracle login handshake. The server accepted the network connection but did not finish logging in." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -14218,6 +14636,9 @@ } } } + }, + "Touch and hold a connection to rename, duplicate, or move it to a group." : { + }, "Truncate" : { "localizations" : { @@ -14358,6 +14779,9 @@ } } } + }, + "Turn On iCloud Sync" : { + }, "Type" : { "localizations" : { @@ -14386,6 +14810,15 @@ } } } + }, + "Type a tag's name in the search field to show only the connections that carry it." : { + + }, + "UTF-8 via Latin 1" : { + + }, + "Unfavorite" : { + }, "Ungrouped" : { "localizations" : { @@ -14471,6 +14904,9 @@ } } } + }, + "Unknown error" : { + }, "Unlock" : { "localizations" : { @@ -14529,6 +14965,7 @@ } }, "Unsupported encryption version %d" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -14555,6 +14992,9 @@ } } } + }, + "Use Default" : { + }, "Use Passcode" : { "localizations" : { @@ -14639,6 +15079,9 @@ } } } + }, + "Use iCloud" : { + }, "Username" : { "localizations" : { @@ -14695,6 +15138,9 @@ } } } + }, + "VALUE" : { + }, "Value" : { "localizations" : { @@ -14723,6 +15169,9 @@ } } } + }, + "Value for %@" : { + }, "Verify CA" : { "localizations" : { @@ -14807,6 +15256,9 @@ } } } + }, + "Version %@" : { + }, "View" : { "localizations" : { @@ -14837,7 +15289,6 @@ } }, "Views" : { - "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -14892,8 +15343,15 @@ } } } + }, + "What's New" : { + + }, + "What's New in TablePro" : { + }, "When off, connections, groups, and tags stay on this device only. Existing iCloud data is not deleted." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -14922,6 +15380,7 @@ } }, "When off, connections, groups, and tags stay on this device only. Existing iCloud data is not deleted. Passwords stay on this device unless you turn on Sync Passwords." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -14948,6 +15407,9 @@ } } } + }, + "When off, nothing is sent to iCloud and nothing already there is deleted. Changes you make meanwhile sync once you turn it back on." : { + }, "When on, the lock screen and Dynamic Island show \"Running query\" instead of the SQL preview." : { "extractionState" : "manual", @@ -14977,6 +15439,12 @@ } } } + }, + "When you first connected and first ran a query" : { + + }, + "Which database types you connect to, and how many connections are open" : { + }, "Windows Authentication (Kerberos) isn't supported on iOS yet. Use SQL Server Authentication, or connect from the Mac app." : { "localizations" : { @@ -15061,6 +15529,9 @@ } } } + }, + "Write and Run SQL" : { + }, "Yellow" : { "localizations" : { @@ -15089,6 +15560,9 @@ } } } + }, + "Your connections could not be loaded, so nothing can be added right now." : { + }, "auto-increment" : { "localizations" : { @@ -15313,6 +15787,9 @@ } } } + }, + "iCloud" : { + }, "iCloud Sync" : { "localizations" : { @@ -15341,8 +15818,12 @@ } } } + }, + "iCloud Unavailable" : { + }, "iCloud account is not available. Sign in to iCloud in System Settings." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -15371,6 +15852,7 @@ } }, "iCloud rejected %d change(s). They stay on this device and will retry: %@" : { + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -15405,6 +15887,7 @@ } }, "iCloud server error: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -15433,6 +15916,7 @@ } }, "iCloud storage is full. Free up space in iCloud and try again." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { @@ -15515,6 +15999,9 @@ } } } + }, + "in %@" : { + }, "insert" : { "localizations" : { @@ -15935,6 +16422,9 @@ } } } + }, + "tags %@" : { + }, "≤" : { "localizations" : { diff --git a/TableProMobile/TableProMobile/Models/RowWindow.swift b/TableProMobile/TableProMobile/Models/RowWindow.swift index d9301b0d2f..5180c3c4bc 100644 --- a/TableProMobile/TableProMobile/Models/RowWindow.swift +++ b/TableProMobile/TableProMobile/Models/RowWindow.swift @@ -39,10 +39,6 @@ struct RowWindow: Sendable { totalAppended = 0 } - var lastAbsoluteIndex: Int { - firstAbsoluteIndex + rows.count - 1 - } - var isEmpty: Bool { rows.isEmpty } diff --git a/TableProMobile/TableProMobile/Onboarding/ConnectionListTips.swift b/TableProMobile/TableProMobile/Onboarding/ConnectionListTips.swift new file mode 100644 index 0000000000..839bf63523 --- /dev/null +++ b/TableProMobile/TableProMobile/Onboarding/ConnectionListTips.swift @@ -0,0 +1,153 @@ +import Foundation +import os +import SwiftUI +import TipKit + +nonisolated struct FavoriteSwipeTip: Tip { + static let tipId = "favorite-swipe" + + @Parameter static var isListReady: Bool = false + @Parameter static var connectionCount: Int = 0 + @Parameter static var hasFavorites: Bool = false + + var id: String { Self.tipId } + + var title: Text { + Text("Keep Connections at the Top") + } + + var message: Text? { + Text("Swipe right on a connection to add it to Favorites.") + } + + var image: Image? { + Image(systemName: "star") + } + + var rules: [Rule] { + #Rule(Self.$isListReady) { $0 == true } + #Rule(Self.$connectionCount) { $0 >= 3 } + #Rule(Self.$hasFavorites) { $0 == false } + } + + var options: [any TipOption] { + Tips.MaxDisplayCount(2) + } +} + +nonisolated struct ConnectionActionsTip: Tip { + static let tipId = "connection-actions" + static let connectionOpened = Tips.Event(id: "connection-opened") + + var id: String { Self.tipId } + + var title: Text { + Text("More Actions") + } + + var message: Text? { + Text("Touch and hold a connection to rename, duplicate, or move it to a group.") + } + + var image: Image? { + Image(systemName: "hand.tap") + } + + var rules: [Rule] { + #Rule(FavoriteSwipeTip.$isListReady) { $0 == true } + #Rule(Self.connectionOpened) { $0.donations.count >= 3 } + } + + var options: [any TipOption] { + Tips.MaxDisplayCount(2) + } +} + +nonisolated struct TagSearchTip: Tip { + static let tipId = "tag-search" + + @Parameter static var hasTaggedConnections: Bool = false + + var id: String { Self.tipId } + + var title: Text { + Text("Filter by Tag") + } + + var message: Text? { + Text("Type a tag's name in the search field to show only the connections that carry it.") + } + + var image: Image? { + Image(systemName: "tag") + } + + var rules: [Rule] { + #Rule(FavoriteSwipeTip.$isListReady) { $0 == true } + #Rule(Self.$hasTaggedConnections) { $0 == true } + #Rule(ConnectionActionsTip.connectionOpened) { $0.donations.count >= 1 } + } + + var options: [any TipOption] { + Tips.MaxDisplayCount(2) + } +} + +enum ConnectionListTips { + private static let logger = Logger(subsystem: "com.TablePro", category: "ConnectionListTips") + + private(set) static var isConfigured = false + + static func configure(isTestRuntime: Bool = TestRuntime.isActive) { + guard !isTestRuntime, !isConfigured else { return } + do { + try Tips.configure([.displayFrequency(.daily)]) + isConfigured = true + } catch { + logger.error("Could not configure tips: \(error.localizedDescription, privacy: .public)") + } + } + + static func makeGroup() -> TipGroup { + TipGroup(.firstAvailable) { + FavoriteSwipeTip() + ConnectionActionsTip() + TagSearchTip() + } + } + + static func libraryChanged( + isListReady: Bool, + connectionCount: Int, + hasFavorites: Bool, + hasTaggedConnections: Bool + ) { + guard isConfigured else { return } + FavoriteSwipeTip.isListReady = isListReady + FavoriteSwipeTip.connectionCount = connectionCount + FavoriteSwipeTip.hasFavorites = hasFavorites + TagSearchTip.hasTaggedConnections = hasTaggedConnections + } + + static func connectionOpened() { + guard isConfigured else { return } + ConnectionActionsTip.connectionOpened.sendDonation() + } + + static func favoriteSet() { + invalidate(FavoriteSwipeTip()) + } + + static func connectionMenuUsed() { + invalidate(ConnectionActionsTip()) + } + + static func tagFilterUsed() { + invalidate(TagSearchTip()) + } + + private static func invalidate(_ tip: some Tip) { + guard isConfigured else { return } + tip.invalidate(reason: .actionPerformed) + } +} diff --git a/TableProMobile/TableProMobile/Onboarding/FeatureHighlights.swift b/TableProMobile/TableProMobile/Onboarding/FeatureHighlights.swift new file mode 100644 index 0000000000..db545c6143 --- /dev/null +++ b/TableProMobile/TableProMobile/Onboarding/FeatureHighlights.swift @@ -0,0 +1,70 @@ +import Foundation + +nonisolated struct FeatureHighlight: Identifiable, Sendable { + let id: String + let systemImage: String + let title: LocalizedStringResource + let message: LocalizedStringResource +} + +nonisolated enum FeatureHighlights { + static let welcome: [FeatureHighlight] = [ + FeatureHighlight( + id: "databases", + systemImage: "cylinder.split.1x2", + title: "Many Databases, One App", + message: "MySQL, PostgreSQL, SQL Server, Oracle, Redis, SQLite, DuckDB, and more." + ), + FeatureHighlight( + id: "browse", + systemImage: "tablecells", + title: "Browse and Edit Data", + message: "Open a table, filter its rows, and change values in place." + ), + FeatureHighlight( + id: "query", + systemImage: "chevron.left.forwardslash.chevron.right", + title: "Write and Run SQL", + message: "Run queries and find the ones you ran before in History." + ), + FeatureHighlight( + id: "secure", + systemImage: "lock.shield", + title: "Connect Securely", + message: "Passwords stay in your Keychain. Connect through an SSH tunnel or over SSL." + ) + ] + + static func release(_ version: String) -> [FeatureHighlight]? { + releases[version] + } + + private static let releases: [String: [FeatureHighlight]] = [ + "1.0": [ + FeatureHighlight( + id: "sample", + systemImage: "music.note.list", + title: "Sample Database", + message: "Explore a music store database without connecting to a server." + ), + FeatureHighlight( + id: "sync", + systemImage: "icloud", + title: "Syncs with Your Mac", + message: "Connections, groups, and tags from TablePro on your Mac appear here over iCloud." + ), + FeatureHighlight( + id: "live-activity", + systemImage: "lock.iphone", + title: "Queries on the Lock Screen", + message: "A running query shows its time and row count in a Live Activity." + ), + FeatureHighlight( + id: "shortcuts", + systemImage: "apps.iphone", + title: "Shortcuts and Widgets", + message: "Open a connection or add rows from Shortcuts, Siri, and the Home Screen." + ) + ] + ] +} diff --git a/TableProMobile/TableProMobile/Onboarding/FirstRunPlan.swift b/TableProMobile/TableProMobile/Onboarding/FirstRunPlan.swift new file mode 100644 index 0000000000..a04718ab8a --- /dev/null +++ b/TableProMobile/TableProMobile/Onboarding/FirstRunPlan.swift @@ -0,0 +1,50 @@ +import Foundation + +nonisolated enum FirstRunPage: Hashable, Sendable { + case welcome + case iCloud + case usageData +} + +nonisolated enum LaunchPresentation: Hashable, Sendable { + case none + case firstRun([FirstRunPage]) + case whatsNew(version: String) +} + +nonisolated struct FirstRunPlan: Sendable { + let hasSeenWelcome: Bool + let syncChoice: Bool? + let usageDataChoice: Bool? + let lastSeenVersion: String? + let currentVersion: String + let hasHighlightsForCurrentVersion: Bool + + var presentation: LaunchPresentation { + let pages = firstRunPages + if !pages.isEmpty { + return .firstRun(pages) + } + guard isUpgrade, hasHighlightsForCurrentVersion else { return .none } + return .whatsNew(version: currentVersion) + } + + private var firstRunPages: [FirstRunPage] { + var pages: [FirstRunPage] = [] + if !hasSeenWelcome { + pages.append(.welcome) + if syncChoice == nil { + pages.append(.iCloud) + } + } + if usageDataChoice == nil { + pages.append(.usageData) + } + return pages + } + + private var isUpgrade: Bool { + guard let lastSeenVersion else { return false } + return lastSeenVersion != currentVersion + } +} diff --git a/TableProMobile/TableProMobile/Onboarding/FirstRunSheet.swift b/TableProMobile/TableProMobile/Onboarding/FirstRunSheet.swift new file mode 100644 index 0000000000..6592a6b2c1 --- /dev/null +++ b/TableProMobile/TableProMobile/Onboarding/FirstRunSheet.swift @@ -0,0 +1,179 @@ +import CloudKit +import SwiftUI + +struct FirstRunSheet: View { + let pages: [FirstRunPage] + + @Environment(AppState.self) private var appState + @Environment(\.dismiss) private var dismiss + @State private var path: [FirstRunPage] = [] + @State private var isAdvancing = false + + var body: some View { + NavigationStack(path: $path) { + page(pages.first ?? .usageData) + .navigationDestination(for: FirstRunPage.self) { page($0) } + } + } + + @ViewBuilder + private func page(_ page: FirstRunPage) -> some View { + switch page { + case .welcome: + WelcomePage(isAdvancing: isAdvancing) { + advance(from: .welcome) + } + .toolbar(.hidden, for: .navigationBar) + case .iCloud: + ICloudPage( + onUse: { + appState.setCloudSyncEnabled(true) + advance(from: .iCloud) + }, + onNotNow: { + appState.setCloudSyncEnabled(false) + advance(from: .iCloud) + } + ) + .navigationBarTitleDisplayMode(.inline) + case .usageData: + UsageDataPage( + onShare: { + appState.setUsageDataEnabled(true) + advance(from: .usageData) + }, + onDontShare: { + appState.setUsageDataEnabled(false) + advance(from: .usageData) + } + ) + .navigationBarTitleDisplayMode(.inline) + } + } + + private func advance(from current: FirstRunPage) { + guard !isAdvancing else { return } + isAdvancing = true + Task { + defer { isAdvancing = false } + guard let next = await nextPage(after: current) else { + dismiss() + return + } + path.append(next) + } + } + + private func nextPage(after current: FirstRunPage) async -> FirstRunPage? { + guard let index = pages.firstIndex(of: current) else { return nil } + for candidate in pages.dropFirst(index + 1) { + if candidate == .iCloud, await !isICloudAvailable() { + continue + } + return candidate + } + return nil + } + + private func isICloudAvailable() async -> Bool { + await appState.syncCoordinator.accountStatus() == .available + } +} + +private struct WelcomePage: View { + let isAdvancing: Bool + let onContinue: () -> Void + + var body: some View { + OnboardingPageLayout { + OnboardingHeader(title: "Welcome to TablePro", message: nil, image: .appIcon) + } content: { + FeatureHighlightList(highlights: FeatureHighlights.welcome) + } actions: { + Button(action: onContinue) { + Text("Continue") + .frame(maxWidth: .infinity) + } + .buttonStyle(.borderedProminent) + .disabled(isAdvancing) + .accessibilityIdentifier("first-run-continue") + } + } +} + +private struct ICloudPage: View { + let onUse: () -> Void + let onNotNow: () -> Void + + var body: some View { + OnboardingPageLayout { + OnboardingHeader( + title: "Sync with iCloud", + message: "Keep your connections, groups, and tags the same on your iPhone, iPad, and Mac.", + image: .symbol("icloud") + ) + } content: { + Text("Passwords stay on this device unless you turn on Sync Passwords in Settings. You can change this at any time in Settings.") + .font(.footnote) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + } actions: { + Button(action: onUse) { + Text("Use iCloud") + .frame(maxWidth: .infinity) + } + .buttonStyle(.borderedProminent) + .accessibilityIdentifier("first-run-use-icloud") + Button("Not Now", action: onNotNow) + .buttonStyle(.borderless) + .accessibilityIdentifier("first-run-icloud-not-now") + } + } +} + +private struct UsageDataPage: View { + let onShare: () -> Void + let onDontShare: () -> Void + + var body: some View { + OnboardingPageLayout { + OnboardingHeader( + title: "Share Usage Data?", + message: "Help decide what to improve next by sending one small report a day.", + image: .symbol("chart.bar.xaxis") + ) + } content: { + UsageDataDisclosure() + } actions: { + Button(action: onShare) { + Text("Share Usage Data") + .frame(maxWidth: .infinity) + } + .buttonStyle(.borderedProminent) + .accessibilityIdentifier("first-run-share-usage") + Button("Don't Share", action: onDontShare) + .buttonStyle(.borderless) + .accessibilityIdentifier("first-run-dont-share-usage") + } + } +} + +struct UsageDataDisclosure: View { + var body: some View { + VStack(alignment: .leading, spacing: 12) { + Text("The report contains:") + .font(.subheadline.weight(.semibold)) + VStack(alignment: .leading, spacing: 6) { + Label("A hashed identifier for this device", systemImage: "number") + Label("The app and iOS versions, and your language", systemImage: "info.circle") + Label("Which database types you connect to, and how many connections are open", systemImage: "cylinder") + Label("When you first connected and first ran a query", systemImage: "calendar") + } + .font(.subheadline) + Text("It never contains a hostname, username, password, query, or any data from your databases. You can change this in Settings.") + .font(.footnote) + .foregroundStyle(.secondary) + } + .frame(maxWidth: .infinity, alignment: .leading) + } +} diff --git a/TableProMobile/TableProMobile/Onboarding/OnboardingPageLayout.swift b/TableProMobile/TableProMobile/Onboarding/OnboardingPageLayout.swift new file mode 100644 index 0000000000..9c413a3bf1 --- /dev/null +++ b/TableProMobile/TableProMobile/Onboarding/OnboardingPageLayout.swift @@ -0,0 +1,162 @@ +import SwiftUI +import UIKit + +struct OnboardingPageLayout: View { + private static var readableWidth: CGFloat { 560 } + + @ViewBuilder let header: Header + @ViewBuilder let content: Content + @ViewBuilder let actions: Actions + + var body: some View { + if #available(iOS 26.0, *) { + scrollContent.safeAreaBar(edge: .bottom) { actionBar } + } else { + scrollContent.safeAreaInset(edge: .bottom) { + actionBar.background(.bar) + } + } + } + + private var scrollContent: some View { + ScrollView { + VStack(spacing: 32) { + header + content + } + .padding(.horizontal, 24) + .padding(.top, 32) + .padding(.bottom, 24) + .frame(maxWidth: Self.readableWidth) + .frame(maxWidth: .infinity) + } + .scrollBounceBehavior(.basedOnSize) + } + + @ViewBuilder + private var actionBar: some View { + if Actions.self != EmptyView.self { + VStack(spacing: 12) { + actions + } + .controlSize(.large) + .padding(.horizontal, 24) + .padding(.top, 12) + .padding(.bottom, 16) + .frame(maxWidth: Self.readableWidth) + .frame(maxWidth: .infinity) + } + } +} + +struct OnboardingHeader: View { + let title: LocalizedStringResource + let message: LocalizedStringResource? + let image: OnboardingHeaderImage + + var body: some View { + VStack(spacing: 16) { + switch image { + case .appIcon: + AppIconImage() + case .symbol(let name): + Image(systemName: name) + .font(.system(size: 56)) + .foregroundStyle(.tint) + .symbolRenderingMode(.hierarchical) + .accessibilityHidden(true) + } + Text(title) + .font(.largeTitle.bold()) + .multilineTextAlignment(.center) + .accessibilityAddTraits(.isHeader) + if let message { + Text(message) + .font(.body) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + } + } + .frame(maxWidth: .infinity) + } +} + +enum OnboardingHeaderImage { + case appIcon + case symbol(String) +} + +struct FeatureHighlightList: View { + let highlights: [FeatureHighlight] + + var body: some View { + VStack(alignment: .leading, spacing: 24) { + ForEach(highlights) { highlight in + FeatureHighlightRow(highlight: highlight) + } + } + .frame(maxWidth: .infinity, alignment: .leading) + } +} + +struct FeatureHighlightRow: View { + let highlight: FeatureHighlight + + @Environment(\.dynamicTypeSize) private var dynamicTypeSize + @ScaledMetric(relativeTo: .title) private var symbolWidth: CGFloat = 40 + + private var layout: AnyLayout { + dynamicTypeSize.isAccessibilitySize + ? AnyLayout(VStackLayout(alignment: .leading, spacing: 8)) + : AnyLayout(HStackLayout(alignment: .top, spacing: 16)) + } + + var body: some View { + layout { + Image(systemName: highlight.systemImage) + .font(.title) + .foregroundStyle(.tint) + .frame(width: symbolWidth) + .accessibilityHidden(true) + VStack(alignment: .leading, spacing: 2) { + Text(highlight.title) + .font(.headline) + Text(highlight.message) + .foregroundStyle(.secondary) + .fixedSize(horizontal: false, vertical: true) + } + } + .accessibilityElement(children: .combine) + } +} + +struct AppIconImage: View { + @ScaledMetric(relativeTo: .largeTitle) private var side: CGFloat = 88 + + var body: some View { + Group { + if let icon = Self.primaryIcon { + Image(uiImage: icon) + .resizable() + } else { + Image(systemName: "cylinder.split.1x2") + .resizable() + .scaledToFit() + .padding(side * 0.2) + .foregroundStyle(.tint) + .background(.fill.tertiary) + } + } + .frame(width: side, height: side) + .clipShape(RoundedRectangle(cornerRadius: side * 0.225, style: .continuous)) + .accessibilityHidden(true) + } + + private static var primaryIcon: UIImage? { + guard let icons = Bundle.main.object(forInfoDictionaryKey: "CFBundleIcons") as? [String: Any], + let primary = icons["CFBundlePrimaryIcon"] as? [String: Any], + let files = primary["CFBundleIconFiles"] as? [String], + let name = files.last else { return nil } + return UIImage(named: name) + } +} diff --git a/TableProMobile/TableProMobile/Onboarding/WhatsNewSheet.swift b/TableProMobile/TableProMobile/Onboarding/WhatsNewSheet.swift new file mode 100644 index 0000000000..4c730f5816 --- /dev/null +++ b/TableProMobile/TableProMobile/Onboarding/WhatsNewSheet.swift @@ -0,0 +1,53 @@ +import SwiftUI + +struct WhatsNewSheet: View { + let version: String + + @Environment(\.dismiss) private var dismiss + + var body: some View { + NavigationStack { + WhatsNewContent(version: version) { + Button { + dismiss() + } label: { + Text("Continue") + .frame(maxWidth: .infinity) + } + .buttonStyle(.borderedProminent) + } + .toolbar(.hidden, for: .navigationBar) + } + } +} + +struct WhatsNewContent: View { + let version: String + @ViewBuilder let actions: Actions + + var body: some View { + OnboardingPageLayout { + OnboardingHeader( + title: "What's New in TablePro", + message: LocalizedStringResource("Version \(version)"), + image: .appIcon + ) + } content: { + FeatureHighlightList(highlights: FeatureHighlights.release(version) ?? []) + } actions: { + actions + } + } +} + +struct WhatsNewSettingsPage: View { + let version: String + + var body: some View { + WhatsNewContent(version: version) { + EmptyView() + } + .navigationTitle(Text("What's New")) + .navigationBarTitleDisplayMode(.inline) + } +} diff --git a/TableProMobile/TableProMobile/Platform/AppLockState.swift b/TableProMobile/TableProMobile/Platform/AppLockState.swift index 30e1297456..43eaf05582 100644 --- a/TableProMobile/TableProMobile/Platform/AppLockState.swift +++ b/TableProMobile/TableProMobile/Platform/AppLockState.swift @@ -10,7 +10,7 @@ final class AppLockState { case oneMinute = 60 case fiveMinutes = 300 case fifteenMinutes = 900 - case oneHour = 3600 + case oneHour = 3_600 var id: Int { rawValue } @@ -27,6 +27,7 @@ final class AppLockState { private(set) var isLocked: Bool private var lastBackgroundedAt: Date? + private var unlockTask: Task? private let auth: BiometricAuthService static let lockEnabledKey = "com.TablePro.settings.lockEnabled" @@ -40,6 +41,10 @@ final class AppLockState { self.isLocked = Self.shouldLockOnColdLaunch(auth: auth) } + var biometry: BiometricAuthService.Availability { + auth.availability + } + static var isLockEnabled: Bool { UserDefaults.standard.bool(forKey: lockEnabledKey) } @@ -86,17 +91,19 @@ final class AppLockState { } func unlock() async -> Bool { + guard isLocked else { return true } + if let unlockTask { + return await unlockTask.value + } let reason = String(localized: "Unlock TablePro to access your database connections.") - let success = await auth.authenticate(reason: reason) + let task = Task { await auth.authenticate(reason: reason) } + unlockTask = task + let success = await task.value + unlockTask = nil if success { isLocked = false lastBackgroundedAt = nil } return success } - - func lockNow() { - guard Self.isLockEnabled, auth.availability != .unavailable else { return } - isLocked = true - } } diff --git a/TableProMobile/TableProMobile/Platform/AppPreferences.swift b/TableProMobile/TableProMobile/Platform/AppPreferences.swift index 08ee022382..b7dac65eb5 100644 --- a/TableProMobile/TableProMobile/Platform/AppPreferences.swift +++ b/TableProMobile/TableProMobile/Platform/AppPreferences.swift @@ -3,6 +3,7 @@ import TableProModels nonisolated enum AppPreferences { static let cloudSyncEnabledKey = "com.TablePro.settings.cloudSyncEnabled" + static let usageDataKey = "com.TablePro.settings.shareAnalytics" static let syncPasswordsKey = "com.TablePro.settings.syncPasswords" static let defaultPageSizeKey = "com.TablePro.settings.defaultPageSize" static let defaultSafeModeKey = "com.TablePro.settings.defaultSafeMode" @@ -11,7 +12,11 @@ nonisolated enum AppPreferences { static let pageSizeOptions: [Int] = [50, 100, 200, 500] static var isCloudSyncEnabled: Bool { - UserDefaults.standard.object(forKey: cloudSyncEnabledKey) as? Bool ?? true + UserDefaults.standard.bool(forKey: cloudSyncEnabledKey) + } + + static var isUsageDataEnabled: Bool { + UserDefaults.standard.bool(forKey: usageDataKey) } static var syncsPasswords: Bool { diff --git a/TableProMobile/TableProMobile/Platform/ConnectionLibraryPreferences.swift b/TableProMobile/TableProMobile/Platform/ConnectionLibraryPreferences.swift index 5d4eab5892..17b385380c 100644 --- a/TableProMobile/TableProMobile/Platform/ConnectionLibraryPreferences.swift +++ b/TableProMobile/TableProMobile/Platform/ConnectionLibraryPreferences.swift @@ -57,12 +57,6 @@ final class ConnectionLibraryPreferences { commitRecents(updated) } - func clearRecent() { - var updated = recents - updated.removeAll() - commitRecents(updated) - } - func isGroupExpanded(_ groupId: UUID) -> Bool { !collapsedGroupIds.contains(groupId) } diff --git a/TableProMobile/TableProMobile/Platform/IOSAnalyticsProvider.swift b/TableProMobile/TableProMobile/Platform/IOSAnalyticsProvider.swift index 3cdf315f57..38f54e0f29 100644 --- a/TableProMobile/TableProMobile/Platform/IOSAnalyticsProvider.swift +++ b/TableProMobile/TableProMobile/Platform/IOSAnalyticsProvider.swift @@ -63,7 +63,7 @@ final class IOSAnalyticsProvider: AnalyticsEnvironmentProvider { } var isAnalyticsEnabled: Bool { - defaults.object(forKey: "com.TablePro.settings.shareAnalytics") as? Bool ?? true + defaults.bool(forKey: AppPreferences.usageDataKey) } var hasLicense: Bool { false } diff --git a/TableProMobile/TableProMobile/Platform/IOSDriverFactory.swift b/TableProMobile/TableProMobile/Platform/IOSDriverFactory.swift index 789ca5b504..9577744b43 100644 --- a/TableProMobile/TableProMobile/Platform/IOSDriverFactory.swift +++ b/TableProMobile/TableProMobile/Platform/IOSDriverFactory.swift @@ -26,6 +26,8 @@ nonisolated final class IOSDriverFactory: DriverFactory { func createDriver(for connection: DatabaseConnection, password: String?) throws -> any DatabaseDriver { switch connection.type { + case .sqlite where connection.isSample: + return SQLiteDriver(path: try SampleDatabaseInstaller.live.installIfNeeded().path) case .sqlite: return SQLiteDriver(path: connection.database) case .duckdb: diff --git a/TableProMobile/TableProMobile/Platform/OnboardingPreferences.swift b/TableProMobile/TableProMobile/Platform/OnboardingPreferences.swift new file mode 100644 index 0000000000..82626d932f --- /dev/null +++ b/TableProMobile/TableProMobile/Platform/OnboardingPreferences.swift @@ -0,0 +1,60 @@ +import Foundation +import Observation + +@MainActor @Observable +final class OnboardingPreferences { + static let hasSeenWelcomeKey = "com.TablePro.hasCompletedOnboarding" + static let lastSeenVersionKey = "com.TablePro.lastSeenAppVersion" + + @ObservationIgnored private let defaults: UserDefaults + + private(set) var syncChoice: Bool? + private(set) var usageDataChoice: Bool? + private(set) var hasSeenWelcome: Bool + private(set) var lastSeenVersion: String? + + init(defaults: UserDefaults = .standard) { + self.defaults = defaults + Self.migrateLegacyState(in: defaults) + syncChoice = defaults.object(forKey: AppPreferences.cloudSyncEnabledKey) as? Bool + usageDataChoice = defaults.object(forKey: AppPreferences.usageDataKey) as? Bool + hasSeenWelcome = defaults.bool(forKey: Self.hasSeenWelcomeKey) + lastSeenVersion = defaults.string(forKey: Self.lastSeenVersionKey) + } + + var isCloudSyncEnabled: Bool { + syncChoice == true + } + + var isUsageDataEnabled: Bool { + usageDataChoice == true + } + + func setSyncChoice(_ enabled: Bool) { + syncChoice = enabled + defaults.set(enabled, forKey: AppPreferences.cloudSyncEnabledKey) + } + + func setUsageDataChoice(_ enabled: Bool) { + usageDataChoice = enabled + defaults.set(enabled, forKey: AppPreferences.usageDataKey) + } + + func markWelcomeSeen() { + guard !hasSeenWelcome else { return } + hasSeenWelcome = true + defaults.set(true, forKey: Self.hasSeenWelcomeKey) + } + + func recordLaunch(version: String) { + guard lastSeenVersion != version else { return } + lastSeenVersion = version + defaults.set(version, forKey: Self.lastSeenVersionKey) + } + + static func migrateLegacyState(in defaults: UserDefaults) { + guard defaults.bool(forKey: hasSeenWelcomeKey), + defaults.object(forKey: AppPreferences.cloudSyncEnabledKey) == nil else { return } + defaults.set(true, forKey: AppPreferences.cloudSyncEnabledKey) + } +} diff --git a/TableProMobile/TableProMobile/Platform/SampleDatabaseInstaller.swift b/TableProMobile/TableProMobile/Platform/SampleDatabaseInstaller.swift new file mode 100644 index 0000000000..6fdc205023 --- /dev/null +++ b/TableProMobile/TableProMobile/Platform/SampleDatabaseInstaller.swift @@ -0,0 +1,97 @@ +import Foundation +import os + +nonisolated enum SampleDatabaseError: LocalizedError, Equatable { + case bundleMissing + case copyFailed(message: String) + case libraryUnavailable + + var errorDescription: String? { + switch self { + case .bundleMissing: + return String(localized: "The sample database is missing from the app.") + case .copyFailed(let message): + return String(format: String(localized: "Could not install the sample database: %@"), message) + case .libraryUnavailable: + return String(localized: "Your connections could not be loaded, so nothing can be added right now.") + } + } +} + +nonisolated struct SampleDatabaseInstaller: Sendable { + static let fileName = "Chinook.sqlite" + static let startingTable = "Track" + static let sidecarSuffixes = ["-journal", "-wal", "-shm"] + + static var connectionName: String { + String(localized: "Chinook (Sample)") + } + + static let live = SampleDatabaseInstaller( + bundledURL: Bundle.main.url(forResource: "Chinook", withExtension: "sqlite"), + directory: defaultDirectory + ) + + private static let logger = Logger(subsystem: "com.TablePro", category: "SampleDatabase") + + let bundledURL: URL? + let directory: URL + + var installedURL: URL { + directory.appendingPathComponent(Self.fileName, isDirectory: false) + } + + @discardableResult + func installIfNeeded() throws -> URL { + let installed = installedURL + guard !FileManager.default.fileExists(atPath: installed.path) else { return installed } + try copyBundledFile(to: installed) + Self.logger.info("Installed the sample database") + return installed + } + + @discardableResult + func reset() throws -> URL { + let installed = installedURL + for url in [installed] + Self.sidecarSuffixes.map({ URL(fileURLWithPath: installed.path + $0) }) { + guard FileManager.default.fileExists(atPath: url.path) else { continue } + do { + try FileManager.default.removeItem(at: url) + } catch { + throw SampleDatabaseError.copyFailed(message: error.localizedDescription) + } + } + try copyBundledFile(to: installed) + Self.logger.info("Reset the sample database") + return installed + } + + private func copyBundledFile(to destination: URL) throws { + guard let bundledURL else { + Self.logger.error("Chinook.sqlite is not in the app bundle") + throw SampleDatabaseError.bundleMissing + } + do { + try prepareDirectory() + try FileManager.default.copyItem(at: bundledURL, to: destination) + } catch { + throw SampleDatabaseError.copyFailed(message: error.localizedDescription) + } + } + + private func prepareDirectory() throws { + try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) + var values = URLResourceValues() + values.isExcludedFromBackup = true + var excluded = directory + try excluded.setResourceValues(values) + } + + private static var defaultDirectory: URL { + let base = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first + ?? URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true) + return base + .appendingPathComponent("TableProMobile", isDirectory: true) + .appendingPathComponent("Samples", isDirectory: true) + } +} diff --git a/TableProMobile/TableProMobile/Platform/SceneLifecycle.swift b/TableProMobile/TableProMobile/Platform/SceneLifecycle.swift new file mode 100644 index 0000000000..7f65197c10 --- /dev/null +++ b/TableProMobile/TableProMobile/Platform/SceneLifecycle.swift @@ -0,0 +1,92 @@ +import Combine +import Observation +import SwiftUI +import UIKit + +final class TableProAppDelegate: NSObject, UIApplicationDelegate { + func application( + _ application: UIApplication, + configurationForConnecting connectingSceneSession: UISceneSession, + options: UIScene.ConnectionOptions + ) -> UISceneConfiguration { + let configuration = UISceneConfiguration(name: nil, sessionRole: connectingSceneSession.role) + configuration.delegateClass = TableProSceneDelegate.self + return configuration + } +} + +enum LockCoverMode: Equatable { + case locked + case obscured +} + +@Observable +final class LockCoverState { + var mode: LockCoverMode = .obscured +} + +final class TableProSceneDelegate: NSObject, UIWindowSceneDelegate, ObservableObject { + var onDisconnect: (() -> Void)? + + private weak var windowScene: UIWindowScene? + private var coverWindow: UIWindow? + private let coverState = LockCoverState() + + func scene( + _ scene: UIScene, + willConnectTo session: UISceneSession, + options connectionOptions: UIScene.ConnectionOptions + ) { + windowScene = scene as? UIWindowScene + } + + func sceneDidDisconnect(_ scene: UIScene) { + onDisconnect?() + onDisconnect = nil + } + + func showCover(_ mode: LockCoverMode?, lockState: AppLockState) { + guard let mode else { + hideCover() + return + } + guard let windowScene else { return } + coverState.mode = mode + let window = coverWindow ?? makeCoverWindow(in: windowScene, lockState: lockState) + coverWindow = window + for other in windowScene.windows where other !== window { + other.endEditing(true) + } + window.isHidden = false + window.makeKey() + } + + private func hideCover() { + guard let coverWindow, !coverWindow.isHidden else { return } + coverWindow.isHidden = true + windowScene?.windows.first { $0 !== coverWindow && !$0.isHidden }?.makeKey() + } + + private func makeCoverWindow(in windowScene: UIWindowScene, lockState: AppLockState) -> UIWindow { + let window = UIWindow(windowScene: windowScene) + window.windowLevel = .alert + 1 + let host = UIHostingController(rootView: LockCoverView(state: coverState).environment(lockState)) + host.view.backgroundColor = .clear + host.view.accessibilityViewIsModal = true + window.rootViewController = host + return window + } +} + +private struct LockCoverView: View { + let state: LockCoverState + + var body: some View { + switch state.mode { + case .locked: + LockScreenView() + case .obscured: + PrivacyCoverView() + } + } +} diff --git a/TableProMobile/TableProMobile/PrivacyInfo.xcprivacy b/TableProMobile/TableProMobile/PrivacyInfo.xcprivacy new file mode 100644 index 0000000000..4caefbbb49 --- /dev/null +++ b/TableProMobile/TableProMobile/PrivacyInfo.xcprivacy @@ -0,0 +1,65 @@ + + + + + NSPrivacyTracking + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeDeviceID + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAnalytics + + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeProductInteraction + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAnalytics + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + 3B52.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + NSPrivacyAccessedAPITypeReasons + + E174.1 + + + + + diff --git a/TableProMobile/TableProMobile/Security/CertificateMaterializer.swift b/TableProMobile/TableProMobile/Security/CertificateMaterializer.swift index f0ecba53ce..88aee704b9 100644 --- a/TableProMobile/TableProMobile/Security/CertificateMaterializer.swift +++ b/TableProMobile/TableProMobile/Security/CertificateMaterializer.swift @@ -42,11 +42,6 @@ nonisolated final class CertificateMaterializer: @unchecked Sendable { try? fileManager.removeItem(at: directory) } - func sweep() { - guard let root = try? rootDirectory(), fileManager.fileExists(atPath: root.path) else { return } - try? fileManager.removeItem(at: root) - } - private func write(_ pem: String, role: CertificateRole, for connectionId: UUID) throws -> String { let directory = directory(for: connectionId) try fileManager.createDirectory( diff --git a/TableProMobile/TableProMobile/Services/IOSConnectionImportService.swift b/TableProMobile/TableProMobile/Services/IOSConnectionImportService.swift index a78a7cbfdd..4d3e217c96 100644 --- a/TableProMobile/TableProMobile/Services/IOSConnectionImportService.swift +++ b/TableProMobile/TableProMobile/Services/IOSConnectionImportService.swift @@ -44,6 +44,10 @@ enum IOSConnectionImportService { resolutions: [UUID: ImportResolution], appState: AppState ) -> ImportResult { + guard appState.isLibraryWritable else { + logger.error("Import refused: the stored library is not loaded") + return ImportResult(importedCount: 0, connectionIdMap: [:], newConnectionIdMap: [:]) + } createMissingGroupsAndTags(from: preview.envelope, appState: appState) let tagIdsByName = lookup(appState.tags.map { ($0.name, $0.id) }) @@ -78,7 +82,7 @@ enum IOSConnectionImportService { tagIdsByName: tagIdsByName, groupIdsByName: groupIdsByName ) sortOrder += 1 - appState.addConnection(connection) + guard appState.addConnection(connection) else { continue } connectionIdMap[index] = id newConnectionIdMap[index] = id importedCount += 1 diff --git a/TableProMobile/TableProMobile/Sync/IOSSyncCoordinator.swift b/TableProMobile/TableProMobile/Sync/IOSSyncCoordinator.swift index 8fb213a285..6b31722ba6 100644 --- a/TableProMobile/TableProMobile/Sync/IOSSyncCoordinator.swift +++ b/TableProMobile/TableProMobile/Sync/IOSSyncCoordinator.swift @@ -17,15 +17,18 @@ final class IOSSyncCoordinator { private static let logger = Logger(subsystem: "com.TablePro", category: "Sync") - var status: SyncStatus = .idle + private(set) var status: SyncStatus var lastSyncDate: Date? @ObservationIgnored private let metadata: SyncMetadataStorage @ObservationIgnored private let recordCache: SyncRecordCache @ObservationIgnored private let makeTransport: () -> any IOSSyncTransport + @ObservationIgnored private let isEnabled: () -> Bool @ObservationIgnored private var transport: (any IOSSyncTransport)? @ObservationIgnored private var debounceTask: Task? + @ObservationIgnored private var runningSync: Task? @ObservationIgnored private var needsResync = false + @ObservationIgnored private var statusGeneration = 0 @ObservationIgnored private var editGenerations: [EditKey: Int] = [:] @ObservationIgnored var onConnectionsChanged: (([DatabaseConnection]) -> Void)? @@ -33,10 +36,6 @@ final class IOSSyncCoordinator { @ObservationIgnored var onTagsChanged: (([ConnectionTag]) -> Void)? @ObservationIgnored var getCurrentState: (() -> LibraryState?)? - /// Where the record cache lives, resolved by the app because the package cannot see it. - /// - /// The path is the one the package used to pick for itself, so a cache written by an earlier build is - /// still found rather than silently abandoned and re-fetched. private static var recordCacheDirectory: URL { let base = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first ?? URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true) @@ -49,11 +48,15 @@ final class IOSSyncCoordinator { directory: IOSSyncCoordinator.recordCacheDirectory, defaults: .standard ), - makeTransport: @escaping () -> any IOSSyncTransport = { CloudKitSyncEngine() } + makeTransport: @escaping () -> any IOSSyncTransport = { CloudKitSyncEngine() }, + isEnabled: @escaping () -> Bool = { AppPreferences.isCloudSyncEnabled } ) { self.metadata = metadata self.recordCache = recordCache self.makeTransport = makeTransport + self.isEnabled = isEnabled + self.status = isEnabled() ? .idle : .disabled(.userDisabled) + self.lastSyncDate = metadata.lastSyncDate } private func currentTransport() -> any IOSSyncTransport { @@ -63,65 +66,123 @@ final class IOSSyncCoordinator { return created } - // MARK: - Sync + var hasCompletedFirstSync: Bool { + lastSyncDate != nil + } - func sync(isRetry: Bool = false) async { - guard isRetry || status != .syncing else { + func accountStatus() async -> CKAccountStatus { + do { + return try await currentTransport().accountStatus() + } catch { + Self.logger.warning("iCloud account status unavailable: \(error.localizedDescription, privacy: .public)") + return .couldNotDetermine + } + } + + // MARK: - Enable / Disable + + func setEnabled(_ enabled: Bool) { + guard enabled else { + debounceTask?.cancel() + debounceTask = nil + needsResync = false + metadata.lastSyncDate = nil + lastSyncDate = nil + decide(.disabled(.userDisabled)) + return + } + decide(.idle) + guard runningSync == nil else { needsResync = true return } + Task { await sync() } + } + + // MARK: - Sync + + func sync() async { + guard isEnabled() else { + if status != .disabled(.userDisabled) { + decide(.disabled(.userDisabled)) + } + return + } + if let runningSync { + await runningSync.value + return + } + let run = Task { await performSync() } + runningSync = run + await run.value + } + + private func performSync() async { + defer { + runningSync = nil + drainResyncIfNeeded() + } guard getCurrentState?() != nil else { return } - status = .syncing - defer { drainResyncIfNeeded() } + let generation = decide(.syncing) + await attempt(generation: generation, isRetry: false) + } + private func attempt(generation: Int, isRetry: Bool) async { do { let transport = currentTransport() guard try await transport.accountStatus() == .available else { - status = .error(.accountUnavailable) + settle(.error(.accountUnavailable), from: generation) return } try await transport.ensureZoneExists() let remoteChanges = try await pull(using: transport) + guard generation == statusGeneration else { return } let connCount = remoteChanges.changedConnections.count let groupCount = remoteChanges.changedGroups.count let tagCount = remoteChanges.changedTags.count Self.logger.info("Pulled \(connCount) connections, \(groupCount) groups, \(tagCount) tags") guard applyRemoteChanges(remoteChanges) else { - status = .idle + settle(.idle, from: generation) return } + guard generation == statusGeneration else { return } try await push(using: transport) + guard generation == statusGeneration else { return } if let newToken = remoteChanges.newToken { metadata.saveToken(newToken) } - metadata.lastSyncDate = Date() lastSyncDate = metadata.lastSyncDate - status = .idle + settle(.idle, from: generation) } catch let error as SyncError where error == .tokenExpired { guard !isRetry else { - status = .error(.tokenExpired) + settle(.error(.tokenExpired), from: generation) return } metadata.saveToken(nil) - await sync(isRetry: true) + await attempt(generation: generation, isRetry: true) } catch { - status = .error(SyncError.from(error)) + settle(.error(SyncError.from(error)), from: generation) } } - // MARK: - Token Reset + @discardableResult + private func decide(_ outcome: SyncStatus) -> Int { + statusGeneration += 1 + status = outcome + return statusGeneration + } - func resetSyncToken() async { - debounceTask?.cancel() - metadata.saveToken(nil) - recordCache.removeAll() - Self.logger.info("Sync token cleared; forcing full pull from iCloud") - await sync() + private func settle(_ outcome: SyncStatus, from generation: Int) { + guard generation == statusGeneration else { + Self.logger.info("Discarding a sync outcome the status moved on from") + return + } + status = outcome } // MARK: - Dirty / Tombstone Tracking @@ -131,7 +192,7 @@ final class IOSSyncCoordinator { } func markDeleted(_ connectionId: UUID) { - metadata.addTombstone(connectionId.uuidString, type: .connection) + addTombstone(connectionId.uuidString, type: .connection) } func markDirtyGroup(_ groupId: UUID) { @@ -139,7 +200,7 @@ final class IOSSyncCoordinator { } func markDeletedGroup(_ groupId: UUID) { - metadata.addTombstone(groupId.uuidString, type: .group) + addTombstone(groupId.uuidString, type: .group) } func markDirtyTag(_ tagId: UUID) { @@ -147,7 +208,7 @@ final class IOSSyncCoordinator { } func markDeletedTag(_ tagId: UUID) { - metadata.addTombstone(tagId.uuidString, type: .tag) + addTombstone(tagId.uuidString, type: .tag) } private func markDirty(_ id: String, type: SyncRecordType) { @@ -155,6 +216,10 @@ final class IOSSyncCoordinator { metadata.markDirty(id, type: type) } + private func addTombstone(_ id: String, type: SyncRecordType) { + metadata.addTombstone(id, type: type) + } + private func drainResyncIfNeeded() { guard needsResync, status == .idle else { needsResync = false @@ -166,9 +231,17 @@ final class IOSSyncCoordinator { func scheduleSyncAfterChange() { debounceTask?.cancel() + guard isEnabled() else { + debounceTask = nil + return + } debounceTask = Task { try? await Task.sleep(nanoseconds: 2_000_000_000) guard !Task.isCancelled else { return } + guard runningSync == nil else { + needsResync = true + return + } await sync() } } @@ -193,7 +266,8 @@ final class IOSSyncCoordinator { var allDeletions: [CKRecord.ID] = [] let dirtyConnIDs = metadata.dirtyIds(for: .connection) - for connection in state.connections where dirtyConnIDs.contains(connection.id.uuidString) { + for connection in state.connections + where connection.participatesInSync && dirtyConnIDs.contains(connection.id.uuidString) { let recordID = SyncRecordMapper.recordID(type: .connection, id: connection.id.uuidString, in: zoneID) if let existing = recordCache.record(for: recordID) { SyncRecordMapper.updateRecord(existing, with: connection) diff --git a/TableProMobile/TableProMobile/TableProMobileApp.swift b/TableProMobile/TableProMobile/TableProMobileApp.swift index 4ae943c4eb..9dc3a4f55d 100644 --- a/TableProMobile/TableProMobile/TableProMobileApp.swift +++ b/TableProMobile/TableProMobile/TableProMobileApp.swift @@ -1,5 +1,4 @@ import BackgroundTasks -import CoreSpotlight import os import SwiftUI import TableProAnalytics @@ -11,6 +10,7 @@ struct TableProMobileApp: App { static let backgroundSyncIdentifier = "com.TablePro.sync" private static let backgroundLogger = Logger(subsystem: "com.TablePro", category: "BackgroundSync") + @UIApplicationDelegateAdaptor(TableProAppDelegate.self) private var appDelegate @State private var appState = AppState() @State private var lockState = AppLockState() @State private var syncTask: Task? @@ -18,54 +18,19 @@ struct TableProMobileApp: App { @State private var heartbeatTask: Task? @Environment(\.scenePhase) private var scenePhase + init() { + ConnectionListTips.configure() + } + var body: some Scene { WindowGroup { - ZStack { - SceneRootView(connectionManager: appState.connectionManager) - .environment(appState) - .blur(radius: lockState.isLocked ? 20 : 0) - .allowsHitTesting(!lockState.isLocked) - - if lockState.isLocked { - LockScreenView() - .environment(lockState) - .transition(.opacity) - } - } - .animation(.default, value: lockState.isLocked) - .hostKeyPrompt() - .entraSignInPrompt() - .onOpenURL { url in - if url.isFileURL, url.pathExtension.lowercased() == "tablepro" { - appState.pendingImportURL = url - return - } - guard url.scheme == "tablepro", - url.host(percentEncoded: false) == "connect", - let uuidString = url.pathComponents.dropFirst().first, - let uuid = UUID(uuidString: uuidString) else { return } - appState.pendingConnectionId = uuid - } - .onContinueUserActivity(CSSearchableItemActionType) { activity in - guard let identifier = activity.userInfo?[CSSearchableItemActivityIdentifier] as? String, - let uuid = UUID(uuidString: identifier) else { return } - appState.pendingConnectionId = uuid - } - .onContinueUserActivity("com.TablePro.viewConnection") { activity in - guard let connectionId = activity.userInfo?["connectionId"] as? String, - let uuid = UUID(uuidString: connectionId) else { return } - appState.pendingConnectionId = uuid - } - .onContinueUserActivity("com.TablePro.viewTable") { activity in - guard let connectionId = activity.userInfo?["connectionId"] as? String, - let uuid = UUID(uuidString: connectionId) else { return } - appState.pendingConnectionId = uuid - appState.pendingTableName = activity.userInfo?["tableName"] as? String - } + SceneRootView(connectionManager: appState.connectionManager) + .environment(appState) + .environment(lockState) + .hostKeyPrompt() + .entraSignInPrompt() } .onChange(of: scenePhase) { _, phase in - // Skip lifecycle side-effects under tests so unit tests do not - // boot CloudKit sync, analytics, or biometric checks. guard !TestRuntime.isActive else { return } lockState.handleScenePhase(phase) switch phase { @@ -74,27 +39,19 @@ struct TableProMobileApp: App { appState.backgroundRelease.cancelPreparation() MemoryPressureMonitor.shared.start() appState.retryLoadIfFailed() - if AppPreferences.isCloudSyncEnabled && appState.loadStatus == .ready { + if appState.onboarding.isCloudSyncEnabled && appState.loadStatus == .ready { syncTask?.cancel() syncTask = Task { await appState.syncCoordinator.sync() } } - if heartbeatTask == nil { - let provider = IOSAnalyticsProvider.shared - provider.attach(appState: appState) - let service = AnalyticsHeartbeatService(provider: provider) - heartbeatService = service - heartbeatTask = service.startPeriodicHeartbeat() - } + startHeartbeatIfConsented() case .inactive: appState.backgroundRelease.prepareForSuspension() case .background: syncTask?.cancel() syncTask = nil - heartbeatTask?.cancel() - heartbeatTask = nil - heartbeatService = nil + stopHeartbeat() Task { let released = await appState.backgroundRelease.releaseForSuspension() for connectionId in released { @@ -106,11 +63,34 @@ struct TableProMobileApp: App { break } } + .onChange(of: appState.onboarding.usageDataChoice) { _, choice in + guard !TestRuntime.isActive else { return } + guard choice == true else { + stopHeartbeat() + return + } + startHeartbeatIfConsented() + } .backgroundTask(.appRefresh(Self.backgroundSyncIdentifier)) { await runBackgroundSync() } } + private func startHeartbeatIfConsented() { + guard heartbeatTask == nil, appState.onboarding.isUsageDataEnabled else { return } + let provider = IOSAnalyticsProvider.shared + provider.attach(appState: appState) + let service = AnalyticsHeartbeatService(provider: provider) + heartbeatService = service + heartbeatTask = service.startPeriodicHeartbeat() + } + + private func stopHeartbeat() { + heartbeatTask?.cancel() + heartbeatTask = nil + heartbeatService = nil + } + private func scheduleBackgroundSync() { guard AppPreferences.isCloudSyncEnabled else { return } let request = BGAppRefreshTaskRequest(identifier: Self.backgroundSyncIdentifier) diff --git a/TableProMobile/TableProMobile/ViewModels/RowDetailViewModel.swift b/TableProMobile/TableProMobile/ViewModels/RowDetailViewModel.swift index fbbecbf6bf..5eb249c732 100644 --- a/TableProMobile/TableProMobile/ViewModels/RowDetailViewModel.swift +++ b/TableProMobile/TableProMobile/ViewModels/RowDetailViewModel.swift @@ -82,11 +82,6 @@ final class RowDetailViewModel { var supportsLazyLoading: Bool { loadFullValueProvider != nil } - var currentRowCells: [Cell] { - guard currentIndex >= 0, currentIndex < rows.count else { return [] } - return rows[currentIndex].cells - } - var currentRow: [String?] { row(at: currentIndex) } diff --git a/TableProMobile/TableProMobile/Views/AcknowledgementsView.swift b/TableProMobile/TableProMobile/Views/AcknowledgementsView.swift new file mode 100644 index 0000000000..0f308248b4 --- /dev/null +++ b/TableProMobile/TableProMobile/Views/AcknowledgementsView.swift @@ -0,0 +1,121 @@ +import SwiftUI + +struct AcknowledgementsView: View { + @State private var inventory: Loadable = .loading + + init() {} + + var body: some View { + content + .navigationTitle("Acknowledgements") + .task { loadInventoryIfNeeded() } + } + + @ViewBuilder + private var content: some View { + switch inventory { + case .loading: + ProgressView() + .frame(maxWidth: .infinity, maxHeight: .infinity) + case .loaded(let loaded) where !loaded.components.isEmpty: + componentList(loaded) + case .loaded, .failed: + ContentUnavailableView( + "No License Information", + systemImage: "doc.text.magnifyingglass", + description: Text("The list of open source libraries is missing from this build.") + ) + } + } + + private func componentList(_ inventory: AcknowledgementsInventory) -> some View { + List(inventory.components) { component in + NavigationLink { + AcknowledgementDetailView(component: component, inventory: inventory) + } label: { + AcknowledgementRow(component: component) + } + } + } + + private func loadInventoryIfNeeded() { + guard case .loading = inventory else { return } + do { + inventory = .loaded(try AcknowledgementsInventory.bundled()) + } catch { + inventory = .failed(error) + } + } +} + +private struct AcknowledgementRow: View { + let component: AcknowledgementComponent + + var body: some View { + LabeledContent { + Text(verbatim: component.displayVersion) + .lineLimit(1) + } label: { + Text(verbatim: component.name) + Text(verbatim: component.spdx) + } + } +} + +private struct AcknowledgementDetailView: View { + let component: AcknowledgementComponent + let inventory: AcknowledgementsInventory + + @State private var licenseText: Loadable = .loading + + var body: some View { + ScrollView { + VStack(alignment: .leading, spacing: 16) { + LabeledContent("Version") { + Text(verbatim: component.displayVersion) + } + LabeledContent("License") { + Text(verbatim: component.spdx) + } + if let homepage = component.homepage { + Link("Homepage", destination: homepage) + } + if !component.copyrights.isEmpty { + Text(component.copyrights.joined(separator: "\n")) + .font(.footnote.monospaced()) + } + licenseBlock + } + .frame(maxWidth: .infinity, alignment: .leading) + .padding() + } + .textSelection(.enabled) + .navigationTitle(component.name) + .navigationBarTitleDisplayMode(.inline) + .task { loadLicenseTextIfNeeded() } + } + + @ViewBuilder + private var licenseBlock: some View { + switch licenseText { + case .loading: + ProgressView() + case .loaded(let text): + Text(text) + .font(.caption.monospaced()) + case .failed: + Text("The license text is missing from this build.") + .font(.callout) + .foregroundStyle(.secondary) + } + } + + private func loadLicenseTextIfNeeded() { + guard case .loading = licenseText else { return } + do { + licenseText = .loaded(try inventory.licenseText(for: component)) + } catch { + licenseText = .failed(error) + } + } +} diff --git a/TableProMobile/TableProMobile/Views/Components/DatabaseIconView.swift b/TableProMobile/TableProMobile/Views/Components/DatabaseIconView.swift index b3cbda6805..fb35fae66c 100644 --- a/TableProMobile/TableProMobile/Views/Components/DatabaseIconView.swift +++ b/TableProMobile/TableProMobile/Views/Components/DatabaseIconView.swift @@ -1,27 +1,40 @@ import SwiftUI import TableProModels +import UIKit struct DatabaseIconView: View { let type: DatabaseType let size: CGFloat var tint: Color? + private static let fallbackSymbol = "cylinder.split.1x2" + var body: some View { - let name = type.iconName - if name.hasSuffix("-icon") { - Image(name) + if let assetName { + Image(assetName) .renderingMode(.template) .resizable() .scaledToFit() .frame(width: size, height: size) .foregroundStyle(color) } else { - Image(systemName: name) + Image(systemName: symbolName) .font(.system(size: size)) .foregroundStyle(color) } } + private var assetName: String? { + let name = type.iconName + guard name.hasSuffix("-icon"), UIImage(named: name) != nil else { return nil } + return name + } + + private var symbolName: String { + let name = type.iconName + return name.hasSuffix("-icon") ? Self.fallbackSymbol : name + } + var color: Color { tint ?? Self.color(for: type) } diff --git a/TableProMobile/TableProMobile/Views/Components/ErrorView.swift b/TableProMobile/TableProMobile/Views/Components/ErrorView.swift index 844a3f9570..79e8fadb2a 100644 --- a/TableProMobile/TableProMobile/Views/Components/ErrorView.swift +++ b/TableProMobile/TableProMobile/Views/Components/ErrorView.swift @@ -37,17 +37,3 @@ struct ErrorView: View { } } } - -struct ErrorToast: View { - let message: String - - var body: some View { - Label(message, systemImage: "exclamationmark.triangle") - .font(.subheadline) - .padding(.horizontal, 16) - .padding(.vertical, 10) - .background(.regularMaterial, in: Capsule()) - .padding(.bottom) - .transition(.move(edge: .bottom).combined(with: .opacity)) - } -} diff --git a/TableProMobile/TableProMobile/Views/ConnectedView.swift b/TableProMobile/TableProMobile/Views/ConnectedView.swift index 215fdcc099..b778038bd1 100644 --- a/TableProMobile/TableProMobile/Views/ConnectedView.swift +++ b/TableProMobile/TableProMobile/Views/ConnectedView.swift @@ -5,6 +5,7 @@ import TableProModels struct ConnectedView: View { @Environment(AppState.self) private var appState @Environment(ConnectionCoordinatorStore.self) private var coordinatorStore + @Environment(ScenePresenter.self) private var presenter @Environment(\.scenePhase) private var scenePhase @Environment(\.dismiss) private var dismiss let connection: DatabaseConnection @@ -50,7 +51,13 @@ struct ConnectedView: View { .task(id: coordinatorStore.revision) { let resolved = coordinatorStore.coordinator(for: connection, appState: appState) coordinator = resolved - if case .connected = resolved.phase { return } + if let table = presenter.takeTable(for: connection.id) { + resolved.pendingTableName = table + } + if case .connected = resolved.phase { + resolved.navigateToPendingTable() + return + } await resolved.connect() guard !Task.isCancelled else { return } if case .connected = resolved.phase { @@ -60,6 +67,11 @@ struct ConnectedView: View { hapticError.toggle() } } + .onChange(of: presenter.pendingTable) { _, _ in + guard let coordinator, let table = presenter.takeTable(for: connection.id) else { return } + coordinator.pendingTableName = table + coordinator.navigateToPendingTable() + } .onChange(of: scenePhase) { _, phase in if phase == .active { Task { await coordinator?.reconnectIfNeeded() } @@ -97,8 +109,10 @@ struct ConnectedView: View { private var connectingView: some View { VStack(spacing: 16) { ProgressView { - Text(String(format: String(localized: "Connecting to %@..."), - connection.name.isEmpty ? connection.host : connection.name)) + Text(String( + format: String(localized: "Connecting to %@..."), + connection.name.isEmpty ? connection.host : connection.name + )) } Button(String(localized: "Cancel"), role: .cancel) { coordinator?.cancelConnect() @@ -195,7 +209,7 @@ struct ConnectedView: View { } message: { Text(coordinator.failureAlertMessage ?? "") } - .userActivity("com.TablePro.viewConnection") { activity in + .userActivity(SceneIntent.viewConnectionActivity, isActive: !connection.isSample) { activity in activity.title = connection.name.isEmpty ? connection.host : connection.name activity.isEligibleForHandoff = true activity.userInfo = ["connectionId": connection.id.uuidString] @@ -218,7 +232,7 @@ struct ConnectedView: View { @ToolbarContentBuilder private func connectionToolbar(_ coordinator: ConnectionCoordinator) -> some ToolbarContent { - if coordinator.selectedTab == .info { + if coordinator.selectedTab == .info, !connection.isSample { ToolbarItem(placement: .topBarTrailing) { Button { coordinator.showingEditSheet = true diff --git a/TableProMobile/TableProMobile/Views/ConnectionListRow.swift b/TableProMobile/TableProMobile/Views/ConnectionListRow.swift index 68c13ac449..ba68b25b34 100644 --- a/TableProMobile/TableProMobile/Views/ConnectionListRow.swift +++ b/TableProMobile/TableProMobile/Views/ConnectionListRow.swift @@ -4,6 +4,7 @@ import TableProModels struct ConnectionListRow: View { @Environment(\.editMode) private var editMode + @Environment(\.dynamicTypeSize) private var dynamicTypeSize let model: ConnectionListRowModel let isRenaming: Bool @@ -44,8 +45,18 @@ struct ConnectionListRow: View { } } + private var lineLimit: Int? { + dynamicTypeSize.isAccessibilitySize ? nil : 1 + } + + private var contentLayout: AnyLayout { + dynamicTypeSize.isAccessibilitySize + ? AnyLayout(VStackLayout(alignment: .leading, spacing: 8)) + : AnyLayout(HStackLayout(spacing: 12)) + } + private var content: some View { - HStack(spacing: 12) { + contentLayout { ConnectionTile(type: model.type, color: model.color) VStack(alignment: .leading, spacing: 3) { @@ -53,13 +64,12 @@ struct ConnectionListRow: View { Text(model.detail) .font(.subheadline) .foregroundStyle(.secondary) - .lineLimit(1) + .lineLimit(lineLimit) if model.groupLabel != nil || !model.tags.isEmpty { - ConnectionRowLabels(model: model) + ConnectionRowLabels(model: model, lineLimit: lineLimit) } } - - Spacer(minLength: 8) + .frame(maxWidth: .infinity, alignment: .leading) if model.showsFavoriteMark { Image(systemName: "star.fill") @@ -94,7 +104,7 @@ struct ConnectionListRow: View { } else { Text(model.title) .font(.body) - .lineLimit(1) + .lineLimit(lineLimit) } } } @@ -103,10 +113,13 @@ struct ConnectionTile: View { let type: DatabaseType let color: ConnectionColor + @ScaledMetric(relativeTo: .body) private var side: CGFloat = 32 + @ScaledMetric(relativeTo: .body) private var iconSize: CGFloat = 18 + var body: some View { let hasColor = color != .none - DatabaseIconView(type: type, size: 18, tint: hasColor ? .white : nil) - .frame(width: 32, height: 32) + DatabaseIconView(type: type, size: iconSize, tint: hasColor ? .white : nil) + .frame(width: side, height: side) .background( hasColor ? ConnectionColorPicker.swiftUIColor(for: color) @@ -119,6 +132,7 @@ struct ConnectionTile: View { private struct ConnectionRowLabels: View { let model: ConnectionListRowModel + let lineLimit: Int? var body: some View { HStack(spacing: 10) { @@ -134,7 +148,7 @@ private struct ConnectionRowLabels: View { } .font(.caption) .foregroundStyle(.secondary) - .lineLimit(1) + .lineLimit(lineLimit) } } diff --git a/TableProMobile/TableProMobile/Views/ConnectionListStatusViews.swift b/TableProMobile/TableProMobile/Views/ConnectionListStatusViews.swift new file mode 100644 index 0000000000..2551817f6e --- /dev/null +++ b/TableProMobile/TableProMobile/Views/ConnectionListStatusViews.swift @@ -0,0 +1,131 @@ +import SwiftUI +import TableProSyncTransport + +struct ConnectionListEmptyActions { + let addConnection: () -> Void + let openSample: () -> Void + let turnOnICloud: (() -> Void)? + let importConnections: () -> Void + let retrySync: () -> Void + let retryLoad: () -> Void +} + +struct ConnectionListStatusView: View { + let state: ConnectionListState + let actions: ConnectionListEmptyActions + + var body: some View { + switch state { + case .loading: + ProgressView() + .frame(maxWidth: .infinity, maxHeight: .infinity) + case .failed: + failedView + case .checkingICloud: + checkingView + case .iCloudUnavailable(let error): + unavailableView(error) + case .empty(let syncsWithICloud): + emptyView(syncsWithICloud: syncsWithICloud) + case .content: + EmptyView() + } + } + + private var failedView: some View { + ContentUnavailableView { + Label("Connections Unavailable", systemImage: "exclamationmark.triangle") + } description: { + Text("TablePro could not read your saved connections. Nothing on this device has been changed.") + } actions: { + Button("Try Again", action: actions.retryLoad) + .buttonStyle(.borderedProminent) + } + } + + private var checkingView: some View { + ContentUnavailableView { + Label { + Text("Checking iCloud") + } icon: { + ProgressView() + .controlSize(.large) + } + } description: { + Text("Connections from your other devices appear here.") + } + } + + private func unavailableView(_ error: SyncError) -> some View { + ContentUnavailableView { + Label("iCloud Unavailable", systemImage: "exclamationmark.icloud") + } description: { + Text(ConnectionListSyncMessage.text(for: error)) + } actions: { + Button("Try Again", action: actions.retrySync) + .buttonStyle(.borderedProminent) + Button("Add Connection", action: actions.addConnection) + .buttonStyle(.bordered) + } + } + + private func emptyView(syncsWithICloud: Bool) -> some View { + ContentUnavailableView { + Label("No Connections", systemImage: "server.rack") + } description: { + if syncsWithICloud { + Text("Connections you add here or in TablePro on your Mac appear on all your devices.") + } else { + Text("Add a connection to your database, or explore TablePro with the sample database.") + } + } actions: { + Button("Add Connection", action: actions.addConnection) + .buttonStyle(.borderedProminent) + .accessibilityIdentifier("empty-add-connection") + Button("Open Sample Database", action: actions.openSample) + .buttonStyle(.bordered) + .accessibilityIdentifier("empty-open-sample") + if let turnOnICloud = actions.turnOnICloud { + Button("Turn On iCloud Sync", action: turnOnICloud) + .buttonStyle(.bordered) + .accessibilityIdentifier("empty-turn-on-icloud") + } else { + Button("Import Connections", action: actions.importConnections) + .buttonStyle(.bordered) + .accessibilityIdentifier("empty-import-connections") + } + } + } +} + +struct ConnectionListSyncProblemRow: View { + let error: SyncError + let retry: () -> Void + + var body: some View { + HStack(alignment: .firstTextBaseline, spacing: 12) { + Label { + Text(ConnectionListSyncMessage.text(for: error)) + .font(.subheadline) + } icon: { + Image(systemName: "exclamationmark.icloud") + .foregroundStyle(.orange) + } + .frame(maxWidth: .infinity, alignment: .leading) + Button("Try Again", action: retry) + .buttonStyle(.borderless) + .font(.subheadline) + } + } +} + +enum ConnectionListSyncMessage { + static func text(for error: SyncError) -> String { + switch error { + case .accountUnavailable: + return String(localized: "Sign in to iCloud in the Settings app to sync your connections.") + default: + return error.localizedDescription + } + } +} diff --git a/TableProMobile/TableProMobile/Views/ConnectionListView.swift b/TableProMobile/TableProMobile/Views/ConnectionListView.swift index 820d2cd2ae..86345898be 100644 --- a/TableProMobile/TableProMobile/Views/ConnectionListView.swift +++ b/TableProMobile/TableProMobile/Views/ConnectionListView.swift @@ -1,8 +1,10 @@ +import CloudKit import SwiftUI import TableProConnectionLibrary import TableProImport import TableProModels import TableProSyncTransport +import TipKit import UniformTypeIdentifiers nonisolated struct ConnectionTagToken: Identifiable, Hashable, Sendable { @@ -10,51 +12,28 @@ nonisolated struct ConnectionTagToken: Identifiable, Hashable, Sendable { let name: String } -private enum ConnectionListSheet: Identifiable { - case addConnection - case editConnection(DatabaseConnection) - case moveConnections([UUID]) - case newGroup(parentId: UUID?) - case editGroup(ConnectionGroup) - case groups - case tags - case settings - case importFile(URL) - case export - - var id: String { - switch self { - case .addConnection: "addConnection" - case .editConnection(let connection): "editConnection-\(connection.id.uuidString)" - case .moveConnections(let ids): "moveConnections-\(ids.map(\.uuidString).joined(separator: ","))" - case .newGroup(let parentId): "newGroup-\(parentId?.uuidString ?? "root")" - case .editGroup(let group): "editGroup-\(group.id.uuidString)" - case .groups: "groups" - case .tags: "tags" - case .settings: "settings" - case .importFile(let url): "importFile-\(url.absoluteString)" - case .export: "export" - } - } -} - struct ConnectionListView: View { @Environment(AppState.self) private var appState + @Environment(AppLockState.self) private var lockState @Environment(ConnectionCoordinatorStore.self) private var coordinatorStore + @Environment(ScenePresenter.self) private var presenter @SceneStorage("lastConnectionId") private var selectedConnectionIdString: String? - @AppStorage(AppPreferences.cloudSyncEnabledKey) private var cloudSyncEnabled = true @State private var searchText = "" @State private var searchTokens: [ConnectionTagToken] = [] @State private var matchesAllTags = false @State private var editMode: EditMode = .inactive @State private var selection: Set = [] - @State private var renamingConnectionId: UUID? - @State private var activeSheet: ConnectionListSheet? + @State private var renamingRow: LibraryRowID? @State private var connectionsPendingDeletion: Set = [] @State private var groupPendingDeletion: ConnectionGroup? + @State private var isConfirmingSampleReset = false @State private var showingFileImporter = false + @State private var importAfterCoverDismissal: URL? @State private var importResultCount: Int? + @State private var actionErrorMessage: String? + @State private var iCloudAccountAvailable = false + @State private var tips = ConnectionListTips.makeGroup() private var selectedConnectionUUID: UUID? { selectedConnectionIdString.flatMap { UUID(uuidString: $0) } @@ -63,21 +42,35 @@ struct ConnectionListView: View { private var openConnection: Binding { Binding( get: { - guard let id = selectedConnectionUUID else { return nil } + guard !presenter.holdsConnectionRestore, let id = selectedConnectionUUID else { return nil } return appState.connections.first { $0.id == id } }, set: { selectedConnectionIdString = $0?.id.uuidString } ) } - private var isSyncing: Bool { - appState.syncCoordinator.status == .syncing + private var isSyncEnabled: Bool { + appState.onboarding.isCloudSyncEnabled } private var isEditing: Bool { editMode == .active } + private var hasLibraryItems: Bool { + !appState.connections.isEmpty || !appState.groups.isEmpty + } + + private var listState: ConnectionListState { + ConnectionListState.resolve( + loadStatus: appState.loadStatus, + hasLibraryItems: hasLibraryItems, + isSyncEnabled: isSyncEnabled, + syncStatus: appState.syncCoordinator.status, + hasCompletedFirstSync: appState.syncCoordinator.hasCompletedFirstSync + ) + } + private var query: LibraryQuery { LibraryQuery( text: searchText, @@ -115,32 +108,60 @@ struct ConnectionListView: View { } } + private var tipInputs: [Int] { + [ + appState.onboarding.hasSeenWelcome && presenter.sheet == nil ? 1 : 0, + appState.connections.count, + appState.connections.contains(where: \.isFavorite) ? 1 : 0, + appState.connections.contains { !$0.tagIds.isEmpty } ? 1 : 0 + ] + } + var body: some View { + @Bindable var presenter = presenter NavigationStack { content .navigationTitle("Connections") .toolbar { toolbarContent } - .onChange(of: appState.pendingConnectionId) { _, newId in - navigateToPendingConnection(newId) - } .onChange(of: editMode) { _, mode in guard mode == .inactive else { return } selection = [] } + .onChange(of: hasLibraryItems) { _, hasItems in + guard !hasItems else { return } + editMode = .inactive + selection = [] + } .onChange(of: appState.tags) { _, tags in let known = Set(tags.map(\.id)) searchTokens.removeAll { !known.contains($0.id) } } - .onAppear { - navigateToPendingConnection(appState.pendingConnectionId) - presentPendingImport() + .onChange(of: searchTokens) { _, tokens in + guard !tokens.isEmpty else { return } + ConnectionListTips.tagFilterUsed() + } + .task(id: tipInputs) { + ConnectionListTips.libraryChanged( + isListReady: tipInputs[0] == 1, + connectionCount: tipInputs[1], + hasFavorites: tipInputs[2] == 1, + hasTaggedConnections: tipInputs[3] == 1 + ) + } + .task(id: isSyncEnabled) { + guard !isSyncEnabled else { return } + iCloudAccountAvailable = await appState.syncCoordinator.accountStatus() == .available + } + .task { + presenter.beginLaunch(with: appState) + deliverPendingIntent() } } - .fullScreenCover(item: openConnection) { connection in + .fullScreenCover(item: openConnection, onDismiss: presentImportAfterCoverDismissal) { connection in ConnectedView(connection: connection) .id(connection.id) } - .sheet(item: $activeSheet) { sheet in + .sheet(item: $presenter.sheet, onDismiss: sheetDidDismiss) { sheet in sheetContent(sheet) } .fileImporter( @@ -149,46 +170,75 @@ struct ConnectionListView: View { allowsMultipleSelection: false ) { result in guard case .success(let urls) = result, let url = urls.first else { return } - activeSheet = .importFile(url) + presenter.present(.importFile(url)) } - .onChange(of: appState.pendingImportURL) { _, _ in - presentPendingImport() + .onChange(of: presenter.pendingIntent) { _, _ in + deliverPendingIntent() + } + .onChange(of: presenter.holdsConnectionRestore) { _, _ in + deliverPendingIntent() + } + .onChange(of: lockState.isLocked) { _, _ in + deliverPendingIntent() + } + .onChange(of: appState.loadStatus) { _, _ in + deliverPendingIntent() } .alert(importResultMessage, isPresented: importResultPresented) { Button(String(localized: "OK")) { importResultCount = nil } } + .alert( + String(localized: "Sample Database Unavailable"), + isPresented: actionErrorPresented + ) { + Button(String(localized: "OK")) { actionErrorMessage = nil } + } message: { + Text(actionErrorMessage ?? "") + } } // MARK: - Content @ViewBuilder private var content: some View { - if appState.connections.isEmpty && !isSyncing { - ContentUnavailableView { - Label("No Connections", systemImage: "server.rack") - } description: { - Text("Add a database connection to get started.") - } actions: { - Button("Add Connection") { - activeSheet = .addConnection - } - .buttonStyle(.borderedProminent) - } - } else if appState.connections.isEmpty { - ProgressView("Syncing from iCloud...") - .frame(maxWidth: .infinity, maxHeight: .infinity) - } else { - libraryList + switch listState { + case .content(let syncProblem): + libraryList(syncProblem: syncProblem) + default: + ConnectionListStatusView(state: listState, actions: emptyActions) } } - private var libraryList: some View { + private var emptyActions: ConnectionListEmptyActions { + ConnectionListEmptyActions( + addConnection: { presenter.present(.addConnection) }, + openSample: openSampleDatabase, + turnOnICloud: !isSyncEnabled && iCloudAccountAvailable ? { appState.setCloudSyncEnabled(true) } : nil, + importConnections: { showingFileImporter = true }, + retrySync: { Task { await appState.syncCoordinator.sync() } }, + retryLoad: { appState.retryLoadIfFailed() } + ) + } + + private func libraryList(syncProblem: SyncError?) -> some View { let outline = outline let connectionsById = Dictionary(appState.connections.map { ($0.id, $0) }, uniquingKeysWith: { first, _ in first }) let groupsById = Dictionary(appState.groups.map { ($0.id, $0) }, uniquingKeysWith: { first, _ in first }) let canReorder = appState.libraryPreferences.sortMode == .manual && !outline.isQueryActive return List(selection: $selection) { + if let syncProblem { + Section { + ConnectionListSyncProblemRow(error: syncProblem) { + Task { await appState.syncCoordinator.sync() } + } + } + } + if !outline.isQueryActive, !isEditing, let tip = tips.currentTip { + Section { + TipView(tip) + } + } ForEach(outline.sections, id: \.kind) { section in Section { switch section.kind { @@ -233,10 +283,9 @@ struct ConnectionListView: View { ) { token in Label(token.name, systemImage: "tag") } - .refreshable { - guard cloudSyncEnabled else { return } + .modifier(SyncRefreshModifier(isEnabled: isSyncEnabled) { await appState.syncCoordinator.sync() - } + }) .confirmationDialog(deletionTitle, isPresented: deletionPresented, titleVisibility: .visible) { Button(String(localized: "Delete"), role: .destructive) { confirmConnectionDeletion() @@ -266,6 +315,17 @@ struct ConnectionListView: View { Text("Connections in this group will be moved to ungrouped.") } } + .confirmationDialog( + String(localized: "Reset Sample Database?"), + isPresented: $isConfirmingSampleReset, + titleVisibility: .visible + ) { + Button(String(localized: "Reset"), role: .destructive) { + resetSampleDatabase() + } + } message: { + Text("Every change you made to the sample database is replaced with the original data.") + } } @ViewBuilder @@ -274,15 +334,7 @@ struct ConnectionListView: View { case .favorites: Text("Favorites") case .recent: - HStack { - Text("Recent") - Spacer() - Button("Clear") { - appState.libraryPreferences.clearRecent() - } - .font(.subheadline) - .textCase(nil) - } + Text("Recent") default: Text("Connections") .frame(maxWidth: .infinity, alignment: .leading) @@ -298,6 +350,7 @@ struct ConnectionListView: View { @ViewBuilder private func connectionRow(_ connection: DatabaseConnection?, section: LibrarySectionKind) -> some View { if let connection { + let rowId = LibraryRowID.connection(connection.id, section: section) ConnectionListRow( model: ConnectionListRowModel( connection: connection, @@ -305,22 +358,24 @@ struct ConnectionListView: View { tags: appState.tags, groups: appState.groups ), - isRenaming: renamingConnectionId == connection.id, - onOpen: { selectedConnectionIdString = connection.id.uuidString }, - onCommitRename: { commitRename(connection.id, name: $0) }, - onCancelRename: { renamingConnectionId = nil } + isRenaming: renamingRow == rowId, + onOpen: { open(connection.id) }, + onCommitRename: { commitRename(rowId, connectionId: connection.id, name: $0) }, + onCancelRename: { renamingRow = nil } ) - .tag(LibraryRowID.connection(connection.id, section: section)) + .tag(rowId) .draggable(connection.id.uuidString) .swipeActions(edge: .leading) { favoriteButton(for: connection) .tint(.yellow) - Button { - activeSheet = .editConnection(connection) - } label: { - Label("Edit", systemImage: "pencil") + if !connection.isSample { + Button { + presenter.present(.editConnection(connection)) + } label: { + Label("Edit", systemImage: "slider.horizontal.3") + } + .tint(.blue) } - .tint(.blue) } .swipeActions(edge: .trailing, allowsFullSwipe: false) { trailingSwipeAction(for: connection, section: section) @@ -329,7 +384,8 @@ struct ConnectionListView: View { connectionMenu(for: connection, section: section) } .renameAction { - renamingConnectionId = connection.id + ConnectionListTips.connectionMenuUsed() + renamingRow = rowId } } } @@ -342,15 +398,31 @@ struct ConnectionListView: View { .dropDestination(for: String.self) { items, _ in moveDropped(items, toGroup: group.id) } + .swipeActions(edge: .leading) { + Button { + presenter.present(.editGroup(group)) + } label: { + Label("Edit", systemImage: "pencil") + } + .tint(.blue) + } + .swipeActions(edge: .trailing, allowsFullSwipe: false) { + Button { + groupPendingDeletion = group + } label: { + Label("Delete", systemImage: "trash") + } + .tint(.red) + } .contextMenu { Button { - activeSheet = .editGroup(group) + presenter.present(.editGroup(group)) } label: { Label("Edit Group", systemImage: "pencil") } if LibraryGroupGraph(groups: appState.groups).canCreateSubgroup(under: group.id) { Button { - activeSheet = .newGroup(parentId: group.id) + presenter.present(.newGroup(parentId: group.id)) } label: { Label("New Subgroup", systemImage: "folder.badge.plus") } @@ -362,6 +434,9 @@ struct ConnectionListView: View { Label("Delete Group", systemImage: "trash") } } + .accessibilityAction(named: Text("Delete Group")) { + groupPendingDeletion = group + } } } @@ -369,6 +444,9 @@ struct ConnectionListView: View { private func favoriteButton(for connection: DatabaseConnection) -> some View { Button { appState.setFavorite([connection.id], isFavorite: !connection.isFavorite) + if !connection.isFavorite { + ConnectionListTips.favoriteSet() + } } label: { if connection.isFavorite { Label("Remove from Favorites", systemImage: "star.slash") @@ -401,25 +479,32 @@ struct ConnectionListView: View { @ViewBuilder private func connectionMenu(for connection: DatabaseConnection, section: LibrarySectionKind) -> some View { Button { - selectedConnectionIdString = connection.id.uuidString + open(connection.id) } label: { Label("Open", systemImage: "arrow.right.circle") } - Button { - activeSheet = .editConnection(connection) - } label: { - Label("Edit", systemImage: "pencil") + if !connection.isSample { + Button { + ConnectionListTips.connectionMenuUsed() + presenter.present(.editConnection(connection)) + } label: { + Label("Edit", systemImage: "slider.horizontal.3") + } } RenameButton() - Button { - appState.duplicateConnection(connection) - } label: { - Label("Duplicate", systemImage: "doc.on.doc") + if !connection.isSample { + Button { + ConnectionListTips.connectionMenuUsed() + appState.duplicateConnection(connection) + } label: { + Label("Duplicate", systemImage: "doc.on.doc") + } } Divider() favoriteButton(for: connection) Button { - activeSheet = .moveConnections([connection.id]) + ConnectionListTips.connectionMenuUsed() + presenter.present(.moveConnections([connection.id])) } label: { Label("Move to Group", systemImage: "folder") } @@ -430,6 +515,13 @@ struct ConnectionListView: View { Label("Remove from Recent", systemImage: "clock.badge.xmark") } } + if connection.isSample { + Button { + isConfirmingSampleReset = true + } label: { + Label("Reset Database", systemImage: "arrow.counterclockwise") + } + } Divider() Button(role: .destructive) { connectionsPendingDeletion = [connection.id] @@ -442,9 +534,16 @@ struct ConnectionListView: View { @ToolbarContentBuilder private var toolbarContent: some ToolbarContent { + ToolbarItem(placement: .topBarLeading) { + Button { + presenter.present(.settings) + } label: { + Label("Settings", systemImage: "gear") + } + } ToolbarItemGroup(placement: .topBarTrailing) { moreMenu - if !appState.connections.isEmpty { + if hasLibraryItems { Button(isEditing ? String(localized: "Done") : String(localized: "Edit")) { withAnimation { editMode = isEditing ? .inactive : .active @@ -452,43 +551,18 @@ struct ConnectionListView: View { } } Button { - activeSheet = .addConnection + presenter.present(.addConnection) } label: { - Image(systemName: "plus") + Label("Add Connection", systemImage: "plus") } .keyboardShortcut("n", modifiers: .command) - .accessibilityLabel(Text("Add Connection")) - } - ToolbarItemGroup(placement: .topBarLeading) { - Button { - Task { - await appState.syncCoordinator.sync() - } - } label: { - if isSyncing { - ProgressView() - .controlSize(.small) - } else { - Image(systemName: cloudSyncEnabled - ? "arrow.triangle.2.circlepath.icloud" - : "icloud.slash") - } - } - .disabled(isSyncing || !cloudSyncEnabled) - .accessibilityLabel(Text("Sync with iCloud")) - - Button { - activeSheet = .settings - } label: { - Image(systemName: "gear") - } - .accessibilityLabel(Text("Settings")) + .disabled(!appState.isLibraryWritable) } if isEditing { ToolbarItemGroup(placement: .bottomBar) { let ids = selectedConnectionIds Button("Move") { - activeSheet = .moveConnections(ids) + presenter.present(.moveConnections(ids)) } .disabled(ids.isEmpty) Spacer() @@ -529,71 +603,65 @@ struct ConnectionListView: View { } .pickerStyle(.menu) - if !appState.tags.isEmpty { - Section("Filter by Tag") { - ForEach(appState.tags) { tag in - Toggle(isOn: tokenBinding(for: tag)) { - Text(verbatim: tag.name) - } - } - if searchTokens.count > 1 { - Toggle("Match All Tags", isOn: $matchesAllTags) - } - } + if searchTokens.count > 1 { + Toggle("Match All Tags", isOn: $matchesAllTags) } Section { Button { - activeSheet = .newGroup(parentId: nil) + presenter.present(.newGroup(parentId: nil)) } label: { Label("New Group", systemImage: "folder.badge.plus") } Button { - activeSheet = .groups - } label: { - Label("Manage Groups", systemImage: "folder") - } - Button { - activeSheet = .tags + presenter.present(.tags) } label: { Label("Manage Tags", systemImage: "tag") } } + .disabled(!appState.isLibraryWritable) Section { + Button(action: openSampleDatabase) { + Label("Open Sample Database", systemImage: "music.note.list") + } Button { showingFileImporter = true } label: { Label("Import Connections", systemImage: "square.and.arrow.down") } + .disabled(!appState.isLibraryWritable) Button { - activeSheet = .export + presenter.present(.export) } label: { Label("Export Connections", systemImage: "square.and.arrow.up") } - .disabled(appState.connections.isEmpty) + .disabled(!appState.connections.contains(where: \.participatesInSync)) } } label: { - Image(systemName: "ellipsis.circle") + Label("More", systemImage: "ellipsis.circle") } - .accessibilityLabel(Text("More")) } // MARK: - Sheets @ViewBuilder - private func sheetContent(_ sheet: ConnectionListSheet) -> some View { + private func sheetContent(_ sheet: SceneSheet) -> some View { switch sheet { + case .firstRun(let pages): + FirstRunSheet(pages: pages) + case .whatsNew(let version): + WhatsNewSheet(version: version) case .addConnection: ConnectionFormView { connection in appState.addConnection(connection) - activeSheet = nil + presenter.sheet = nil } case .editConnection(let connection): ConnectionFormView(editing: connection) { updated in appState.updateConnection(updated) coordinatorStore.invalidate(updated.id) - activeSheet = nil + presenter.sheet = nil } case .moveConnections(let ids): MoveToGroupSheet(connectionIds: ids) @@ -605,17 +673,15 @@ struct ConnectionListView: View { GroupFormSheet(editing: group) { updated in appState.updateGroup(updated) } - case .groups: - GroupManagementView() case .tags: TagManagementView() case .settings: NavigationStack { SettingsView() .toolbar { - ToolbarItem(placement: .confirmationAction) { + ToolbarItem(placement: .topBarTrailing) { CloseButton { - activeSheet = nil + presenter.sheet = nil } } } @@ -626,7 +692,7 @@ struct ConnectionListView: View { } .environment(appState) case .export: - MobileConnectionExportSheet(connections: appState.connections) + MobileConnectionExportSheet(connections: appState.connections.filter(\.participatesInSync)) .environment(appState) } } @@ -640,17 +706,6 @@ struct ConnectionListView: View { ) } - private func tokenBinding(for tag: ConnectionTag) -> Binding { - Binding( - get: { searchTokens.contains { $0.id == tag.id } }, - set: { isOn in - searchTokens.removeAll { $0.id == tag.id } - guard isOn else { return } - searchTokens.append(ConnectionTagToken(id: tag.id, name: tag.name)) - } - ) - } - private func groupExpansion(_ groupId: UUID, outline: LibraryOutline) -> Binding { Binding( get: { @@ -688,6 +743,13 @@ struct ConnectionListView: View { ) } + private var actionErrorPresented: Binding { + Binding( + get: { actionErrorMessage != nil }, + set: { if !$0 { actionErrorMessage = nil } } + ) + } + private var importResultMessage: String { let count = importResultCount ?? 0 return count == 1 @@ -697,6 +759,31 @@ struct ConnectionListView: View { // MARK: - Actions + private func open(_ connectionId: UUID) { + ConnectionListTips.connectionOpened() + selectedConnectionIdString = connectionId.uuidString + } + + private func openSampleDatabase() { + do { + let sampleId = try appState.openSampleDatabase() + presenter.requestTable(SampleDatabaseInstaller.startingTable, in: sampleId) + open(sampleId) + } catch { + actionErrorMessage = error.localizedDescription + } + } + + private func resetSampleDatabase() { + Task { + do { + try await appState.resetSampleDatabase() + } catch { + actionErrorMessage = error.localizedDescription + } + } + } + private func reorderFavorites(_ ids: [UUID]) -> (IndexSet, Int) -> Void { { source, destination in var ordered = ids @@ -714,10 +801,10 @@ struct ConnectionListView: View { return true } - private func commitRename(_ id: UUID, name: String) { - guard renamingConnectionId == id else { return } - renamingConnectionId = nil - appState.renameConnection(id, to: name) + private func commitRename(_ rowId: LibraryRowID, connectionId: UUID, name: String) { + guard renamingRow == rowId else { return } + renamingRow = nil + appState.renameConnection(connectionId, to: name) } private func confirmConnectionDeletion() { @@ -733,16 +820,47 @@ struct ConnectionListView: View { connectionsPendingDeletion = [] } - private func presentPendingImport() { - guard let url = appState.pendingImportURL else { return } - appState.pendingImportURL = nil - activeSheet = .importFile(url) + private func sheetDidDismiss() { + presenter.sheetDidDismiss(appState: appState) + deliverPendingIntent() + } + + private func deliverPendingIntent() { + guard let intent = presenter.takeDeliverableIntent( + isLocked: lockState.isLocked, + isLibraryWritable: appState.isLibraryWritable + ) else { return } + switch intent { + case .openConnection(let connectionId, let table): + guard appState.connections.contains(where: { $0.id == connectionId }) else { return } + presenter.requestTable(table, in: connectionId) + open(connectionId) + case .importConnections(let url): + guard selectedConnectionUUID != nil else { + presenter.present(.importFile(url)) + return + } + importAfterCoverDismissal = url + selectedConnectionIdString = nil + } + } + + private func presentImportAfterCoverDismissal() { + guard let url = importAfterCoverDismissal else { return } + importAfterCoverDismissal = nil + presenter.present(.importFile(url)) } +} - private func navigateToPendingConnection(_ id: UUID?) { - guard let id, - appState.connections.contains(where: { $0.id == id }) else { return } - selectedConnectionIdString = id.uuidString - appState.pendingConnectionId = nil +private struct SyncRefreshModifier: ViewModifier { + let isEnabled: Bool + let refresh: @Sendable () async -> Void + + func body(content: Content) -> some View { + if isEnabled { + content.refreshable(action: refresh) + } else { + content + } } } diff --git a/TableProMobile/TableProMobile/Views/DataBrowserView.swift b/TableProMobile/TableProMobile/Views/DataBrowserView.swift index 7bd997e7bd..26e6351ed6 100644 --- a/TableProMobile/TableProMobile/Views/DataBrowserView.swift +++ b/TableProMobile/TableProMobile/Views/DataBrowserView.swift @@ -76,7 +76,7 @@ struct DataBrowserView: View { var body: some View { @Bindable var viewModel = viewModel return searchableContent - .userActivity("com.TablePro.viewTable") { activity in + .userActivity(SceneIntent.viewTableActivity, isActive: !connection.isSample) { activity in activity.title = table.name activity.isEligibleForHandoff = true activity.userInfo = [ diff --git a/TableProMobile/TableProMobile/Views/GroupManagementView.swift b/TableProMobile/TableProMobile/Views/GroupManagementView.swift deleted file mode 100644 index 5ab1abb586..0000000000 --- a/TableProMobile/TableProMobile/Views/GroupManagementView.swift +++ /dev/null @@ -1,161 +0,0 @@ -import SwiftUI -import TableProConnectionLibrary -import TableProModels - -struct GroupManagementView: View { - private struct GroupRow: Identifiable { - let group: ConnectionGroup - let depth: Int - var id: UUID { group.id } - } - - private enum GroupSheet: Identifiable { - case add(parentId: UUID?) - case edit(ConnectionGroup) - - var id: String { - switch self { - case .add(let parentId): "add-\(parentId?.uuidString ?? "root")" - case .edit(let group): "edit-\(group.id.uuidString)" - } - } - } - - @Environment(AppState.self) private var appState - @Environment(\.dismiss) private var dismiss - @State private var activeSheet: GroupSheet? - @State private var groupToDelete: ConnectionGroup? - - private var showDeleteConfirmation: Binding { - Binding( - get: { groupToDelete != nil }, - set: { if !$0 { groupToDelete = nil } } - ) - } - - var body: some View { - let graph = LibraryGroupGraph(groups: appState.groups) - let groupsById = Dictionary(appState.groups.map { ($0.id, $0) }, uniquingKeysWith: { first, _ in first }) - let rows = graph.flattened().compactMap { entry in - groupsById[entry.id].map { GroupRow(group: $0, depth: entry.depth) } - } - let counts = Dictionary(grouping: appState.connections.compactMap(\.groupId), by: { $0 }).mapValues(\.count) - - NavigationStack { - List { - ForEach(rows) { row in - groupRow(row, count: counts[row.id] ?? 0, canNest: graph.canCreateSubgroup(under: row.id)) - } - .onMove { source, destination in - reorder(rows: rows, graph: graph, source: source, destination: destination) - } - } - .overlay { - if appState.groups.isEmpty { - ContentUnavailableView { - Label("No Groups", systemImage: "folder") - } description: { - Text("Create a group to organize your connections.") - } actions: { - Button("Create Group") { activeSheet = .add(parentId: nil) } - .buttonStyle(.borderedProminent) - } - } - } - .confirmationDialog( - String(localized: "Delete Group"), - isPresented: showDeleteConfirmation, - titleVisibility: .visible - ) { - Button(String(localized: "Delete"), role: .destructive) { - if let group = groupToDelete { - appState.deleteGroup(group.id) - } - } - } message: { - if let group = groupToDelete, !graph.descendantIds(of: group.id).isEmpty { - Text("Its subgroups are deleted too. Their connections move to Ungrouped.") - } else { - Text("Connections in this group will be moved to ungrouped.") - } - } - .navigationTitle("Groups") - .navigationBarTitleDisplayMode(.inline) - .toolbar { - ToolbarItem(placement: .topBarLeading) { - EditButton() - } - ToolbarItemGroup(placement: .topBarTrailing) { - Button { - activeSheet = .add(parentId: nil) - } label: { - Image(systemName: "plus") - } - .accessibilityLabel(Text("Add Group")) - CloseButton { dismiss() } - } - } - .sheet(item: $activeSheet) { sheet in - switch sheet { - case .add(let parentId): - GroupFormSheet(parentId: parentId) { group in - appState.addGroup(group) - } - case .edit(let group): - GroupFormSheet(editing: group) { updated in - appState.updateGroup(updated) - } - } - } - } - } - - private func groupRow(_ row: GroupRow, count: Int, canNest: Bool) -> some View { - Button { - activeSheet = .edit(row.group) - } label: { - ConnectionGroupRowLabel(group: row.group, connectionCount: count) - .padding(.leading, CGFloat(row.depth) * 20) - .foregroundStyle(.primary) - } - .swipeActions(edge: .trailing, allowsFullSwipe: false) { - Button { - groupToDelete = row.group - } label: { - Label("Delete", systemImage: "trash") - } - .tint(.red) - } - .contextMenu { - Button { - activeSheet = .edit(row.group) - } label: { - Label("Edit Group", systemImage: "pencil") - } - if canNest { - Button { - activeSheet = .add(parentId: row.id) - } label: { - Label("New Subgroup", systemImage: "folder.badge.plus") - } - } - Divider() - Button(role: .destructive) { - groupToDelete = row.group - } label: { - Label("Delete Group", systemImage: "trash") - } - } - .accessibilityAction(named: Text("Delete group")) { - groupToDelete = row.group - } - } - - private func reorder(rows: [GroupRow], graph: LibraryGroupGraph, source: IndexSet, destination: Int) { - guard let movedIndex = source.first, rows.indices.contains(movedIndex) else { return } - let parentId = graph.parentId(of: rows[movedIndex].id) - var ordered = rows.map(\.id) - ordered.move(fromOffsets: source, toOffset: destination) - appState.reorderGroups(ordered.filter { graph.parentId(of: $0) == parentId }) - } -} diff --git a/TableProMobile/TableProMobile/Views/LockScreenView.swift b/TableProMobile/TableProMobile/Views/LockScreenView.swift index 0beb7210d6..3fe77e27ff 100644 --- a/TableProMobile/TableProMobile/Views/LockScreenView.swift +++ b/TableProMobile/TableProMobile/Views/LockScreenView.swift @@ -16,10 +16,12 @@ struct LockScreenView: View { .font(.system(size: 56)) .foregroundStyle(.tint) .symbolRenderingMode(.hierarchical) + .accessibilityHidden(true) VStack(spacing: 6) { - Text("TablePro is Locked") + Text("TablePro Is Locked") .font(.title2.weight(.semibold)) + .accessibilityAddTraits(.isHeader) Text("Authenticate to access your database connections.") .font(.subheadline) .foregroundStyle(.secondary) @@ -30,11 +32,8 @@ struct LockScreenView: View { Button { Task { await unlock() } } label: { - Label( - didFail ? String(localized: "Try Again") : String(localized: "Unlock"), - systemImage: "faceid" - ) - .frame(minWidth: 220) + Label(buttonTitle, systemImage: biometrySymbol) + .frame(minWidth: 220) } .buttonStyle(.borderedProminent) .controlSize(.large) @@ -44,13 +43,37 @@ struct LockScreenView: View { .task { await unlock() } } + private var buttonTitle: String { + didFail ? String(localized: "Try Again") : String(localized: "Unlock") + } + + private var biometrySymbol: String { + switch lockState.biometry { + case .faceID: "faceid" + case .touchID: "touchid" + case .opticID: "opticid" + case .unavailable: "lock.open" + } + } + private func unlock() async { guard !isAuthenticating, lockState.isLocked else { return } isAuthenticating = true defer { isAuthenticating = false } - let success = await lockState.unlock() - if !success { - didFail = true - } + didFail = !(await lockState.unlock()) + } +} + +struct PrivacyCoverView: View { + var body: some View { + Rectangle() + .fill(.regularMaterial) + .ignoresSafeArea() + .overlay { + Image(systemName: "lock.fill") + .font(.system(size: 44)) + .foregroundStyle(.secondary) + .accessibilityHidden(true) + } } } diff --git a/TableProMobile/TableProMobile/Views/OnboardingView.swift b/TableProMobile/TableProMobile/Views/OnboardingView.swift deleted file mode 100644 index ab8a9b91e2..0000000000 --- a/TableProMobile/TableProMobile/Views/OnboardingView.swift +++ /dev/null @@ -1,196 +0,0 @@ -import SwiftUI - -struct OnboardingView: View { - @Environment(AppState.self) private var appState - @State private var currentPage = 0 - @State private var showAddConnection = false - @State private var didAddConnection = false - @State private var isSyncing = false - @State private var syncTask: Task? - - var body: some View { - TabView(selection: $currentPage) { - welcomePage.tag(0) - getStartedPage.tag(1) - } - .tabViewStyle(.page(indexDisplayMode: .always)) - .indexViewStyle(.page(backgroundDisplayMode: .always)) - .sheet(isPresented: $showAddConnection, onDismiss: { - if didAddConnection { - completeOnboarding() - } - }) { - ConnectionFormView { connection in - appState.addConnection(connection) - didAddConnection = true - showAddConnection = false - } - } - .overlay { - if isSyncing { - ZStack { - Rectangle() - .fill(.ultraThinMaterial) - .ignoresSafeArea() - VStack(spacing: 12) { - ProgressView() - .controlSize(.large) - Text("Syncing from iCloud...") - .font(.subheadline) - .foregroundStyle(.secondary) - } - } - } - } - .allowsHitTesting(!isSyncing) - } - - // MARK: - Pages - - private var welcomePage: some View { - VStack(spacing: 0) { - Spacer() - - appIconImage - .padding(.bottom, 24) - - Text("Welcome to TablePro") - .font(.largeTitle.bold()) - .padding(.bottom, 12) - - Text("A fast, lightweight database client for your iPhone and iPad.") - .font(.body) - .foregroundStyle(.secondary) - .multilineTextAlignment(.center) - .padding(.horizontal, 40) - - Spacer() - - Button { - withAnimation { currentPage = 1 } - } label: { - Text("Continue") - .frame(maxWidth: .infinity) - } - .buttonStyle(.borderedProminent) - .controlSize(.large) - .padding(.horizontal, 24) - .padding(.bottom, 60) - } - } - - private var getStartedPage: some View { - VStack(spacing: 0) { - Spacer() - - Text("Get Started") - .font(.title.bold()) - .padding(.bottom, 32) - - VStack(spacing: 12) { - Button(action: syncFromiCloud) { - actionCard( - icon: "icloud.and.arrow.down", - color: .blue, - title: String(localized: "Sync from iCloud"), - description: String(localized: "Import connections from your Mac") - ) - } - - Button(action: addNewConnection) { - actionCard( - icon: "plus.circle.fill", - color: .green, - title: String(localized: "Add Connection"), - description: String(localized: "Set up a new database connection") - ) - } - } - .padding(.horizontal, 24) - - Spacer() - - Button("Skip", action: completeOnboarding) - .font(.subheadline) - .foregroundStyle(.secondary) - .padding(.bottom, 60) - } - } - - // MARK: - Components - - private var appIconImage: some View { - Group { - if let uiImage = Self.loadAppIcon() { - Image(uiImage: uiImage) - .resizable() - } else { - Image(systemName: "cylinder.split.1x2") - .font(.system(size: 60)) - .foregroundStyle(.blue) - } - } - .frame(width: 100, height: 100) - .clipShape(RoundedRectangle(cornerRadius: 22)) - } - - private func actionCard(icon: String, color: Color, title: String, description: String) -> some View { - HStack(spacing: 16) { - Image(systemName: icon) - .font(.title2) - .foregroundStyle(color) - .frame(width: 44, height: 44) - .background(color.opacity(0.12)) - .clipShape(RoundedRectangle(cornerRadius: 10)) - - VStack(alignment: .leading, spacing: 4) { - Text(title) - .font(.headline) - .foregroundStyle(.primary) - Text(description) - .font(.subheadline) - .foregroundStyle(.secondary) - } - - Spacer() - - Image(systemName: "chevron.right") - .font(.subheadline) - .foregroundStyle(.tertiary) - } - .padding() - .background(.fill.quaternary) - .clipShape(RoundedRectangle(cornerRadius: 12)) - } - - // MARK: - Actions - - private func syncFromiCloud() { - isSyncing = true - syncTask = Task { - await appState.syncCoordinator.sync() - guard !Task.isCancelled else { return } - isSyncing = false - completeOnboarding() - } - } - - private func addNewConnection() { - didAddConnection = false - showAddConnection = true - } - - private func completeOnboarding() { - appState.hasCompletedOnboarding = true - } - - // MARK: - Helpers - - private static func loadAppIcon() -> UIImage? { - guard let icons = Bundle.main.object(forInfoDictionaryKey: "CFBundleIcons") as? [String: Any], - let primary = icons["CFBundlePrimaryIcon"] as? [String: Any], - let files = primary["CFBundleIconFiles"] as? [String], - let name = files.last else { return nil } - return UIImage(named: name) - } -} diff --git a/TableProMobile/TableProMobile/Views/SceneRootView.swift b/TableProMobile/TableProMobile/Views/SceneRootView.swift index 8f36b577d4..b09b528e3d 100644 --- a/TableProMobile/TableProMobile/Views/SceneRootView.swift +++ b/TableProMobile/TableProMobile/Views/SceneRootView.swift @@ -1,11 +1,15 @@ +import CoreSpotlight import SwiftUI import TableProDatabase +import TableProModels -/// One per scene, because a coordinator carries the screen's own tab, navigation path and connect -/// attempt. Two iPad windows on the same connection are two screens, not one. struct SceneRootView: View { @Environment(AppState.self) private var appState + @Environment(AppLockState.self) private var lockState + @Environment(\.scenePhase) private var scenePhase + @EnvironmentObject private var sceneDelegate: TableProSceneDelegate @State private var coordinatorStore: ConnectionCoordinatorStore + @State private var presenter = ScenePresenter() init(connectionManager: ConnectionManager) { _coordinatorStore = State( @@ -14,16 +18,57 @@ struct SceneRootView: View { } var body: some View { - Group { - if appState.hasCompletedOnboarding { - ConnectionListView() - } else { - OnboardingView() + ConnectionListView() + .environment(coordinatorStore) + .environment(presenter) + .onChange(of: appState.connections) { previous, current in + coordinatorStore.reconcile(from: previous, to: current) } + .onChange(of: appState.sampleResetRevision) { _, _ in + for sample in appState.connections where sample.isSample { + coordinatorStore.invalidate(sample.id, droppingSession: false) + } + } + .onOpenURL { url in + guard let intent = SceneIntent.parse(url: url) else { return } + presenter.receive(intent) + } + .onContinueUserActivity(CSSearchableItemActionType, perform: receive) + .onContinueUserActivity(SceneIntent.viewConnectionActivity, perform: receive) + .onContinueUserActivity(SceneIntent.viewTableActivity, perform: receive) + .onAppear { + sceneDelegate.onDisconnect = { [presenter, appState] in + presenter.releaseLaunchClaim(appState: appState) + } + updateLockCover() + } + .onChange(of: lockState.isLocked) { _, _ in + updateLockCover() + } + .onChange(of: scenePhase) { _, _ in + updateLockCover() + } + } + + private func receive(_ activity: NSUserActivity) { + guard let intent = SceneIntent.parse(activityType: activity.activityType, userInfo: activity.userInfo) else { + return + } + presenter.receive(intent) + } + + private func updateLockCover() { + guard !TestRuntime.isActive else { return } + sceneDelegate.showCover(lockCoverMode, lockState: lockState) + } + + private var lockCoverMode: LockCoverMode? { + if lockState.isLocked { + return .locked } - .environment(coordinatorStore) - .onChange(of: appState.connections) { previous, current in - coordinatorStore.reconcile(from: previous, to: current) + guard scenePhase != .active, AppLockState.isLockEnabled, lockState.biometry != .unavailable else { + return nil } + return .obscured } } diff --git a/TableProMobile/TableProMobile/Views/SettingsView.swift b/TableProMobile/TableProMobile/Views/SettingsView.swift index bb795f5ed7..14c77b10ea 100644 --- a/TableProMobile/TableProMobile/Views/SettingsView.swift +++ b/TableProMobile/TableProMobile/Views/SettingsView.swift @@ -3,52 +3,27 @@ import TableProModels import TableProSyncTransport struct SettingsView: View { + private static let privacyPolicyURL = URL(string: "https://tablepro.app/privacy") + @Environment(AppState.self) private var appState - @AppStorage("com.TablePro.settings.shareAnalytics") private var shareAnalytics = true @AppStorage(AppLockState.lockEnabledKey) private var lockEnabled = false @AppStorage(AppLockState.lockTimeoutKey) private var lockTimeoutSeconds = AppLockState.AutoLockTimeout.fiveMinutes.rawValue - @AppStorage(AppPreferences.cloudSyncEnabledKey) private var cloudSyncEnabled = true @AppStorage(AppPreferences.syncPasswordsKey) private var syncPasswords = false @AppStorage(AppPreferences.defaultPageSizeKey) private var defaultPageSize = 100 @AppStorage(AppPreferences.defaultSafeModeKey) private var defaultSafeModeRaw = SafeModeLevel.off.rawValue @AppStorage(AppPreferences.hideQueryPreviewInActivityKey) private var hideQueryPreviewInActivity = false - @State private var showRefreshConfirmation = false - private let auth = BiometricAuthService() var body: some View { Form { biometricSection - syncSection - if cloudSyncEnabled { - refreshFromICloudSection - } + iCloudSection defaultsSection - - Section { - Toggle(String(localized: "Share anonymous usage data"), isOn: $shareAnalytics) - - Text("Help improve TablePro by sharing anonymous usage statistics (no personal data or queries).") - .font(.caption) - .foregroundStyle(.secondary) - - Toggle(String(localized: "Hide query in Live Activities"), isOn: $hideQueryPreviewInActivity) - } header: { - Text("Privacy") - } footer: { - Text("When on, the lock screen and Dynamic Island show \"Running query\" instead of the SQL preview.") - } - - Section("About") { - LabeledContent(String(localized: "Version")) { - Text(Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "-") - } - LabeledContent(String(localized: "Build")) { - Text(Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as? String ?? "-") - } - } + usageDataSection + liveActivitySection + aboutSection } .navigationTitle(String(localized: "Settings")) } @@ -58,7 +33,7 @@ struct SettingsView: View { let availability = auth.availability if availability != .unavailable { Section { - Toggle(toggleLabel(for: availability), isOn: $lockEnabled) + Toggle(toggleLabel(for: availability), isOn: lockBinding) if lockEnabled { Picker(String(localized: "Auto-Lock"), selection: $lockTimeoutSeconds) { @@ -70,70 +45,30 @@ struct SettingsView: View { } header: { Text("Security") } footer: { - Text("Locks TablePro when reopened after the selected idle time. Cold launches always require authentication.") + if lockEnabled { + Text("Locks TablePro when reopened after the selected idle time. Cold launches always require authentication.") + } } } } - private var syncSection: some View { + private var iCloudSection: some View { Section { - Toggle(String(localized: "iCloud Sync"), isOn: $cloudSyncEnabled) - if cloudSyncEnabled { + Toggle(String(localized: "iCloud Sync"), isOn: cloudSyncBinding) + if appState.onboarding.isCloudSyncEnabled { LabeledContent(String(localized: "Last Sync")) { syncStatusLabel } - Button { - Task { await runSync() } - } label: { - HStack { - Text(String(localized: "Sync Now")) - Spacer() - if isSyncing { - ProgressView().controlSize(.small) - } - } - } - .disabled(isSyncing) - Toggle(String(localized: "Sync Passwords"), isOn: $syncPasswords) - - Text("Passwords sync through iCloud Keychain, which is end-to-end encrypted. Only affects new saves. Re-save a password to update its sync.") - .font(.caption) - .foregroundStyle(.secondary) } } header: { - Text("Sync") + Text("iCloud") } footer: { - Text("When off, connections, groups, and tags stay on this device only. Existing iCloud data is not deleted. Passwords stay on this device unless you turn on Sync Passwords.") - } - } - - private var refreshFromICloudSection: some View { - Section { - Button { - showRefreshConfirmation = true - } label: { - Label { - Text(String(localized: "Refresh from iCloud")) - } icon: { - Image(systemName: "arrow.clockwise.icloud") - } - } - .disabled(isSyncing) - .confirmationDialog( - String(localized: "Refresh from iCloud?"), - isPresented: $showRefreshConfirmation, - titleVisibility: .visible - ) { - Button(String(localized: "Refresh from iCloud")) { - Task { await runRefresh() } - } - Button(String(localized: "Cancel"), role: .cancel) {} - } message: { - Text("TablePro will re-download every connection, group, and tag from your iCloud account. Local data on this device is not deleted.") + if appState.onboarding.isCloudSyncEnabled { + Text("Passwords sync through iCloud Keychain, which is end-to-end encrypted. Turning it on affects new saves only, so re-save a password to sync it.") + } else { + Text("When off, nothing is sent to iCloud and nothing already there is deleted. Changes you make meanwhile sync once you turn it back on.") } - } footer: { - Text("If items appear on another device but not here, refresh forces a full re-download from iCloud. This may take a moment on slow networks.") } } @@ -147,11 +82,11 @@ struct SettingsView: View { .foregroundStyle(.secondary) } case .error(let error): - Text(error.localizedDescription) + Text(ConnectionListSyncMessage.text(for: error)) .foregroundStyle(.red) .multilineTextAlignment(.trailing) - .lineLimit(2) - case .idle: + .lineLimit(3) + case .idle, .disabled: if let date = appState.syncCoordinator.lastSyncDate { Text(date, style: .relative) .foregroundStyle(.secondary) @@ -159,24 +94,9 @@ struct SettingsView: View { Text(String(localized: "Never")) .foregroundStyle(.secondary) } - case .disabled: - Text(String(localized: "Off")) - .foregroundStyle(.secondary) } } - private var isSyncing: Bool { - appState.syncCoordinator.status == .syncing - } - - private func runSync() async { - await appState.syncCoordinator.sync() - } - - private func runRefresh() async { - await appState.syncCoordinator.resetSyncToken() - } - private var defaultsSection: some View { Section { Picker(String(localized: "Rows per Page"), selection: $defaultPageSize) { @@ -197,6 +117,82 @@ struct SettingsView: View { } } + private var usageDataSection: some View { + Section { + Toggle(String(localized: "Share Usage Data"), isOn: usageDataBinding) + } header: { + Text("Privacy") + } footer: { + Text("One report a day: hashed device ID, versions, language, database types, first-use dates. Never hostnames, credentials, queries, or data.") + } + } + + private var liveActivitySection: some View { + Section { + Toggle(String(localized: "Hide Query"), isOn: $hideQueryPreviewInActivity) + } header: { + Text("Live Activities") + } footer: { + Text("When on, the lock screen and Dynamic Island show \"Running query\" instead of the SQL preview.") + } + } + + private var aboutSection: some View { + Section("About") { + LabeledContent(String(localized: "Version"), value: versionText) + if FeatureHighlights.release(appState.currentAppVersion) != nil { + NavigationLink(String(localized: "What's New")) { + WhatsNewSettingsPage(version: appState.currentAppVersion) + } + } + if let privacyPolicyURL = Self.privacyPolicyURL { + Link(String(localized: "Privacy Policy"), destination: privacyPolicyURL) + } + NavigationLink(String(localized: "Acknowledgements")) { + AcknowledgementsView() + } + } + } + + private var versionText: String { + let build = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as? String ?? "" + guard !build.isEmpty else { return appState.currentAppVersion } + return String(format: String(localized: "%1$@ (%2$@)"), appState.currentAppVersion, build) + } + + private var lockBinding: Binding { + Binding( + get: { lockEnabled }, + set: { enabled in + guard !enabled else { + lockEnabled = true + return + } + Task { await turnOffLock() } + } + ) + } + + private func turnOffLock() async { + let reason = String(localized: "Authenticate to stop locking TablePro.") + guard await auth.authenticate(reason: reason) else { return } + lockEnabled = false + } + + private var cloudSyncBinding: Binding { + Binding( + get: { appState.onboarding.isCloudSyncEnabled }, + set: { appState.setCloudSyncEnabled($0) } + ) + } + + private var usageDataBinding: Binding { + Binding( + get: { appState.onboarding.isUsageDataEnabled }, + set: { appState.setUsageDataEnabled($0) } + ) + } + private func toggleLabel(for availability: BiometricAuthService.Availability) -> String { switch availability { case .faceID: String(localized: "Require Face ID") diff --git a/TableProMobile/TableProMobileTests/Helpers/AcknowledgementsInventoryTests.swift b/TableProMobile/TableProMobileTests/Helpers/AcknowledgementsInventoryTests.swift new file mode 100644 index 0000000000..16e448fe94 --- /dev/null +++ b/TableProMobile/TableProMobileTests/Helpers/AcknowledgementsInventoryTests.swift @@ -0,0 +1,63 @@ +import Foundation +import Testing + +@testable import TableProMobile + +@Suite("Acknowledgements inventory") +struct AcknowledgementsInventoryTests { + @Test("the bundled acknowledgements decode and name the libraries the app links") + func bundledInventoryDecodes() throws { + let inventory = try AcknowledgementsInventory.bundled() + let ids = Set(inventory.components.map(\.id)) + + #expect(!inventory.components.isEmpty) + for required in ["openssl", "libssh2", "chinook"] { + #expect(ids.contains(required), "\(required) is missing from the bundled acknowledgements") + } + } + + @Test("every license text the acknowledgements name is in the app bundle") + func everyLicenseTextResolves() throws { + let inventory = try AcknowledgementsInventory.bundled() + + for component in inventory.components where component.textFile != nil { + let text = try? inventory.licenseText(for: component) + #expect(text?.isEmpty == false, "\(component.id) names a license text the app bundle does not carry") + } + } + + @Test("a license text missing from disk is reported rather than read as empty") + func missingLicenseTextThrows() throws { + let root = FileManager.default.temporaryDirectory + .appendingPathComponent("AcknowledgementsInventoryTests-\(UUID().uuidString)", isDirectory: true) + try FileManager.default.createDirectory(at: root, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: root) } + + let manifest = """ + [{"id": "absent", "name": "Absent", "version": "1.0", "spdx": "MIT", "copyrights": [], + "homepageURL": "https://example.com", "textFile": "texts/absent.txt"}] + """ + let manifestURL = root.appendingPathComponent("Acknowledgements.json") + try manifest.write(to: manifestURL, atomically: true, encoding: .utf8) + + let inventory = try AcknowledgementsInventory(manifestURL: manifestURL) + let component = try #require(inventory.components.first) + + #expect(throws: AcknowledgementsInventoryError.licenseTextMissing(componentId: "absent")) { + try inventory.licenseText(for: component) + } + } + + @Test("a pinned revision shows as a short hash, a release version as written") + func displayVersion() throws { + let data = Data(""" + [{"id": "pinned", "name": "Pinned", "version": "rev:f09d088889e252655ea1833eed821cd2be0de03a", + "spdx": "MIT", "copyrights": [], "homepageURL": "https://example.com", "textFile": null}, + {"id": "release", "name": "Release", "version": "3.4.4", "spdx": "MIT", "copyrights": [], + "homepageURL": "https://example.com", "textFile": null}] + """.utf8) + let components = try JSONDecoder().decode([AcknowledgementComponent].self, from: data) + + #expect(components.map(\.displayVersion) == ["f09d088", "3.4.4"]) + } +} diff --git a/TableProMobile/TableProMobileTests/Onboarding/AppStateLibraryTests.swift b/TableProMobile/TableProMobileTests/Onboarding/AppStateLibraryTests.swift new file mode 100644 index 0000000000..f5baf2279e --- /dev/null +++ b/TableProMobile/TableProMobileTests/Onboarding/AppStateLibraryTests.swift @@ -0,0 +1,138 @@ +import CloudKit +import Foundation +@testable import TableProMobile +import TableProModels +import TableProSync +import TableProSyncTransport +import Testing + +@MainActor +@Suite("App state library writes") +struct AppStateLibraryTests { + private let root: URL + private let libraryDirectory: URL + private let defaults: UserDefaults + private let metadata: SyncMetadataStorage + private let bundledSample: URL + + init() throws { + root = FileManager.default.temporaryDirectory + .appendingPathComponent("app-state-\(UUID().uuidString)", isDirectory: true) + libraryDirectory = root.appendingPathComponent("Library", isDirectory: true) + try FileManager.default.createDirectory(at: libraryDirectory, withIntermediateDirectories: true) + defaults = try #require(UserDefaults(suiteName: "com.TablePro.tests.AppState.\(UUID().uuidString)")) + metadata = SyncMetadataStorage(userDefaults: defaults) + bundledSample = root.appendingPathComponent("Chinook.sqlite") + try Data("sample".utf8).write(to: bundledSample) + } + + private func makeState(syncEnabled: Bool) -> AppState { + let coordinator = IOSSyncCoordinator( + metadata: metadata, + recordCache: SyncRecordCache(directory: root.appendingPathComponent("Cache"), defaults: nil), + makeTransport: { UnreachableTransport() }, + isEnabled: { syncEnabled } + ) + return AppState( + libraryDirectory: libraryDirectory, + defaults: defaults, + syncCoordinator: coordinator, + sampleInstaller: SampleDatabaseInstaller( + bundledURL: bundledSample, + directory: root.appendingPathComponent("Samples", isDirectory: true) + ) + ) + } + + @Test("A library that failed to load refuses every write and leaves the file alone") + func failedLoadRefusesWrites() throws { + let file = libraryDirectory.appendingPathComponent("connections.json") + let unreadable = Data("{ not json".utf8) + try unreadable.write(to: file) + let state = makeState(syncEnabled: false) + + #expect(state.loadStatus == .failed) + #expect(state.isLibraryWritable == false) + #expect(state.addConnection(DatabaseConnection(name: "New", type: .mysql)) == false) + #expect(state.addGroup(ConnectionGroup(name: "Team")) == false) + #expect(throws: SampleDatabaseError.libraryUnavailable) { + try state.openSampleDatabase() + } + #expect(try Data(contentsOf: file) == unreadable) + } + + @Test("Opening the sample twice keeps one sample connection, and it is never marked for sync") + func sampleIsLocal() throws { + let state = makeState(syncEnabled: true) + + let first = try state.openSampleDatabase() + let second = try state.openSampleDatabase() + + #expect(first == second) + #expect(state.connections.filter(\.isSample).count == 1) + #expect(state.connections.first?.database == SampleDatabaseInstaller.fileName) + #expect(!metadata.dirtyIds(for: .connection).contains(first.uuidString)) + + state.removeConnections([first]) + #expect(metadata.tombstones(for: .connection).isEmpty) + } + + @Test("An ordinary connection is marked for sync while sync is on") + func ordinaryConnectionIsMarked() { + let state = makeState(syncEnabled: true) + let connection = DatabaseConnection(name: "Prod", type: .postgresql) + + #expect(state.addConnection(connection)) + #expect(metadata.dirtyIds(for: .connection).contains(connection.id.uuidString)) + } + + @Test("A change made while sync is off waits for sync instead of being dropped") + func changeWaitsWhileOff() { + let state = makeState(syncEnabled: false) + let connection = DatabaseConnection(name: "Prod", type: .postgresql) + + #expect(state.addConnection(connection)) + #expect(metadata.dirtyIds(for: .connection).contains(connection.id.uuidString)) + } + + @Test("Closing the first run without answering records every question as declined") + func dismissedFirstRunDeclines() { + let state = makeState(syncEnabled: false) + + state.finishFirstRun(pages: [.welcome, .iCloud, .usageData]) + + #expect(state.onboarding.hasSeenWelcome) + #expect(state.onboarding.syncChoice == false) + #expect(state.onboarding.usageDataChoice == false) + } + + @Test("An answer given during the first run is kept when the sheet closes") + func answeredChoiceKept() { + let state = makeState(syncEnabled: false) + state.setUsageDataEnabled(true) + + state.finishFirstRun(pages: [.welcome, .usageData]) + + #expect(state.onboarding.usageDataChoice == true) + } +} + +private struct UnreachableTransport: IOSSyncTransport { + var currentZoneID: CKRecordZone.ID { + get async { CKRecordZone.ID(zoneName: "Unused", ownerName: CKCurrentUserDefaultName) } + } + + func accountStatus() async throws -> CKAccountStatus { + .noAccount + } + + func ensureZoneExists() async throws {} + + func pull(since token: CKServerChangeToken?) async throws -> PullResult { + PullResult(changedRecords: [], deletedRecordIDs: [], newToken: nil) + } + + func push(records: [CKRecord], deletions: [CKRecord.ID]) async throws -> PushOutcome { + PushOutcome(savedRecords: [:], deletedRecordIDs: []) + } +} diff --git a/TableProMobile/TableProMobileTests/Onboarding/ConnectionListStateTests.swift b/TableProMobile/TableProMobileTests/Onboarding/ConnectionListStateTests.swift new file mode 100644 index 0000000000..855eb016e9 --- /dev/null +++ b/TableProMobile/TableProMobileTests/Onboarding/ConnectionListStateTests.swift @@ -0,0 +1,60 @@ +import Foundation +@testable import TableProMobile +import TableProSyncTransport +import Testing + +@MainActor +@Suite("Connection list state") +struct ConnectionListStateTests { + private func state( + loadStatus: LoadStatus = .ready, + hasItems: Bool = false, + syncEnabled: Bool = false, + status: SyncStatus = .idle, + firstSyncDone: Bool = false + ) -> ConnectionListState { + ConnectionListState.resolve( + loadStatus: loadStatus, + hasLibraryItems: hasItems, + isSyncEnabled: syncEnabled, + syncStatus: status, + hasCompletedFirstSync: firstSyncDone + ) + } + + @Test("A library that failed to load is never shown as empty") + func failedLoad() { + #expect(state(loadStatus: .failed) == .failed) + #expect(state(loadStatus: .failed, hasItems: true) == .failed) + } + + @Test("An empty library with sync off offers the local actions") + func emptyLocal() { + #expect(state() == .empty(syncsWithICloud: false)) + } + + @Test("The first iCloud pull shows progress instead of an empty list") + func firstPull() { + #expect(state(syncEnabled: true, status: .syncing) == .checkingICloud) + } + + @Test("A later sync over an empty library does not look like a first pull") + func laterSync() { + #expect(state(syncEnabled: true, status: .syncing, firstSyncDone: true) == .empty(syncsWithICloud: true)) + } + + @Test("iCloud trouble before anything arrived is said, not hidden") + func unavailable() { + #expect(state(syncEnabled: true, status: .error(.accountUnavailable)) == .iCloudUnavailable(.accountUnavailable)) + } + + @Test("A sync problem over a loaded library keeps the rows and reports it") + func problemWithContent() { + #expect(state(hasItems: true, syncEnabled: true, status: .error(.networkUnavailable)) == .content(syncProblem: .networkUnavailable)) + } + + @Test("A stale sync error is ignored once sync is off") + func errorIgnoredWhenOff() { + #expect(state(hasItems: true, status: .error(.networkUnavailable)) == .content(syncProblem: nil)) + } +} diff --git a/TableProMobile/TableProMobileTests/Onboarding/FirstRunPlanTests.swift b/TableProMobile/TableProMobileTests/Onboarding/FirstRunPlanTests.swift new file mode 100644 index 0000000000..76d3d12afa --- /dev/null +++ b/TableProMobile/TableProMobileTests/Onboarding/FirstRunPlanTests.swift @@ -0,0 +1,91 @@ +import Foundation +@testable import TableProMobile +import Testing + +@Suite("First run plan") +struct FirstRunPlanTests { + private func plan( + hasSeenWelcome: Bool = false, + syncChoice: Bool? = nil, + usageDataChoice: Bool? = nil, + lastSeenVersion: String? = nil, + currentVersion: String = "1.1", + hasHighlights: Bool = true + ) -> LaunchPresentation { + FirstRunPlan( + hasSeenWelcome: hasSeenWelcome, + syncChoice: syncChoice, + usageDataChoice: usageDataChoice, + lastSeenVersion: lastSeenVersion, + currentVersion: currentVersion, + hasHighlightsForCurrentVersion: hasHighlights + ).presentation + } + + @Test("A fresh install asks every question, welcome first") + func freshInstall() { + #expect(plan() == .firstRun([.welcome, .iCloud, .usageData])) + } + + @Test("A fresh install never shows What's New") + func freshInstallSkipsWhatsNew() { + #expect(plan(lastSeenVersion: nil) == .firstRun([.welcome, .iCloud, .usageData])) + } + + @Test("A TestFlight user who finished the old onboarding is asked about usage data only") + func legacyUserAskedOnce() { + #expect(plan(hasSeenWelcome: true, syncChoice: true, usageDataChoice: nil) == .firstRun([.usageData])) + } + + @Test("The iCloud page belongs to the welcome and is never shown on its own later") + func iCloudOnlyWithWelcome() { + #expect(plan(hasSeenWelcome: true, syncChoice: nil, usageDataChoice: false) == .none) + } + + @Test("A sync choice already made keeps the iCloud page out of the welcome") + func answeredSyncSkipsPage() { + #expect(plan(syncChoice: false, usageDataChoice: true) == .firstRun([.welcome])) + } + + @Test("An upgrade with highlights shows What's New once everything is answered") + func upgradeShowsWhatsNew() { + let presentation = plan( + hasSeenWelcome: true, + syncChoice: false, + usageDataChoice: false, + lastSeenVersion: "1.0", + currentVersion: "1.1" + ) + #expect(presentation == .whatsNew(version: "1.1")) + } + + @Test("An upgrade without highlights shows nothing") + func upgradeWithoutHighlights() { + let presentation = plan( + hasSeenWelcome: true, + syncChoice: true, + usageDataChoice: true, + lastSeenVersion: "1.0", + hasHighlights: false + ) + #expect(presentation == .none) + } + + @Test("A relaunch of the same version shows nothing") + func sameVersion() { + let presentation = plan( + hasSeenWelcome: true, + syncChoice: true, + usageDataChoice: false, + lastSeenVersion: "1.1", + currentVersion: "1.1" + ) + #expect(presentation == .none) + } + + @Test("A pending question wins over What's New") + func questionBeatsWhatsNew() { + let presentation = plan(hasSeenWelcome: true, syncChoice: true, lastSeenVersion: "1.0") + #expect(presentation == .firstRun([.usageData])) + } +} diff --git a/TableProMobile/TableProMobileTests/Onboarding/OnboardingPreferencesTests.swift b/TableProMobile/TableProMobileTests/Onboarding/OnboardingPreferencesTests.swift new file mode 100644 index 0000000000..54a079fa29 --- /dev/null +++ b/TableProMobile/TableProMobileTests/Onboarding/OnboardingPreferencesTests.swift @@ -0,0 +1,61 @@ +import Foundation +@testable import TableProMobile +import Testing + +@MainActor +@Suite("Onboarding preferences") +struct OnboardingPreferencesTests { + private let defaults: UserDefaults + + init() throws { + defaults = try #require(UserDefaults(suiteName: "com.TablePro.tests.Onboarding.\(UUID().uuidString)")) + } + + @Test("A fresh install has made no choices and syncs nothing") + func freshInstall() { + let preferences = OnboardingPreferences(defaults: defaults) + + #expect(preferences.syncChoice == nil) + #expect(preferences.usageDataChoice == nil) + #expect(preferences.isCloudSyncEnabled == false) + #expect(preferences.isUsageDataEnabled == false) + #expect(preferences.hasSeenWelcome == false) + } + + @Test("A user who finished the old onboarding keeps syncing and is not assumed to consent") + func legacyUserMigrates() { + defaults.set(true, forKey: OnboardingPreferences.hasSeenWelcomeKey) + + let preferences = OnboardingPreferences(defaults: defaults) + + #expect(preferences.hasSeenWelcome) + #expect(preferences.syncChoice == true) + #expect(preferences.usageDataChoice == nil) + } + + @Test("A legacy user who had turned sync off stays off") + func legacyUserKeepsExplicitChoice() { + defaults.set(true, forKey: OnboardingPreferences.hasSeenWelcomeKey) + defaults.set(false, forKey: AppPreferences.cloudSyncEnabledKey) + + let preferences = OnboardingPreferences(defaults: defaults) + + #expect(preferences.syncChoice == false) + } + + @Test("Choices and the last seen version survive a relaunch") + func choicesPersist() { + let preferences = OnboardingPreferences(defaults: defaults) + preferences.setSyncChoice(true) + preferences.setUsageDataChoice(false) + preferences.markWelcomeSeen() + preferences.recordLaunch(version: "1.0") + + let reloaded = OnboardingPreferences(defaults: defaults) + + #expect(reloaded.syncChoice == true) + #expect(reloaded.usageDataChoice == false) + #expect(reloaded.hasSeenWelcome) + #expect(reloaded.lastSeenVersion == "1.0") + } +} diff --git a/TableProMobile/TableProMobileTests/Onboarding/SampleDatabaseInstallerTests.swift b/TableProMobile/TableProMobileTests/Onboarding/SampleDatabaseInstallerTests.swift new file mode 100644 index 0000000000..6d02e3fcac --- /dev/null +++ b/TableProMobile/TableProMobileTests/Onboarding/SampleDatabaseInstallerTests.swift @@ -0,0 +1,71 @@ +import Foundation +@testable import TableProMobile +import Testing + +@Suite("Sample database installer") +struct SampleDatabaseInstallerTests { + private let directory: URL + private let bundled: URL + + init() throws { + let root = FileManager.default.temporaryDirectory + .appendingPathComponent("sample-installer-\(UUID().uuidString)", isDirectory: true) + try FileManager.default.createDirectory(at: root, withIntermediateDirectories: true) + bundled = root.appendingPathComponent("Bundled.sqlite") + try Data("original".utf8).write(to: bundled) + directory = root.appendingPathComponent("Samples", isDirectory: true) + } + + @Test("The app bundle carries the sample database") + func bundleCarriesSample() throws { + let url = try #require(SampleDatabaseInstaller.live.bundledURL) + #expect(FileManager.default.fileExists(atPath: url.path)) + } + + @Test("Install copies once and keeps the user's changes after that") + func installKeepsChanges() throws { + let installer = SampleDatabaseInstaller(bundledURL: bundled, directory: directory) + + let installed = try installer.installIfNeeded() + try Data("edited".utf8).write(to: installed) + try installer.installIfNeeded() + + #expect(try String(contentsOf: installed, encoding: .utf8) == "edited") + } + + @Test("Reset restores the original and removes the journal files") + func resetRemovesSidecars() throws { + let installer = SampleDatabaseInstaller(bundledURL: bundled, directory: directory) + let installed = try installer.installIfNeeded() + try Data("edited".utf8).write(to: installed) + for suffix in SampleDatabaseInstaller.sidecarSuffixes { + try Data("stale".utf8).write(to: URL(fileURLWithPath: installed.path + suffix)) + } + + try installer.reset() + + #expect(try String(contentsOf: installed, encoding: .utf8) == "original") + for suffix in SampleDatabaseInstaller.sidecarSuffixes { + #expect(!FileManager.default.fileExists(atPath: installed.path + suffix)) + } + } + + @Test("A missing bundle is an error, never an empty database") + func missingBundle() { + let installer = SampleDatabaseInstaller(bundledURL: nil, directory: directory) + + #expect(throws: SampleDatabaseError.bundleMissing) { + try installer.installIfNeeded() + } + #expect(!FileManager.default.fileExists(atPath: installer.installedURL.path)) + } + + @Test("The samples folder is left out of device backups") + func excludedFromBackup() throws { + let installer = SampleDatabaseInstaller(bundledURL: bundled, directory: directory) + try installer.installIfNeeded() + + let values = try directory.resourceValues(forKeys: [.isExcludedFromBackupKey]) + #expect(values.isExcludedFromBackup == true) + } +} diff --git a/TableProMobile/TableProMobileTests/Onboarding/SceneIntentTests.swift b/TableProMobile/TableProMobileTests/Onboarding/SceneIntentTests.swift new file mode 100644 index 0000000000..6be1f71dc7 --- /dev/null +++ b/TableProMobile/TableProMobileTests/Onboarding/SceneIntentTests.swift @@ -0,0 +1,61 @@ +import CoreSpotlight +import Foundation +@testable import TableProMobile +import Testing + +@Suite("Scene intent parsing") +struct SceneIntentTests { + private let connectionId = UUID() + + @Test("A connect link opens the connection") + func connectLink() throws { + let url = try #require(URL(string: "tablepro://connect/\(connectionId.uuidString)")) + #expect(SceneIntent.parse(url: url) == .openConnection(connectionId, table: nil)) + } + + @Test("A connect link with a table opens that table, as it does on the Mac") + func tableLink() throws { + let url = try #require(URL(string: "tablepro://connect/\(connectionId.uuidString)/table/users")) + #expect(SceneIntent.parse(url: url) == .openConnection(connectionId, table: "users")) + } + + @Test("A link naming a database still opens the connection") + func databaseLinkOpensConnection() throws { + let url = try #require(URL(string: "tablepro://connect/\(connectionId.uuidString)/database/app/table/users")) + #expect(SceneIntent.parse(url: url) == .openConnection(connectionId, table: nil)) + } + + @Test("A malformed link or another host is ignored") + func malformedLinks() throws { + #expect(SceneIntent.parse(url: try #require(URL(string: "tablepro://connect/not-a-uuid"))) == nil) + #expect(SceneIntent.parse(url: try #require(URL(string: "tablepro://integrations/pair"))) == nil) + #expect(SceneIntent.parse(url: try #require(URL(string: "https://tablepro.app"))) == nil) + } + + @Test("A .tablepro file imports, any other file is ignored") + func files() { + let share = URL(fileURLWithPath: "/tmp/Team.TablePro") + #expect(SceneIntent.parse(url: share) == .importConnections(share)) + #expect(SceneIntent.parse(url: URL(fileURLWithPath: "/tmp/notes.txt")) == nil) + } + + @Test("Spotlight, Handoff and table activities resolve to the connection") + func activities() { + let id = connectionId.uuidString + #expect( + SceneIntent.parse(activityType: CSSearchableItemActionType, userInfo: [CSSearchableItemActivityIdentifier: id]) + == .openConnection(connectionId, table: nil) + ) + #expect( + SceneIntent.parse(activityType: SceneIntent.viewConnectionActivity, userInfo: ["connectionId": id]) + == .openConnection(connectionId, table: nil) + ) + #expect( + SceneIntent.parse( + activityType: SceneIntent.viewTableActivity, + userInfo: ["connectionId": id, "tableName": "orders"] + ) == .openConnection(connectionId, table: "orders") + ) + #expect(SceneIntent.parse(activityType: "com.example.other", userInfo: ["connectionId": id]) == nil) + } +} diff --git a/TableProMobile/TableProMobileTests/Onboarding/ScenePresenterTests.swift b/TableProMobile/TableProMobileTests/Onboarding/ScenePresenterTests.swift new file mode 100644 index 0000000000..817cba4a8e --- /dev/null +++ b/TableProMobile/TableProMobileTests/Onboarding/ScenePresenterTests.swift @@ -0,0 +1,61 @@ +import Foundation +@testable import TableProMobile +import Testing + +@MainActor +@Suite("Scene presenter") +struct ScenePresenterTests { + private let connectionId = UUID() + + @Test("An incoming link waits while any sheet is open, then arrives") + func waitsForSheet() { + let presenter = ScenePresenter() + presenter.present(.addConnection) + presenter.receive(.openConnection(connectionId, table: nil)) + + #expect(presenter.takeDeliverableIntent(isLocked: false, isLibraryWritable: true) == nil) + + presenter.sheet = nil + #expect(presenter.takeDeliverableIntent(isLocked: false, isLibraryWritable: true) == .openConnection(connectionId, table: nil)) + #expect(presenter.takeDeliverableIntent(isLocked: false, isLibraryWritable: true) == nil) + } + + @Test("Nothing is delivered while the app is locked") + func waitsForUnlock() { + let presenter = ScenePresenter() + presenter.receive(.openConnection(connectionId, table: nil)) + + #expect(presenter.takeDeliverableIntent(isLocked: true, isLibraryWritable: true) == nil) + #expect(presenter.takeDeliverableIntent(isLocked: false, isLibraryWritable: true) != nil) + } + + @Test("An import waits until the stored library can be written") + func importWaitsForLibrary() { + let presenter = ScenePresenter() + let file = URL(fileURLWithPath: "/tmp/Team.tablepro") + presenter.receive(.importConnections(file)) + + #expect(presenter.takeDeliverableIntent(isLocked: false, isLibraryWritable: false) == nil) + #expect(presenter.takeDeliverableIntent(isLocked: false, isLibraryWritable: true) == .importConnections(file)) + } + + @Test("The latest link wins") + func latestWins() { + let presenter = ScenePresenter() + let other = UUID() + presenter.receive(.openConnection(connectionId, table: nil)) + presenter.receive(.openConnection(other, table: "users")) + + #expect(presenter.takeDeliverableIntent(isLocked: false, isLibraryWritable: true) == .openConnection(other, table: "users")) + } + + @Test("A requested table is taken once, and only by its own connection") + func tableRequest() { + let presenter = ScenePresenter() + presenter.requestTable("Track", in: connectionId) + + #expect(presenter.takeTable(for: UUID()) == nil) + #expect(presenter.takeTable(for: connectionId) == "Track") + #expect(presenter.takeTable(for: connectionId) == nil) + } +} diff --git a/TableProMobile/TableProMobileTests/Sync/IOSSyncCoordinatorTests.swift b/TableProMobile/TableProMobileTests/Sync/IOSSyncCoordinatorTests.swift index ad5dadb0f8..cc8cd8a363 100644 --- a/TableProMobile/TableProMobileTests/Sync/IOSSyncCoordinatorTests.swift +++ b/TableProMobile/TableProMobileTests/Sync/IOSSyncCoordinatorTests.swift @@ -13,6 +13,7 @@ private final class LibraryStateBox { var tags: [ConnectionTag] = [] var duringPull: () -> Void = {} var duringPush: () -> Void = {} + var syncEnabled = true func runDuringPull() { duringPull() @@ -28,6 +29,7 @@ private actor FakeSyncTransport: IOSSyncTransport { private let remoteRecords: [CKRecord] private let box: LibraryStateBox private(set) var pushedRecords: [CKRecord] = [] + private(set) var pullCount = 0 init(remoteRecords: [CKRecord], box: LibraryStateBox) { self.remoteRecords = remoteRecords @@ -41,6 +43,7 @@ private actor FakeSyncTransport: IOSSyncTransport { func ensureZoneExists() async throws {} func pull(since token: CKServerChangeToken?) async throws -> PullResult { + pullCount += 1 await box.runDuringPull() return PullResult(changedRecords: remoteRecords, deletedRecordIDs: [], newToken: nil) } @@ -73,7 +76,8 @@ struct IOSSyncCoordinatorTests { let coordinator = IOSSyncCoordinator( metadata: metadata, recordCache: SyncRecordCache(directory: cacheDirectory, defaults: nil), - makeTransport: { transport } + makeTransport: { transport }, + isEnabled: { box.syncEnabled } ) coordinator.getCurrentState = { (box.connections, box.groups, box.tags) } coordinator.onConnectionsChanged = { box.connections = $0 } @@ -154,4 +158,106 @@ struct IOSSyncCoordinatorTests { let pushed = await transport.pushedRecords.compactMap(SyncRecordMapper.toConnection) #expect(pushed.first?.isFavorite == true) } + + @Test("Sync is off: changes wait, and nothing is pulled or pushed") + func disabledSyncOnlyQueues() async { + let box = LibraryStateBox() + let local = DatabaseConnection(name: "Local", type: .mysql) + box.connections = [local] + box.syncEnabled = false + let transport = FakeSyncTransport(remoteRecords: [], box: box) + let coordinator = makeCoordinator(box: box, transport: transport) + + coordinator.markDirty(local.id) + coordinator.markDeleted(UUID()) + await coordinator.sync() + + #expect(await transport.pullCount == 0) + #expect(await transport.pushedRecords.isEmpty) + #expect(metadata.dirtyIds(for: .connection).contains(local.id.uuidString)) + #expect(metadata.tombstones(for: .connection).count == 1) + #expect(coordinator.status == .disabled(.userDisabled)) + } + + @Test("A sample connection is never pushed, even when marked") + func sampleIsNeverPushed() async { + let box = LibraryStateBox() + let sample = DatabaseConnection(name: "Sample", type: .sqlite, database: "Chinook.sqlite", isSample: true) + let local = DatabaseConnection(name: "Prod", type: .postgresql) + box.connections = [sample, local] + let transport = FakeSyncTransport(remoteRecords: [], box: box) + let coordinator = makeCoordinator(box: box, transport: transport) + coordinator.markDirty(sample.id) + coordinator.markDirty(local.id) + + await coordinator.sync() + + let pushed = await transport.pushedRecords.compactMap(SyncRecordMapper.toConnection).map(\.id) + #expect(pushed == [local.id]) + } + + @Test("A second sync waits for the one already running instead of returning early") + func concurrentSyncJoins() async { + let box = LibraryStateBox() + let transport = FakeSyncTransport(remoteRecords: [], box: box) + let coordinator = makeCoordinator(box: box, transport: transport) + + async let first: Void = coordinator.sync() + async let second: Void = coordinator.sync() + _ = await (first, second) + + #expect(await transport.pullCount == 1) + #expect(coordinator.status == .idle) + #expect(coordinator.lastSyncDate != nil) + } + + @Test("Turning sync on sends what changed while it was off, except the sample") + func enablingSendsQueuedChanges() async throws { + let box = LibraryStateBox() + let sample = DatabaseConnection(name: "Sample", type: .sqlite, database: "Chinook.sqlite", isSample: true) + let local = DatabaseConnection(name: "Prod", type: .postgresql) + box.connections = [sample, local] + box.syncEnabled = false + let transport = FakeSyncTransport(remoteRecords: [], box: box) + let coordinator = makeCoordinator(box: box, transport: transport) + coordinator.markDirty(sample.id) + coordinator.markDirty(local.id) + + box.syncEnabled = true + coordinator.setEnabled(true) + await coordinator.sync() + + let pushed = await transport.pushedRecords.compactMap(SyncRecordMapper.toConnection).map(\.id) + #expect(pushed == [local.id]) + } + + @Test("Turning sync off forgets the last sync, so turning it on again shows the first pull") + func disablingResetsFirstSync() async { + let box = LibraryStateBox() + let transport = FakeSyncTransport(remoteRecords: [], box: box) + let coordinator = makeCoordinator(box: box, transport: transport) + await coordinator.sync() + #expect(coordinator.hasCompletedFirstSync) + + box.syncEnabled = false + coordinator.setEnabled(false) + + #expect(coordinator.hasCompletedFirstSync == false) + } + + @Test("Turning sync off wins over a sync that was already running") + func disablingWinsOverRunningSync() async { + let box = LibraryStateBox() + let transport = FakeSyncTransport(remoteRecords: [], box: box) + let coordinator = makeCoordinator(box: box, transport: transport) + box.duringPull = { + box.syncEnabled = false + coordinator.setEnabled(false) + } + + await coordinator.sync() + + #expect(coordinator.status == .disabled(.userDisabled)) + #expect(coordinator.lastSyncDate == nil) + } } diff --git a/TableProMobile/TableProWidget/Assets.xcassets/AppIcon.appiconset/Contents.json b/TableProMobile/TableProWidget/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 2305880107..0000000000 --- a/TableProMobile/TableProWidget/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/TableProMobile/TableProWidget/TableProWidget.entitlements b/TableProMobile/TableProWidget/TableProWidget.entitlements deleted file mode 100644 index 930e4ce9bc..0000000000 --- a/TableProMobile/TableProWidget/TableProWidget.entitlements +++ /dev/null @@ -1,10 +0,0 @@ - - - - - com.apple.security.application-groups - - group.com.TablePro.TableProMobile - - - diff --git a/TableProMobile/project.yml b/TableProMobile/project.yml index b13702fc0a..196bdb2db8 100644 --- a/TableProMobile/project.yml +++ b/TableProMobile/project.yml @@ -44,6 +44,9 @@ targets: - TableProWidget/Shared/QueryActivityAttributes.swift - TableProWidget/Shared/SharedConnectionStore.swift - TableProWidget/Shared/WidgetConnectionItem.swift + # The sample database the macOS app ships, opened from the empty connection list. + - path: ../TablePro/Resources/SampleDatabases/Chinook.sqlite + buildPhase: resources # FreeTDS bridging the iOS build compiles directly; there is no plugin # bundle on iOS, so the driver links into the app. - ../Plugins/MSSQLDriverPlugin/FreeTDSConnection.swift @@ -74,6 +77,11 @@ targets: - ../Plugins/PostgreSQLDriverPlugin/LibPQCopyState.swift # The read-write BEGIN both platforms open a write transaction with. - ../Plugins/PostgreSQLDriverPlugin/PostgreSQLTransactionStatement.swift + # License texts behind the Acknowledgements screen, copied whole so each keeps the + # texts/ path Acknowledgements.json names it by. + - path: ../TablePro/Resources/ThirdPartyLicenses/texts + type: folder + buildPhase: resources configFiles: Debug: ../Configs/Version-iOS.xcconfig Release: ../Configs/Version-iOS.xcconfig diff --git a/TableProTests/Core/ThirdPartyLicenseInventoryTests.swift b/TableProTests/Core/ThirdPartyLicenseInventoryTests.swift index ce3b09c9af..a7b22a22c2 100644 --- a/TableProTests/Core/ThirdPartyLicenseInventoryTests.swift +++ b/TableProTests/Core/ThirdPartyLicenseInventoryTests.swift @@ -35,8 +35,8 @@ struct ThirdPartyLicenseInventoryTests { } /// Every `NAME_VERSION="value"` literal the build scripts pin, which is what the shipped - /// static libraries are actually built from. - private static func shellVersionPins() throws -> [String: String] { + /// static libraries are actually built from, plus the default of a `"${1:-value}"` pin. + private static func shellVersionPins() throws -> [String: Set] { let scripts = repositoryRoot.appendingPathComponent("scripts") /// `scripts/lib` as well as the build scripts. A pin shared by several builds lives in the /// library rather than in any one script, and naming a single file here meant the test @@ -44,25 +44,36 @@ struct ThirdPartyLicenseInventoryTests { let buildScripts = try FileManager.default.contentsOfDirectory(atPath: scripts.path) .filter { $0.hasPrefix("build-") && $0.hasSuffix(".sh") } .map { scripts.appendingPathComponent($0) } - let libraryDirectory = scripts.appendingPathComponent("lib") - let libraryScripts = ((try? FileManager.default.contentsOfDirectory(atPath: libraryDirectory.path)) ?? []) - .filter { $0.hasSuffix(".sh") } - .map { libraryDirectory.appendingPathComponent($0) } + let libraryScripts = shellScripts(in: scripts.appendingPathComponent("lib")) + let iosScripts = shellScripts(in: scripts.appendingPathComponent("ios")) - let pattern = try NSRegularExpression(pattern: #"^([A-Z0-9_]+_VERSION)="(v?[0-9][^"$]*)""#, options: [.anchorsMatchLines]) - var pins: [String: String] = [:] - for path in buildScripts + libraryScripts { + let pattern = try NSRegularExpression( + pattern: #"^([A-Z0-9_]+_VERSION)="(?:\$\{[^:}]+:-)*(v?[0-9][^"$}]*)\}*""#, + options: [.anchorsMatchLines] + ) + var pins: [String: Set] = [:] + for path in buildScripts + libraryScripts + iosScripts { guard let source = try? String(contentsOf: path, encoding: .utf8) else { continue } let range = NSRange(source.startIndex ..< source.endIndex, in: source) for match in pattern.matches(in: source, range: range) { guard let key = Range(match.range(at: 1), in: source), let value = Range(match.range(at: 2), in: source) else { continue } - pins[String(source[key])] = String(source[value]) + pins[String(source[key]), default: []].insert(String(source[value])) } } return pins } + private static func shellScripts(in directory: URL) -> [URL] { + ((try? FileManager.default.contentsOfDirectory(atPath: directory.path)) ?? []) + .filter { $0.hasSuffix(".sh") } + .map { directory.appendingPathComponent($0) } + } + + private static var iosAcknowledgementsURL: URL { + repositoryRoot.appendingPathComponent("TableProMobile/TableProMobile/Acknowledgements/Acknowledgements.json") + } + private static func swiftPackagePins() throws -> [String: Set] { let files = [ "TablePro.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved", @@ -149,10 +160,13 @@ struct ThirdPartyLicenseInventoryTests { let pinned = pins[variable] #expect(pinned != nil, "\(component.id) points at \(variable), which no build script defines") guard let pinned else { continue } + let pinnedVersions = Set(pinned.map(\.normalizedVersion)) + let recorded = Set(component.version.components(separatedBy: ", ").map(\.normalizedVersion)) #expect( - pinned.normalizedVersion == component.version.normalizedVersion, + recorded == pinnedVersions, """ - \(component.id) is recorded as \(component.version) but \(variable) pins \(pinned). + \(component.id) is recorded as \(component.version) but \(variable) pins \ + \(pinned.sorted().joined(separator: ", ")) across the macOS and iOS build scripts. Re-read the upstream license at the new version before updating this entry: a bump can change the license, as OpenSSL did at 3.0 and Redis at 7.4. """ @@ -225,6 +239,93 @@ struct ThirdPartyLicenseInventoryTests { ) } } + + @Test("The iOS acknowledgements are the projection of the inventory's iOS entries") + func iosAcknowledgementsMatchInventory() throws { + let inventory = try loadInventory() + let expected = inventory.components + .filter { $0.ships(on: .ios) } + .map(IOSAcknowledgement.init(component:)) + .sorted { ($0.name.lowercased(), $0.id) < ($1.name.lowercased(), $1.id) } + + let data = try Data(contentsOf: Self.iosAcknowledgementsURL) + let committed = try JSONDecoder().decode([IOSAcknowledgement].self, from: data) + + #expect( + committed == expected, + """ + TableProMobile/TableProMobile/Acknowledgements/Acknowledgements.json is out of date with licenses.yml. + Run scripts/generate-ios-acknowledgements.py and commit the result. + """ + ) + } + + @Test("A component with no platforms ships on macOS only") + func platformsDefaultToMacOS() throws { + let root = FileManager.default.temporaryDirectory + .appendingPathComponent("ThirdPartyLicenseInventoryTests-\(UUID().uuidString)", isDirectory: true) + try FileManager.default.createDirectory(at: root, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: root) } + + let yaml = """ + - id: mac-only + name: Mac Only + version: 1.0.0 + spdx: MIT + copyrights: [] + homepageURL: https://example.com/mac + licenseTextURL: https://example.com/mac/LICENSE + textFile: texts/mac.txt + source: manual + patched: false + - id: ios-only + name: iOS Only + version: 1.0.0 + spdx: MIT + copyrights: [] + homepageURL: https://example.com/ios + licenseTextURL: https://example.com/ios/LICENSE + textFile: texts/ios.txt + source: manual + patched: false + platforms: [ios] + """ + try yaml.write( + to: root.appendingPathComponent(ThirdPartyLicenseInventory.inventoryFileName), + atomically: true, + encoding: .utf8 + ) + + let inventory = try ThirdPartyLicenseInventory(rootURL: root) + let macOnly = try #require(inventory.components.first { $0.id == "mac-only" }) + + #expect(macOnly.platforms == [.macos]) + #expect(inventory.attributed.map(\.id) == ["mac-only"]) + } +} + +private struct IOSAcknowledgement: Codable, Equatable { + let id: String + let name: String + let version: String + let spdx: String + let copyrights: [String] + let homepageURL: String + let textFile: String? +} + +private extension IOSAcknowledgement { + init(component: ThirdPartyComponent) { + self.init( + id: component.id, + name: component.name, + version: component.version, + spdx: component.spdx, + copyrights: component.copyrights, + homepageURL: component.homepageURL, + textFile: component.textFile + ) + } } private extension String { diff --git a/docs/features/icloud-sync.mdx b/docs/features/icloud-sync.mdx index d031239cc1..cc26bd41b0 100644 --- a/docs/features/icloud-sync.mdx +++ b/docs/features/icloud-sync.mdx @@ -17,7 +17,7 @@ Each synced category has its own toggle under **Sync Categories**. | Data | Synced | Notes | |------|--------|-------| | **Connections** | Yes | Host, port, username, database type, SSH/SSL config, and whether the connection is a favorite | -| **Passwords** | Opt-in | Nested under Connections, and carried by Apple's iCloud Keychain rather than TablePro's own records. Turning it on affects new saves only, so re-save a password to sync it. On iPhone and iPad the same switch is **Settings > Sync > Sync Passwords** | +| **Passwords** | Opt-in | Nested under Connections, and carried by Apple's iCloud Keychain rather than TablePro's own records. Turning it on affects new saves only, so re-save a password to sync it. On iPhone and iPad the same switch is **Settings > iCloud > Sync Passwords** | | **Groups & Tags** | Yes | Nested group hierarchy and sort order included | | **SSH Profiles** | Yes | Named [SSH profiles](/connections/ssh-profiles) | | **Credential Profiles** | Not yet | Named [credential profiles](/connections/credential-profiles) stay on the Mac that created them until their CloudKit schema ships | diff --git a/docs/images/ios-connection-list-dark.png b/docs/images/ios-connection-list-dark.png index 61d965bdb9fac4cc680da8f701d8a59d3c08926d..9fd8403261686d956d6926acf57984f5304d1c40 100644 GIT binary patch literal 223416 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�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 literal 22001 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 GmH!2Yo%nYE diff --git a/docs/images/ios-connection-list.png b/docs/images/ios-connection-list.png index 70a657a161e3b65cfea8b7c70ff48071b74d4df7..a3a411a7671b93cc9200f44485f93ebca765d9af 100644 GIT binary patch literal 215698 zcmb@ucQoAJ+ci8wVuCQbAQ&Zx9t6>n3DGk85YZ!gCwfhch!UcAqW8||J%~t15N*`x zy#>*qgn!w*NU#i|*r9{Yu$fIJo2;MepZ;V-l zG=Iv^AGOvVrmpaRf6J?kBP7%R?R$R?q!rW6)npqvi`M}?dKK{??(2xMu|F?H|G_3z~ss9@n{@=Zg|Fa82|NlS#|Hp;@Z#@71 z?!Z^?Yf9ijGyJ}Gf1ulCV)|qMvs7PP0xHVQf_8ZR6be_@rR&V{hjnlgAfW90|NZgR z(x@KjSKkT2hkNs6`K-y^CeoVUeY`TmEG&F0$n@WtpJ-*j=dKd~Yw7+eb->cO0ELg0 zIkVBnk^Zw}R%S%C+e2y4J8Th$1?i+qa?r<0iZNGLy;^G-eqDOk%U-}bNFkdV(iGn! zU~j2XIOfX3VE;_*>5|@cJ`Gq04h}xrXD!eF7@RYhjJOZ_@8AhOMZ<`Rp)6p*8Kt2A zJw#MV20HiX4Lfhq85AC)er%|y`{yY^igSNG z3~>?9+U|Tqj`A5e6O>;G-1k4<-mc*f6M(3qel6bDq=YJr z!~8_?eL0p%#vJ#>o#@~9AbT7kkJKn6{2Xll=ek!5WWr>KvMJ5qhZCVr(Y5SMdJToj zsIk6$-f}jID$**^t;JMVR~Hs$Vje7rK3LAoxuGC~s(I9wo|cvv9X(WGl2@wV$naWq zKsohcUfyY-zk?`m1UyYi^vhXM1kF=Xr~97h$k97yj~0!NbfaNB-nW>Dg%hsE*eLG5=CUT> zyb9L4e&EzU?XkSs8_mw6R|knwCqum7s7O7Vp_;Z7-!+8GIE}cjWCZE^9MmkQ2!^S% zkp&xBk`ask_sKf0wzy^`qf5m|b&ck}xN|AHNo19o59dCqqGjgL1BOiL4{@yHzI2dq z$-_E1hQzU=(Kqc(W(uN9MuuSau5HAlVgH;&@ZngxdUox!=TTu%wIFRbKHJ-pW_a%T6tSKC`|6UwoV=C&|mO}>gVtYI#M?_4#0 z%S&CJ{UK%H?c~1M!}#BeV3U4BFa&0G!+^I?~eoh{XEC4nk0%7wuphZWcD64=1S<1ujb;bIM|ll^_2 zWESlBqi82GoxCTUQ^%AF2&j$=^HG5Pi3)P2^{CZRkrMj=pJ=7k?7J0$V>!XDElqDW z7urrD`l&BM`Xbx%#_~q`LmV0t1XNbdb%{{E=@G51eC@uW1b#~Z0kaWL^e=8#Q*` z$5A8`?rW3n)Mmm#9PX5d5l+GoH}5fAL;sL+_X`#%T~F%C!tsZ}f)m0jK3B_>BKD3Y zoU(YjnaF~_5@MtqnJM076ct{BU^d4v(SM=c34M!$LS2q^mM<=6Qv#i-pmku-n|~E) ztA%h5PK(aQ41)jroUG*2(z_c*Gf?6dr8@gjCbr}kaG(}~#GBu2;iI6PlU zu})fYs^`cFt9Z^GC&Asb>(uw&z&%7nqvapZAz_1(;{OhCCTAG^K+1VJosStq+l_>~2`u^Q%&vloko2}Fl zVsLcR!N@wbo&y8?4`X8KO2c70K4XbN^GR`4zui#o2g?^o!iS>N5N5V6F1%vHR?Fi( zQ|po9f|3#xicLhMRW5=-(vv3HY=~%u zMpe+?C*31^C7Taj-E%gEUNERVij1ZTSZi*c^7JHr?;IV#@<>x$8k0X7L0#P55OZ-)c zrh$Qht}Y8&UPVO(iByUa&dJWUnbxBr8u{zpl9EDiLm70qS6*y6Q9IK=UFSIeBSUU^ zaZ!YBw~vf9eSjU!ac^R;htZFMis~t|v8>vCK|%4?D`Q~)9v&Wk&TW>oMEuT_KofV9 zq|!r@)74*iRTlBm=#H{igLTYTBb4vsi})Q4if7l~KZ_Dl6%QS`Bhzy8kl{|`D>V@I zbAu1ikiN*n0*YV(DyX}8|JlopF)k6?!sMri>ux)td@YkT)}s!hYp#u7zbf{G-IjD- zG7pY;xL#b9?y)4+I%AI|f=Dpb7Cy+|m`z!4(9+QnaG3Q+CO^Pwn{vB6O7q$ROV*>= zKtFFlN_?@jaVx*LSYr2cwAAUwkP&}nGhvG)BgYC@CFdsxL^lG)EFq_fRPq}v|ghHZ*C~ zfv>B7^j)Niuu?bFZYxx4Qjr4=abmlU^ECq@ z02^D^Ug}hXOY7;@CB}XRPWz!juk`EJulS5j_7`U!!4b6gU#V6MKMUg>hgsr~CYKNDUmbx}h6&ALfZix>_9=%2)zt07cqzJ99 zs^-V3U+>|n&ZD-!YZXbwbFx}k^c45e_Owr$hneC~CTo9v>3U(|_jKu_tO%*+4X+jW zY0%w??x*l4@6vov5&^I%Eh({e?aiatpHXc|Q;8REqb;=~C*Xj;Cq}1fC$L{OS*R&n z-Ie^}C+)|1jKRmr40wn>l8nB!)aLkx4goD6e}I6#P#3%w(NpuXYi+-u4r4jgt;Acu zu^4YCbvQOp#dqN`R$gUoZSA6O@~!^wZ$hw&iZ$|-2PF0k!gRtFD2=4}2Q(nlFc z0N3O7xi~vMn%r;w{re?SgPc0huGV$EWd4Ee#BeS$`GiYE6$JvsVyxWQq$j+fwDg9* z-(i}_@+5zZXV5iq>es?jArpJ7(@0c@6 zQyaX=^(<6*bd{nbo@r>P|MGuaQ=mKJk@YfH#Zlmm3-jr5QRkvliD9en*TgtGivyw1uU?swEC|&>4aoZ+-1fvAb&foTE0^jQv z(mzeZoKG5JtuuG!v09sPZL}Zq3ucuhzTw;58dg~)nHlV|<3D^2ASI%%`WC#+Dci?N zExD8{`mQ7?aZtaM*O(F?65n5NfZp{pDQ+CE{t3V~27c$ljJ|(Yk7oQv3sLJ}+%m04 z!y){yR|KBCBRcsr6w!LNw;rwhu(Yty?C%aC0U_b#Uz6|FWzDn^$>@(U6x-(MKF25P zg8fpbDdBg-rO$S7Lo%T_Z~T|R**%Y@+)7(7p4MW|X9JFk?wySs^}$JT z?)-59uCHUBTH&-v0NL^M$xCtiT9B9KI{QXaL;YI#JOw4?_tew#)9u#NKEBXeyQzm( z!|%afiA->aw|o)YIC2e5{GtGL?y++!Bn&~6XOlm}po?9m+HT8TUTE%5+^7^AcV09)4uq^kV zUx2(Ly7%RAyU~HZ+f==awSw_nEdopa}{eZz2Z3kw0 z2bs=Adj^N^d3_PH&8Ca14772J*TAj-Djr#o5I0$rl?{+Q6kahACi*HC< zT3Y&?9?t7Q{0j?fYUYyd8m1SWBoD{Pdjl84JF6-y?<#xm1+(8Zd-ZDTne|w+(NOL! zi2r%yq20&o%`e*-Lv;RiQw(CL5tjpy7|z#!vG9_u8trt8Ki3Rv3(K?Uvi5BldTfv`Xp;!qt@+BJt-3uBjjS; z1co>{5U=w&4L3E_RZ>y{2+|9biKGbMzs6EInnQmAh}Tw+@Ecs#`)OG4G*P#LI#nbD z)J8wh**7JsM?KG273JpP+3cpXznHmXkVhiB7;z?|JMYuHdkl^AX~_jif3D;DjJM!v z0Lk>edy{y+a_pkKq4#e6v&eAK-(N-zyqxzImO)7=+R19kEW4;s-g=^mAA8N<$$#p-@|k#+Uf2$)XO?>7i6R0cQz`au6Z?UaF| za|^;dM~ZdyRaK2>8s;DIKj%4h5Vmp|j>+WMt#iIOUM_oH(d4%6>o)D7tD|$kQ#*Os z%g$&!Rz6+H4f*o*>)KS~_LoSLr{PWBZT_9x_2wM_e@CUJS|)u+_JqRdWwONHL5u}X z--L@$44ZvBIk0~6i!%qoUXqn~8SfD)=R8p1>+#8=(4uai4u{NiSAk8CxA)=qlDeqq zyKR}-=lS%OAa#R!0)?_2%5B5g>WkQ5SH~)%VK4jQzGtY)6L&2xE+U|v4mgmU>ZYb= zP_^fEy+TOE)jMv_^7AigMVwz!viUf73Q6!D z4=N|hvQm(klNPv6y&9qjrM%Hwe5n6j#f|esef!;LjLt1-JgC3I#?k6gPvyl8i(6P8 z94b(4UvZn8K@@?*BO?=-)U>p%UH66WkKpo5AFn|o<+BU#iCX+HQe2&^pP6!-2^iIP zlY}p{oHCs4_3=SI6&5B5@QTRUV=*PBU4dY|oMY{a7<~R@*iAJU`kmhjJ}(S}?H!{~ zB?Se&-=2+ATSWr?E5KIV{r(w?4R-Eq`)1U_&AaIeYMMP2eD$yXvZs3sx$mfzwO+*a z;#oJrXXikgdG+J?RdzvAN!JiB5zHD)}P zZTsO=f^JJ*@JE>vQn|nC11wwld@m3=g-z0}?z;nc@{{*hur8RPswp4a#SGt`qvEh}cixahp8Y>5RAue_1i6Ox%}St{lkX zi7$RuXZ8j`fp`z|{#6(YF%oyxvRZoF+~^)idRO3jRFG-Ln}_KaNnH2C7bHzH$S+n% z|G`Cge)B%tKF)*JAYqQ<7^eCcGN@nAxjlb8p1S+2E=b^kamVHzaSRW~m)7-C@$RsC zf;EESf?^w|dZGH(h)fOu{`xD6d!y5lN`yd~SbqpvY2X#fTuQlQp{ustMrbQ%?ob5! z-TkV$;HvJYbW`1`Pz1Kqpl8>~KTVW*Zv~u297ZI4#Xh@+~$Zr=NlkKDE=XYyi~o-mgyp}NoACss!vd$WKp zj#5?tx$lqL5Jn>q;(W1DrIPMCp}?NzzEL$G<#RZ`{3TNB!KX-*GVgn`YH6Npm-Ia? z2P0Szp)UFwC`yPBa^GFT>A9V&GZ)&m3a@v0->X@wlmE3oAE==>YpZTM`<__Nfn=k{ zYoZ-wip3x@KF*6eFL`rmWaE--ICkC=kv{(u1IR~r5bnp`zL38F9w{n@01PckKV4vc zbwuCCqU!j zeJ{B^p4Y31ai1!))a3+nkJkXRFKUeh*)L`Ej_3<B$+6}^w3D+WJAWVXS(Sr@?9a~84n6)bw zu_ddn?(c|h4+*W1s;hRa`0ja)EC59Mqw|grTsMS&{c6W0k=Oz70@wfdZ>QE7zY(20 zeXq@1AX8TW%7>8PMRG2W`I7h(9JbGy)+Wisn;!Dt!Ua2?ME>|1%M}PCb_*A?S&?}D zAm^_wwQUnQ49Ci8J>}bcIP}j4e&>NM1t%9>LNUstR2SR5Vw14rbKg#W=16%~vi`4M zDG)Hk;sj&*!1lgJ*3T~q0wyG)v;G58r^VH;t?lf#-jil&mFg)#d%t~Cr;r`0-rL&) zy!y&iqsogHCxB5&13?N8`U6tN0oc;>vadBmiCdK`Bf>%LE*U& ziQm`P$5+2ld2vn>tMqLl#Hs#gyP^A={6gB$u6MV@MJNbdR({O=4(0nPRFa?nWqvos zV@W5J`tl4^84YgRk;%!{IwQ(6Y-AJ`F`sK6c^n;1AYdsLl()-KS-3pGrqHxdm1*!V(>w+4gKqC*}Y}?~K zLz0L2x~N!Ls7|#7DLmWj2p1P;V5EdnR<;JzLz44h8kuTXej(X6AYKsApSAYVvN%Iw z>3$dGvZ21T;)h9qx(5a2DB}HiRV&!jk$cNY5*~vKz0p*B1|wDGD&wYRGe0r5;*-0c zWh#Q0J04?G5;51WZRMq>3HY1{LGlZ3UhH(9EgaZ2?$cJ-vh(p>22$rKsIiEniq!t@ZJ>vZ6t0QdGJ= z=kWIsYp-AN`^dPn-)r_w5H-)q%}3lXs&|GpR1`1t>|4*5u=cHDCf#%ZwRLaFLoY_` z4BtHZD!$!x@KcWQ+9Of=ha2T0Q5YL+iSf82U^9yww;JSzssT@xCbZfM3LDSnG;(Fp z)vsJV)6N56YdRjHw9RfWC!(+*`er%7e#iNRPKQ`B@y`bw#Ljr{10K>pkGAgK~rqD6?kdu3&EO}5p33kILmY{&NoUA2-lKBgNShR{%S0%k-aFd<}1to-7`s}?C zKgXyd#J_Z1`i$T2d(tmZrilNY4ZwZlKVSZtn(2JrMF5{+3>V_MJV>?a`SCNk+=aau z{@1=fAtXMm(&34e`JUAsolh|-uQ)@ZnlhbFJ&GualW*UC)5GBPYHM;^7>NaY?C0Q! z6vysFe8x#WvS7<3OlmLzf4e%WRb_X$(jl|t9VCOiBrZ_8Bwr% zzM;Dg2ZcB9j`3QkhRZ!*X(S89Wv~xvY=0 z98HS{;4}VeaA^lvwDs?AXZYt&kL6Yy)YR3T7Gtx{d@ln?q?|zd5?cm})A9My%xZ&_ z!|W$_31!aM(@IVPVPuutw$z*h)E^3mpmSFNJmuk@9Immh-I^l#bL<`5NCvL_=KbgXgilYI4p|J-*wpoND@&_Cn<+0pNY%5&js9#+ zWqc#Qsh8JYYVOcqDOdhVCA~t6?Y^z0w;&v-Of@f1Ku>$`f2enErMv%Xr|nIU-`}|) zkT)cj66OKrQJj=y(dyegAUYp*ThKsq4sFsewoKn+Y~OtF&Q#}$fCHtMmi`^rMt%FH z-TuAB)~nH!|NL-1Oc0Qe#R~)X!QKxLki>F|GdO4oobTl&MUNvIcDZ5efOv1YH{E;+ zC~OB&Zm-bU`UY*!6zBAT(MC7Mp#{Ib;$O@AeQY-Gj3EHRQ6WUbaUl#5)R0NL+7zC? z+%BnfL*5Ea)Gz)&cPMyC5kkm_o^iiRuWfJ}r8-r#5W8lVvv&L=0i>4~r+Vfc^|Uw- z%}H(IfNp=}d?Ov#6v>mNnWdVTYU z>3E)b{>7}pYQ+>nt9DakeIm*=F9eX%$6y)Mzv|`7daD1kY^J@++)p1Yl`&)7aH*4o zkdQq9p-C7dUM+naD6L;A1k~y~fd|$j@fh0(1|QSqe*EE)8~VIQ=SR{_uA7V?e2NMS zCD!ucfG&9}5liE&t}$fS>N5$1{;Tt?m$f>A1r_Y_G^_$_XHUypV^TdO7{s8~Nl!V2 ziL_r1;l}q}e?*j3ij3-+Cw=QBVQ{RiNQoSB+gVS5Wm+a#CS}PP)_^O4*}diuxYs7I zoZ@P-0=x0v<8tGwd+zre4hCAnJA6KD$L^l@+3KrW#v~-R)A7Z?&O_#C?Gw?s} zJQun7kslpF9dy!8KF%eHade?W@Fd>%Jxg_`fLU3-3P#&}Z!G)1eA}d;fD^>>Mv}1K zx8$Sqx7P`oBUi3d>+zd@)$DW-BgSO{Ii}Jw2|Sf9z`_8f#Kp(Efx;gY{JdnrTp`Tc z=|?L+0|nsbOce>YBXoD`C_i)yfAGCLZvtPT_x(#6L_atnbVpWAbeT8)5R4FyE+*T2 zAT2M|HOX?~Qod;PB#<=`(4d=O5Eq+OB}|SG5w`zO|JJ4Tcd0_Rmm<<&%y^bl4YQ+$ ze!@g19q2|-0+KFw&b;lHjpbx6CO9gZZJ6L`vAj3Crw_JA5_oq_{;XueUBWl<0R=J~Wd{UAf z?YiqMowzzoAPy$$N|@4#mjYgG{y6isXEWxpGq*!Xmwt-YE(FX^3e{UWtyllaD(!3i zLS<8i3f-u}9i90*)iuBCvD5 znL)F-n^c<+QtS^Pjm^HV0j|$&ZP;UH79M9xI!OgPKWMzp&Cc$&IU)Ueibmk2CKj{V zWDqf5URgN^u0Dq*S0;O#mzP(jQ`LYf8UdxWQ@uoDVj@8KVHHYz&Bf*e2I2zT;$mWA zxHsrqfEoZe*u}!4(%>GXzx18BV92yiHE#|o@Kw>R@aq`w(17cZP9yo_39=w@{DTcK z8sm5@-9-CLR6OBz5$VMH>AI<{>vN|iW2=m~b91h$fQVDxF zuKudO9=l0}C^l#=1R}bK$hJT3!|r(i4MGr$c2ZL5YR{iH8F${$AH~*ge@sqR)1_0I zUPMY2j~9t_)0jL{i+O6xCuSbr$&n*IlS6a(1wqCx{7c02YqfyMQ+36PdG3waB*Ok< z=K)D+&p#kTa#PE8Yze!@x?yawd+riHE%emh8`ET{jxF!&#C6d)H%{%k>#0$oQ1iQW zrPgSUis!@2``s^hQ@wNQ^mt`6(2rQju)VS#*U*ZZkX_sFnWmAbI0pzG&PzgexxPBq z(?680mm?XUI<-^|!lG2X3xh;-Uan?7m9{@(xrQ%j^lYQ~cAu1#!#U5)l+^Rc81KrP z@CSC2Gz7n1y?O;Cn2}0uorkRGPcfbnX;D#8zkf3$hxYb$0UZ>G$XGDek+Sh3Tv@o0 z^nsyG%sfm@(UDK7`n0pMbUnqn$5D?rUeB>$-BXD6z+D1kE7%P__$ELpEBw7~()ouF zvKDKSBreXq-jKl&1KZ2~?_1#y zEosUI02&5UOlRweJ-vv(W8;QU_8!GB&$Z>6G=z<;A^lDa?}M0HP(r< z#Wo6Yv$r~2{5gl7f9R}~s3p&GR43nR1qExw#ABO=0ORrNo_kS3;}YUG?&fIvGZ9IA z?y42!b)FR{Uy$2G0z(Df7z?ny9H!PwLS(YkJOoBptioWK93i&Y;KXmdQ^j#&nnUGA zUfV%_FOM2hQo`0t8|QM9OE2ZL#vb=se|$aVBC@dXN>e-NvedKs=}?r+l*XQ6w90mF z#LThwS6)BcM-ZmZnaIOGaDt5Rc^DJ%++*>|0P|0EU-D%E9dVobTGE}koA7Xxz7Zoo zV^A3zFC9)t{4ivQi)LX^EP!Esx7nxpW`_RkieKuu9%RRMI#GPf)o9uTMD(e+1p^+mFlTxK>vIyOAt%pb}Ln?dXg) z9=K!G{d}h7{AoD-ZGx`L!zWWKVH3NCM|-#BZ=&80?vzLkGC%ScIv%yPPhhT@EfAe* z&*#F;J$HKk^mJFDnGg95dVON0L@mGiT*NyEm_z{d$%ykA)ja%>C~Tog> z^Vu;jw121kKTgW4!l}KrRQ)b}I5EwS%U<^MD8em%r4y_MYkmGEcuULw$xoEN>nq>C z=E$qFKJFVogdR3>bJB!`(Ykbjl>V89{H@90t_XuJT-0Ra;*^nAcrC<;|838q;p1?9 zC;CohEEN7HBHCos_raBS?aFHT*3WrbO@qAo{7{!2nN)0f!{iwX#f_Z!j$lQhZkr^T zJxdZg1_ek-LHi5v^(znOKaX_I_BX#E*ueSwSfXI-#!z0wyr@&-OIfw@43Z5+ET_j0 z(dF>@KdVFLOW*j)>dkDBNQwZle~))f3kd>_Qls>NsJHE3X4?aR=CTz?o#wYyZ$46@ zi?49}9(HZ*sJFW_w&}J5&xr03F_S^@n9_r}?B7|_*#kY8Cf)L~qO zq0;!zWBofE=fXw%SOFcbEt1I`l=Zl|Fm!AF>Lq~4=N?Q$-0cDCJCD2a2e(> zfqq$~l4<6UO!wyL;o<7y;$onDx&gA>ZMy~7IDjh5r3fdhc-s!mq4us&o#8FoAKEhQQiMWgD~6mB0U4kN^A`@q_hId)AwOow^g`<^7ERW54}B zbNbGff@#D1zQqz(9B8i`ad@Hth17kRO7rJi^jj~Vw0PCc$T~p{%7j|_sSoY7KfQKj zKm6;X*<5Scg~-?t9ne&qe9*zEy!T6)8M8T0M%R;2x|pGBXuT}QDfn@{nq)jtlnvIEzQ=LHLI}`Tw%Gefjp* zW&AF%N+=KuGR$cI(RJ5GpO8#4CIpn%-?=@(!rhOqEcWukopV>64Xs*OPxPTK7}nvK z@|>H2I0%wIu>4D?##iW(mxB{8`^OmdTI}Zjag#yWmHTdrKTPIB!nbu(SzHqdfuPUK z*U^W`A9>ZbQa{Sa+h9YwUPj7`(uaSZcNBZ6s<>Md@sA%A&r49Yu;6B*nFJ3{*Yds- zPIzaagKGlbO<0?({x_L|sHCK|BXK}t0%|ZOhN6>yVe>xPRTYPtXk-i%8%MR{DT#n} zqiqGpLkQcab*+AWiY3Mcj$nU^)+^Gnb57pHrN+2UUHvS9ZL?k*t%uxjs#n*zdYO)^ zG4n?`e=+kKFtLRqPEEUjJxv}BLk_*xKRP}Gl4AJ0Oje{3KMm21`CU=Cj2cB)^uH!e z3qI~o96UUNL?x&q3B-HT-s{IMeeXY~Qwn};_$BbIk|sw;P*9L6G%ijH?2C_>{B_8z zsB&TiwA9q*cI$L&zEZvgzQr#QP=!~q*nXiV-svoqLT?c5LLVcLvd6<MMp>0 z($d4s>;`Yv7&$2!1k~%_zJ05%7DD}c@$F3@J)mJpc+b$VR%sYCdtrH58@x0% z(VfPSHqrlD@+%uT)z#dRlERXbzbfhBqHsK!08<(928x1Y|B)$r>bJU7f<)TM4@xjL zoE6;Sf`Xln^eJbb7PyRL)wuia@$n7x_Y>ir#hH$7-$?MT6c*hSH6YoZE6o0EtqJjG zx^?79j@g7E_V%0#3*WM_={h@AI>zlC@xI#kY_6~Ou(T|Qxp!Y$(Pj}X2aK@+{=v?7 z@l*?6nVOov0_X_8){ZAwhPiI+*1r*IL=uA*4cAbw6z1c@F7J2E$8qyd%*AnK_I9hd z*m}NUT}uCqxua+a?zh&4lb4GN++7FvO}0GwT+6uF*jl^PWvBYzj-e3JTVCN?pTniy zP0!r6W=B^1`?OyVp03~f{M(U>hX*w@92HgK;Za{$_|p7*Dq@c^aA~==zqc3E1$Kim zV?Y){yWZD`(%*!_Z{NNRis~F7de+AAck};|gP!-sz({Zq7V!@Kp`oG9&Q;9@_C6u3 z+T=IkWK}0m?SsX<14Ptnbya_-Lzg=$H%3bK180FQnw0z7g(zw_#}*6dVcV&P1N=lo z)j03vQ{=C$&B!?C84hWXwr~A{3t!${(^3|4*C)imlb5jbXr7*&+yJJlXOXVXOUt6+ z1Iz1!Il8{ST#!KvO5pT552R%SUNw1N-y$G|9(zkQMF+vI6$6aaJ~N`P%gN3C?Th@; zv3IT|DS~!upM|O53G(HgmK2e@_i~~qTv;EKu?4phJbpIB%VAMtH}%e_{4N{Y^)fRU zgo2uSd2xy6U0`rGLs)^#^;c>qG6r3WO zg0p}>`(igK_Z|Ty;;*+|L=O*Im7=f^8xpqmm1^xCHLa$=*aPb!%%{rC!OCZfj@eeL z>;?+GBahk`p?KVVrQ+MPx$@YMC|a%W&~|crKdoZ4edFt0Qp7?5H0K_QKXbYI!=GbF1BS-)hwa}LK9MnJC+;)XJhIxE?Srya*7 zd*ADLMt|8WMal$dai$2$!ee7&e_Cjw<^W#}%=%s^HlY1BG$^V;mu+QYE7ffN{z3`5D#595~8C+t;a$CMTQVi$ZLV? zE_fF|f(QYhfxwnBNe_SI&xFl=k7Z`9ccX*LjJoLO0SAGXr)M{ydV#6) zGuTdm-df^z0gc9C+9TqV@jR>aRxrV5r3R>60z(VKyt3nTz&+^%OT(; zbuk;GF%)ISbu{x%osYdw3GEf8zGwWDvO`+M&^DFcgkdoN06;!r9-w6v#0#DTg>!OR zVm^30L|AN_DquE&@dqeWq!Bj|`MWT{fq;f0)xHYH`KJ(z(bB2X{^ilK8NiNg9-S_> zFd)5b2;o2sH!v7EnzVCz14`&J9U34xXX1S`ZS z%xjXj55tZ;Y0XPZ(o|Q+gNTjSgE~SpqumH;JogmBPc$k^t?vyOL|~@P&AnS#__f6w zZ>`q+2K;Y}27(PQKO_^}%5zMYhknOsIekHI3@az_($@f+Q*m+Alc2*!+VHc$#~X$M z-1q^%%2S=PK`m--W@e1Ki&#l-D9}(-YccM8w|P#hh(uxs-hsBMS>Sz!Z5;Lkf1D*&-LTcDf6991TO2T92F_{zzi>M|k*xLx2{N*0)394R5Vi%gO*YMXoW=n+&+U;li6 zAk@ImryE!!Kqm(&!7tDrBRS(Iy$rN!YEXGGkX4Sofj~%|$YLWSfjkAi^sdP0#mF{0 z>Q*2k1mPo9W;wCP-kM4g%-`M2;O3~XOR24QaWGotEp>^~{s0s`LBMFn#l<}>AS3ui zMP-*HyxzA87UE9FJ}`Lv0{#bwZvs!OtW82P+ZblnK0u&7#z<+>oS4C8upC_>!Mf`dYvqJf%scgn70+%H6?`0nT>+EGhaWB%ZnNS_)3 zJexIk`b=J0eFl_X!dezT6w|$YN`V8#b*H_VkYM7X(!F3{+l@Z&XM9yNW1P1oA^i0e zu-KarG8xlQdbuo(%jmHX zDaYvZ2NM^8;Cz7Iu5U}|nUXM0RlgX<_k)i?0ng&vbip}-qQh9>JjUip~?9HQR9 z0NJ$DLC6qMl>0#OW=0Gd)1x-W1Y2y%{&00zUYcj6exoa34m#hH#sd{H1r+g#xy|g< z;WriYEfe`#M6ZZj-#)~rn50~fzjL@j#CKjMDgP#%O=+AuN%}<>PJ4f)mz_P;ZCWfs z^6)b-rTv|-womiBsE>TVx?gWYXM>&g5+JjDJ^V&}?ck)zfDgvxVvi^DyNBhKkMX%& zNcQ6=E!8(oxMA{~_wIGPromKYe&-K+`}TpmHw+ZvAUCl3mXR`ZpeWeXCT}75``a;M z%atvl=0y4q8#1V)VPKG$BcTSt|EX2e4T=+TIq}@;r&6l!MtgLKjS2yH;tR|V1tAll z{{rX^EPQ-kzdy6L{QbQTOk>L*L=38IOF1a;IARF=fnK(Z`w(=pV4nmLOKsI<&F}sN zPshe*56w7G;U&|Ry4mg{WsgKcD=T-{2Q#TO$q+7`4)n=F{VbSY7*S#sgG`_t#o$pd@yYHZ|gsnXa(O$DI3PG^mTYWfW((L0x!C&mGTtW|`s#sxd zV$O~FDb7Pe6=UU=AHRz6ad7Yx;p(!$(X_JiKP|ptcu*)k-Y28NNR68rXdAkh>wSpp zCf_ir?vq48ooEzTyMRf;96kvV?fA^@|FE8QhIVf!b%t zO4f3IC=Q&AZ*vQ*rY?{lXp3Q2f&zw{yzIrNE{gVEre6NnioF>9YsotB>+dqOQNNxg z{mI5|`mSWio%xpCuGK^$HNUc|ho4ya1*+3Vh?C!aCc5&;01#x;XUBw745|B)jls!< ztA&MOx1CY4vR%O8$i_yQEMm{YQ_`^C-}q8M4kg?lIIz5TI>pIpAe&Lil8}2F;?Q4S z1;XpT#SbP$%NH*uv<(OD@$wG3d|z}O?Gf_YFL5N8ZPY0y5081e}#2 zg6`eVjS1!}>)a0@0}8$T{3TIPn(qF>N>&5|S#SbxJZXfuNq5-lM9pcPqX_mvmeB4l zp1(yBRfPC*x|=VEb?Lve&0N5GzSk%B93#tVOGEYR06XIH1p4OJFwa`ZxDXG}KoLT# zD$P7;U`xmXP*^9VI9d_VHJCO1l<6Yhk*)P5!LrHZj--zJ!mGE zkzI5d^ZnV7F;SC&y`5d$s5R(Y4Mc!;u8WQ`GdL3;U#n#@s1mN4j)!M6+bfH+xo$)X zC95RBI+wTDK{=WO`ZV&y%YY_Nn zjE-XAHfWT)*sNUyXrv5?s-Wwkoz8|Vty+l!GJB_-N;b`1Pw1YUmF5C7WVUg83DUNj zmkzf+@sWz3SsoOkgmAD)rO)l(ZYU*yD7LQ)dP{XKKA<7*q4z2tSian96st(cv9!`x zN|!vmi~iyAL49q%af$)i(knSn6z{tKy%w}-sg*VD?E$l>=dhZbBxv@EQSYgM7>!rv zfL+tpQfGBYz^+z)vi>dE1%4cP=A~hBf(h_sgjR84%d0x#1-82j^^vA-&Ifv}bOlC<*Hg{?b817{yyN>?s0Kl5}rQb?*{V$%%CPjL3ZeJIiMfd z#?Ol~L^Q6ZvR`9D@3^0VHe)4_xd+6S!=`;sAYTrHUCu0@bhbxXh zfWyp@{$tlL!XKbiBN|?W(b}-3+#MIR>2CJ-dNL#m-NeJUto^(m!n1UP+vJ%>Y(q@; z+>64`$~_^O{P@7Z_PD@FH6jfGLuIH)9y|lg5invdAK^nj3l2O3`K)29VI2@okS{Tu zLqG;}->ex0QXe2|7#$vs0>c{z=lDdaKHboQmpkJ_pP^jj{_+4x5CDc>q(rZJA(NAZ zotNUt*`>h2wj>e`t(iYSI~8dEwoGwG4&gi+bwQyz=XOlv^_{*6^iWbPOu5g0pYNWc z4;|mF%i^$dKFYj&_v{HYqcFxMFNqhx3v=cyD=RCpg{9gffLsG*Qgtz5r?c=%IE&@e7mmnsMuH@Lc}g;_&o>)#ATc*xCVJXSi&)frIS@-D zdi;9XsB7(Kw%*_~Nd5V7QSm&5Y~s~`1G9OFXoZzpqgF3@gwW7IyIAp(_Mw%g3P!?%P;h$^TLCY@EdLef%G zYk<*2SXelwBTY|%RfLn!8^{#tK8J~ubx4EofusYZ0nmkSgA`^TTu6v1SAEbH@I4wC=OPaKwFOnUWsFEz$FB}B;X@$Umqdi?D}7Q6&zl%}Rb zKXA}*iiSDU`M+O~iu$c$#{#WC$5D{T)7#~tsTv#_LZLvjO>bWxHitV{VCldUSXKd+ zbNE2_Z@al|9#UPy|NH3$lmK<lZf|l!pR6iM?tQAQmwc(_s*>dCMDX(ommdLtH z4u}kNIv1%6H#%60ZT37+ryva;D=c*C2TSG_57XLRmNhj$C-*i zf730Ks-n6kSkqt_=sNUXQeeg>Y zsfW8*pS4P$Ia zWeVtbZk7I+l=Ss@n&Uw)=nolOgmg3gTo|szgYe(guJ|QefrgFWaPe9`HE@T2iFLE9 z1%jncm#nO2hSM4|K+x5(T$iHeV>-tk9@|a(20kL`pS3(QL03y$7Y7Ox%kswN5nGfK z2M#2B{w(laS^1^bT)iHzPJQsAJWyy$0l!}W_+4Or7eO}GSNP@Ki(1>Rd%qx~(5>L4 z5&DS92>ZX7dJCwi+x7ci6NA3q#5$P#^?Oj`#zuRJ5r>)i-uD%If3`YEUmiYeP}(t#tiJ&!n~s^g zisa{R|F@pClpl1$I>%QkkxC+?K<+HF{msX&CHQyWgMP2X3Z@ zScA^4j*jfS0FK47>o<)%=N!SkNrzApS?T}N_zrA@jTlUu-Vn_gY`{(vDfaQmS_<&_b($j73{jMlY?lR1ThrzJdy9+ zWg2HzgeI#7JH=HLOqrYpx%4(29B(A_iIo@TdA+>{^HOZ6?~i>Jiw%}pOPDTVkhh6b z&a%E74xuipd#ZRh76T;-V}Axg0r zAvj0-dz(5@kp0>h&X}Q^ynNb#enpoE%Cak`%2wv9LSMM2{wSMR8|1$vcZv z%8!Xfj=9b4^(l!>4NdtsrIs1aW7OV}PCC=TB>)D{29V$G{yx21ZaGk8lRw75#SoAL zEj?HByO@^}zhL+sOy0ZIslX-Agy7lBVnqA}`vUPpsDj^LB~D1>#dY`K|4T40?g{*t z5X~4BqE@x`pPi?LOa8r_BN&7S%N8hs`G{2(-su%!#TfZ!53Nxek#tNwUI zhpRj$VlhN|YWHy028razb0^Ni+^QFCu2;p5d>9C+jEk~v1hI@i>8iA7 zF_qI4z4qk^U67XCRA=e6P|LVCH)q9(A>-dg7kO{ zRJM7gQm>h*3#=5pussLTV_tFF-V_WS&lUS@1~A}eh80-#GbU;xLY@s7qJIhkw4-cS zrC|jMYsQ()p6!(%f~}|lY0(DWylUqahaaUH6ZWlnPG=sc$LTm0X+G;K(X%`o@Y~?ibI>dH@tZ!) zV+|QxO1mz9C+HIOOOr6VTC=XhWvC$CMdNiTK2%g8DKdHth#CD;kjP)qyY~72p}w~) z%J@L$Ug0?xi4qj{)BWwrMiP-+<>WdTtu1-Wp1^+|O`IIjBNAPX-9U7B=tr64veA|q zOf69LIPA2eg98Y2ZoKF0aG-t6bsyYm^AjgOPZGAKd0S}@hUb!(&W`mZG?7c1lLwqV z+$fNr@@7$_*16KlBNK5(s0>BpPjfKe;Rpukg2AAr5mL)GFd3eG>-#=9_+m%dqE5$v zw1gs4dQ!<9RWj@~#SSsm#b04_(AR<~=DaBsy1gt8zv%*?=nG;)29JZ$Xc)Q_<$deSg#K-g7D zA@GIJ7BIL$aR=y5v_H7q12x10qcZ=-$9KYKMX|EKU+qv3i=KJ_Urpy@ADO^quH(#$??7$j23?F*$jdO>I zZDwt!UQ_w!XZ;0WL9)wurSI3?j1DVH%X`+E-iPaKLL@m@ubfpnEj`BaRQ4Q=0+5uJ zcFcTp-@Y>^uiaO2iRNB98V#bm?`Co#N;Uf@?HyV(J{Pz=04AU;vCAcHEMy@W0(EZodDQxhs>-NS*vHNP>?pB{NOpd^tQ95Ww z`%|3t)Z<=9pF1=W82sKSMt4PXF#hl5WLpGj0^7h_4hYPxVgDK=T^#*(lkPU z|K{e>GP=Sf5E^Rn{lATQrYtyI9wpbI8!(?>>^EiJA44glNZI=RKrcEP3Ge9M+t)GW zZ;=e7?A!(Kn~g;D*B)^=(E>i}c-(z0>^k2fSgL76&40pJ5gcDHwwH%R1O%c<;k_8l z*E_<^@fo9x@^V-|tik>j$+B&v_&yl8cf?UVq~WuC-%3%jm0sC6)ZUrahuAv6Key2drG7 zo`&K;p1OeN6yg+qdt7sJ{20s+zu>w&Z0_u?PujeM$O>!`p7SC2O5B?Ka{BW_I5-b9 z41UnvotAASXf?!&N9zu#pU_LbpBkdMXKg)E=Xu1X_u5g(oWR92MO+5F?8coo;Mlde z=Q7E1waC89NsnBzhGzxGMweV+wnB~gdvFRCV;GD&G|A6mPCu};+@Fcn^MaBev<}NZ zC@dtFK7o*EsvqgVayF1vb)xJHrcD7WL|K(zpi|y8xB0>(owtSj3Q|FTL|sRxFHc8M zPq6S0k>s6C%4Dj-cizShGKN(|B#A;3|6c+|K+^ zN?)pU5UjiIKmYprjKpzNbet!Q{U)5TcU(q=8L2MbC*f1Py%6AQu3~eCUlERIegOe^ zixPE8OURYg*WkB)%+v$3VwI83N%@}N`uU@y)}7I5UYdn}ORwANJGafidcu*GjVxe# zW+ut4Wms99*8;jKR`Fx=SNGAf)!U~dI3i>hBksf>48LcU;JhyB*T{%PN1Y*CD=B`m2pxW^NNXq3)ebz9MPDH>34}J>k0T*g% z`6GNIb#)yc%ynIRLHHh#b=!~CX`ly#;W^v*&Hw>j5|zI_T>JDMb`zl0FflW`@oI=s z!@%>-+^GFf?MbZykP6Z4@?Q=H&olDl*Nte4*||C6-QjEQli=A34_AHmY&6^WU4=!D zf9AunIE|AN5Xuof&V9hJ?Q@~K_V+i(DPA@xgBd}{w0{vdWZsk-HCej0>Y|LT+{>(^ z%|0%O>IL!3@UYe;gM&LqXFzX|%B~seOIq@KMP9M5v#V=1aqx0L>bm$xLPXY-5C-$T zB?{WE_P>89Yxfte;C+(BuipFs!4s@wdjtPAS;UK5^iG2y-(Ql~@75{Adj_YQ4wD)v zqmTp@q@pU&u574UlJB7@B-sOftQ@X<%YYrhSG*8rtOeQ+6xdO0%0;*ZTT3`4&HDyW z(EWE+s!&MVG&WU!@ftfTjRcYCqwMxG=Lmv%iXZLl`gECt@G6sAAoODijdH;#wO zkWW6cKUB~fQ}>?CrV+e`&ddZrhbC5Ho!Ya)dNu=NX@tA#NZTcxK|ynWc~$wv99{30 z(;dP=Cu5MT!m|Y%j4~9P*ENxos&RwZGJ^LcH}2mq(>V;4?p!ipjt$d}cL?@$tutIeaED)4SDBM(#YOb5rSq#ag^57!vH*m6leM`Y(O| zp)N|yc=6FhMUhHh$>?Ze(r|T%T9wz)ecaW_|9kF8`Bw^;gy8Om?K(R}FFy*Kv^jmo zf`KSIXZu5>8>4yo>baMzqpC#hLa||yynW8pQ?E%!e{Ms4_2zZGD!2ZVaP8@UR_)UE zSiN#!G(0P2jK3gA#25&|^>4y1pedwnp-OqCij>Sod@Uby!)AY$v$l$i8YN(+z~E^E z9UYB#8_}CZNg)fQk_S`VBG|GSy%IBxi-I*SrvfE!vL{O68!vyD>E+XxC&;OtOC zMmvU&4w<{hiWhxE#g~nSJ0F-{z?vm+#j5J6F%iPUvD$fwm+;^~QCnKo!O;;6!AwFL z@T~|M9YrB~wt7Vg!luV>Ymmt$b$`xpD8pc2I7t}`v(+i(G!DH%V72yt+r1TCpGQ5; zZ9&Dra&=lw{<^W`2Ux}Hz3gFub4WwaX$HR+v7a=K!YGRgxb@Fp34foBIggMV|CG8q zEX#L0h}@my_mJOzI^1eU)5y{Dv5tmRuR!Bu_~%+{5x*jeKjYnOF*As1OWLfz;F`I) zV)dZ_2x{Kk+_W>W6J1}Vly&$gNiH%pW<+Qpk>9UANVTA?bd=^J+L7{Qj;CN8$dHXk z-w!RVv{O)03N@T}82u{WXcCVWxb*9aBj3pr!a=pw(O$Yw~I)Z&0M2iCZ72&r!eVsi9weOw5KR8&i2msm(^q5 zBVVs-FXp3MNl7giD78~76$)ff1T_5P`8tUFC2e)}YmA@S1JT*=H*IT)%V8|!Uwvx1 zfQ<->kcz~x(^mgabm_wVlFFDX_BI<^bxBE0accX|(yAZ+5jzL0+l;D_g60)1ibPz9 z2ZI8Pd$T_h{9Y#}>Mjcf#osvqei&Gwpiysl{*&jWG~+hS&mfuDaig7jBtrTQmEC+#$`El|lJIqwduCR>HJMLVJlaB@hl=yo z$l|(dUtgc_iyxk9hpN8=9#a`t<CfT z0Rz|mzlwA(RK5Fjj!AtP0x?wnW?Hi`ccA}`j*NuGz!xmHQHEjPJr<&rYgEh@@n;z# zY|_Keij_sSheteRF4w7s1vn@a9wG+-rSYerF5c;nUt{B+cwh@w#Bp-C66zXzbwfPf${*&tiqG)fZ{DWoEOlP9~Q*cLsfiTw#<>3D2N9tX6 z`kI-Xw}A^v@-=)f$mEF#y4*zRa`G-=%ci#X7cYeKi0((`T?Bz)f5clba1euYu2NTK zs%klX{@sHqiiPmUbp0=<7TUUlY2DmJSDz#wpJLe>xX!Hy{HFqNUUOt7QjsKJFuyzt zhsL>w?xQVW^SJ!P&~?K>1e7v(Qn$B5boiE1tD(PPg>Jqkr@rcye*Weu`)XZ(G)I(L z<+vjMGC46Kk*}jzGR2kC>=bGJM1cjhaj>Hj$M8eN^WVt1?I$b8Y|61W!V(&uzwa%~ zxAHeMj|bW!V+mI%1tMMb_Nq*E?^Jdvxv=Wnss0LC6(SJ*f4zY%Qf%eF(^uk)Xyk#x zJ6@W-f=YbHjT$NwB|Hdb=udsiET4_Rth;uuI1?8gz4q@PyJcTp3R_g~t)6pEV*+j) zeK#NL(}igIk}_<8Hk2VT40iWDrjdiHh6`3$Zv~vA7fE~eUr|-*s z)>UO5wTZ>96myDD3)~E+%8)`{g(40qSEp2rYPAQS9+3*gz|wa6vHbR#3vGSR5)D&t zB)M+f9prf#+wmM+2jl@w)5h!>QDj=IH&33~V(-35U;R0+{EPELRWrtkW;y^&$dxf6 zjt#=6Kl_p*k)m|TsVb@lbidf8zrCi4x7AcQvpVdr(g9lx5O&MRoPFIlFa9`{TJBz> zbLF$jRK>wXwRBm};VZ_vswOea`bp~!ObUTADETGtqwp%4J971>&t&k^2@*V?d&@jL zLhNn#A1S&-!HH>GOKq&IG#}n76~ozVDg`c9K#)J2k7y=DVzFeB{*krl`ioJ&$Cnt@Ew1<877)#(K4M$ zlPe|obMArb)FAH+gU>;#VKkUUvEn4t= zkWznnk6tQu@OZ~4&1@+`vs$N6WvuTVSGN~og5C$MWhVOw zU$>};QIly;Iz_f>3_ogQGb#cak#%%}4W21i_31PgcZr=4=tyQ}W~{csuZ=1Hdx0xO zoZ0KSUUNa>c9?+U7PLQgC8X4@@TnoMrK|sx;R7OVS5>uFuSWK_ zX`b{wqd*cpjK4?`Ok6*4GGu)D^aFm&+kwSL+Kh`lN*r##-<%MDVTp+G$GFTD$t;YT zx;kvoSSdLgyJ9etA3{|w_+7axY3{-nsF=?v>tH)2BYoZp>nn&Wm!afx)$?)om=q|# zKxJ`?x;CXgqd%*SW_Z<#?rFN7NG&hmnzi@HjF3p!8_O#w2q-F6i7}l#8?^7WPn2y6 zl;W(E$li-xFnJN7`Q{Ix{47CbR=r{t3WS^x}JM>-jAP z(INQXI)%%EP5!s6<5J#F@d%-tU#H%ZTJn zA%NYL?U#7rIS^rv-bEl_hurRei3P6HOXMgY{73o^c1_6|_yftjJl~jbTk+d%vaPwy zAIYC&=aX|Zz72wgdL;&m-PBYg`Gm?7#?NuROgNXG(d2}q=dz3Ac{HzJexAynoekhK zyNdr&?Q11+-mMh8v?w`m#`fuaN|MBSycV{sw%Nv9P`za3@7}4pe3wiyVacqFi8z2O zw0MXo4=#-rSAOT&+P@>$T$aStj!J;}17H zF8k+1aW6_E=ac=XfSs=auvISzt<`)-K#ybb*l&FRI*s94O^%+M%f%?t9!t zepxxwbMD-mrx$=HUu!1E31V)Fz^LfxYTf&DOqJ|%? z2TB5eL!K7ut1^F-3I6+`-|~xylqKK}GN+$VWLiJRD3zm*V`0fi+#DT++Fpp#>4bzi zn?cSx^R6tv$FbBAmrLcAIe(d{g1wm;y7i{ctEmE|{|Tx8dD)JFh#A3@WQ`rJsU(86 z>={y@3#XW_&<+R|k}HnGpYtVxJ6(msX#SOxQ(<~KKN}l%#o0LUe}wt}Jc!3X?v#_S z83&u1nN{ho-q8uPvXqQRW8!Z$mF+Y2EbreVknFG3AtF6Rl;NMkJ8R8xi`b6|dbW79 zeOH2)T4yv|<@lM-|9)DMJEc(Q)b=Y~uC%gy6ai9C)eiLw-hu9oGVuaJUn5zn40(6p z#E(o8DNh8%0Db)%LCsKb>UOdEe*Fvfy8k~VW0^ZC0zs7Vm5R+bJu@>7t))W)e=}V{ z$CR^0JnODtmTgW{$&ukuSGtpa0+IctTq_RQKlxmn28?ZL%R94l>53C8rAn zJ?0k+&Rl_)ITUuSV&KGV!Z{mx5>%)9nNWnD(eVHN@L%O=%0x%`Z0yP}r(PcIQy^9A ziwYp4%Msgu%5!n7co}RTOI3KPQ44%W{|1u6H_zvYUBNQ{8pk@;t2&^!Yq`UJ@Zx`F zPD1yL^KzYN^v@Sm$Da|f{NRgE z7r@_{D>p(L54~(fZIlvrCc((Dwb?BJqz9QWpm)Lal^oF5{-4Ay=jJtUt9vI6E~!SL zyhCK}4C|6ZFZJg2L4GxBSJDAUJQFuTaRnk<;6gFiR#Qg2kmTshg;vwPpccY6&vam{JhS>(y4^f90R` zIsDnGWc|x)N9gUx_&kSyzSiY!3J!sR16ZoS8e1KO%7d4Fq0(rgY^ABuf_fNBySxqi!;?y4C^Hcjh^CBe0r%- zg@W{ybwV7vvX)d4&ZD$vycZv-nok~##hvzpPclWX-Jg0!eox`rf9LD5R&Y`Ovo)Z< zh%_wtV1F|7yWugb z!3K|2rLnieD2nj|D77^tX_5>+%Bf~u-*P&$}5ZtB6&-TRDE06e6< zH<+u1)Yg_KvVe^`EVr(nv9yYGR}$RQWb{qVLNEyo(1dLQX$(v*Mp$QH_rD`aI`q;| zR4f^mlJUCV`sPPMIebFIewLRSqZ1OaXhm!ZzX7vR+uOeB({CU*!j;1>A|mjP&OHrv zb!z|c=;$Q)UPeb-Vo6CJKSRoSFtyqfF$Vk^Q7NzbS%d=Xvtl262Ex}-U7s$h^`SZs z0qN_rt-~|WLCK>~)^K`(X)wlg|LD!(;o+~m3ony=CGERt3j7^u-#LB~>bhGcudsRc zZ8*H-=$M$rs_`nPhtQexavT&1&Dp|WbT_c(}1Q1ubOlA zBRb$l!@tA%bS0c*_)|Z{`*5+T3|C_Dl)R(DmlW2Ip17IoRjbfiW*7fF^VNPiFi;k@ ze4jiVHb6JZIYo>_0=c}}@R1?VqBuL4pq4sCV5_Co+!XK>kB9~yJ8PL27&$?R$ZtL5 z2Hf~>bDOM^=esH=*6LQu)?qvVA}C3_mc8k=ZXlTcw&+7k94zzIAMfW(4IzGS;?7wb zT4FE+M6LEPqTlW0i!^v;v5!x%m`$)HIolW&p~7DBYI_mAy?9sS)a$@N2YF(=t(C?5 zDU@ze5lxud2VW21X@Iq9RhGHJ*yjSw-S0Ws**H*3Pk0K>f$`(jG0p;-OrxTTLo*H* zSQaQApAwogZqXGmZU55NDomAo3_FlI_|AhH&u;!_N{R~j#k(rI=k&qT1YcKp0hsCI zCB$!`9ni9K85}PGx)VUSL9Mio{P=(){HOS@ZX2o}v0l2bS7t58Ocq@#8_WyLPLMh@ zO+7<TZdb&;OY!Ez$O|tt<&_RhrkxeKOPc>QB5@iP>l=!&)IXMw$Jg9u0#$5#Vm}b>q0XWQbi6eXzO~qnRf|1X%!D_}^u<8oY zAcex}@0*{DnvwkX5dAAr4iu!x5a0JU}xfo(Y4GGSta>t9Dmh?yqpeK7fAuU%XC;NZfqz)qQvDBuVVRO0kc&^@=1c z7FR3hcIJC>(5$e4r9VDCaFBfeZ*dH10dOX1fs)_8x7P!FhT{f?@Ej;gOY^fdZ-PTG zIx32pdf$&ye{VLSz|>_^mf7RvXcu_#U23r z(J8e|nxB*+isO5sB)ZD4C(07rbBWfqNm=6Pu<>#b==R$#OB@d6XmB(7E@u-WE>Lo@ z-^uIe|1slmwBG6uIyxyY3IvSLJL3iLHG17l49!~g+BlrT5R4;Syf34Qzt-T0e*wB5 z5hnW^!_L2uC#p$7G)T zZS(=lpbT=L$sUh+7T^2b_~2`ju2@teb11FwE8NBe#7`Iw7f(#MPOU&R-ab76sU#4N z;vH2env3^SQcpu`d<_qsRf7;=J*7F12|F0Bu#K(q>~^zl>laD4n}fd z;7@$~U(jXKNF0+42gvz9w5{R2dF>00-^06o3uD#Ya0>sb^E`Lm;syZw!o=^ZdLbPs zzkr)HMMYD!A5DyBr9+&-Sf(;J?mLw9)59;42c5*$6{BNgkK(`nolNNAe z0(>6zu=#bBmR97Uf(@cYJTJ(J;Jmu~j>)&?XeXiUN3H%KOi6)l${ESfcj4RgtX#WS; zKkS*ls!`0uy+G4B4*`cDWpUAtpBnVxw}I}R2<$#~e#JoU{n;s02`NLVi=% z8?_nm=vE%>5N{-0^|`#rEqYu;bA zH>m(eiD@vC?;cp2z|jR2a@(H(T{V{;=|*txqS5Lt^x^M8Hu5+_zNc=b;v!- zhMSGyK*_CjS{e-u)E-{XM6){od?+U3w8*)61>`Agv?R9!jj)H%w12p49DL>!Y;PPa zMOQ&Hh{5E8I~?Y0OVE!inP^_PcBrYUD$N0Bgv-Y18ApBBKYu$rqee!cE{aDt8}aIC zfFESG;q5zcKotS^b?d_;k`O5-Sm-q63Qu>3@>S^W11H(i%4%kACUJMg{V$|_0Vhju z&}50J!w6W5>d5HLswtR11hseM@GDwTtLZrpUzL1s&d(Htc@lZUbBh#}2#1)J$P;ZXE#mC~Ig!Mxf79#FOTU4ZqAgk%LHK$X2;(fx zI!~XLJ5grz+iL=M8*DRsjh8n~3CY7+p+<&0vdn1?e~(%C*ajsMa``6p3k3Q2zEoA+ zQWfjx-;C&n5KA^j-_a6%uiShqK)L|E`4f?q&|Fl6W+&&ZTV#^otJpg30FVKhDbgHD8t|6XjXt1%VfN1uvgq+fQ{t&YlbNvO9HznUME@I4HT!SS( z=4W_<&(VUlf|qsL!qtotaSeGdHoyvAPb9EIyl-+%mg;~#V&1STprK0Zevf_}D16J(>hciU3~(c!cmB<1D_uW0th!yyYK-t z_%ZEz^2i7~^pXt|;mvkk0*b%`nSL{9&p;;#Q-*4pZ{pXzz~9kouU?=J4Ud}22m15P zcAAi3`Ckum*x}9$*-8R#3k?PJTw^8Kg(&R3byq(3a>uSQn<*e#AHxjm8S*ruB@vL@ z7Jq-g33(;_6vKZfi!q%m9R7U{cWzLG^i(3B*2m3E18F0<8vu16MqI-3LE2~^TX?A` zw#5{ABw`lLBrIT6R>x6k!cjSDU4HvQKg`OEL7okMYqe)3EbHVTv`_`?F;rpDUHyQZ zh~4$p6WisX9LbdVI^lZh`3WE1*>%^KNkD1zh7!kO;TL4($-{|Ul9)IO@+@=)j#EJ@ zt*5?xh)s1rDlvU+k2j>)LF>G>X2m*0d4QBs+N=HqO6(dCM%}zZdkueA;lD0hw$dED zisLyNz`v&?d1pE|E6cnAx5ubmV`;c7pOc)!FCGYmfa1b^G6@(R7Z8VD-W$e{bCYmw zd#LP#6`G9i!vh9C$GykstBG$1mlTw{hpL=%Mt|l3LI8}0{276yOt^euMd!?tm7 zlo%v|YAi8ETd2uHO2%e{0#~wxH`t;bWAErxSq?xljeOkY955ji!lUyz z%|4NziO^f1T~2ZPcz-EyE;)Gv>ZLrbFZbOLsuVMj13~N5|C84^|Ni{vd;tMf$@vN7 zsxg&+?qsg_iXdIJF9L~l(o>*gQ|y!XAV|ERH`o$Zj~cJ3jOqo}7mZEDDnxUDt(}tO z0=|&L@7;a8t)$69TBo2%IqLQ%Ie}EAyD&-?-JfrS9?i?lOokn}2dPDzxB2*HYInu8 zOD&`GmmKs#rV6wc2}Ft2p#Hc-tiaul*c0l2k5RV}r(S=5omN$4In#bMKsW+}0f+$Y zyX*cNVT5x2DKB2UD9~JYPc7OCe@vpJxZOUPy+3?~zp4+u?*t66zv)Tybv#}w=m?cK zHt(v;z3?1-Ncm9YO~Z79_hJ$+8nc*J9@^dBUdCx9D4+Ei!b}3TUm^;@QW%W7O-Kqm z!(vm|W-kr0orhfAr<)tv!)19(`vx}M=}T4EympClR07Oo3omd{nZ?(Xl)T(tL_#LO z0^AC4U*Y!DrJx(GNf9>AamgD z@lo?5Ekw=1ohUN>;jJ+*-_4tj@M=PZXS3Avv|;?N7(j1hv7qkZ$+#8!*etmlR<`AU zM!6Y)EDGiY*jJ*|=*>ro@DZ<1*@iSvx=eV287=zGj-lYSqN=fc(0l+3yZfqic-j%1 z@nSFMRZC05rBqgTtHnkx3!jmzd}S-N}h(@x10xme@wvTjF+HJKT9I&akz&)dzo%=_Z$&pMg~i=$Hw~U z%cC0l`dkMl9k)Kx*uq|5yQi7K_1-&eDXnV~DZsg4Kfo`xe)D-SWK-6RN2#5T*`+atQbS=2_39ZO-e%AI%OSzSH|} z!($xINnxc9;tQcu*Yr}ueRS-)j$Y!Yo%Kcy2jx1PKWk-EIfHHzIoMjLw)+Ea<@c>| zrg2p^AZBFoe&(s+1dAw3gLKF^yj{@gx?J>_UlGQ^ysUilP@Bxolujnvj+EF>wOmq} zh?7-~ftbUY}Y6fyejfJQxd%#eJ}u z@56P@tZtYK?DfBmC*Y^51aIikRG0vaanyxqBL?n6dLl*1b&;J#^ZxzJd%ox>U&%k? zweI?M4b7mPz3(t}++7?vhwwUf`va*|@GI~uKBa&KDcH8hxMG1fmJl23 z1VKOGIdlb#K#QER==#uQiB1u)ND!wu&Us0=?+p5qf(^v-o@GCkRy8y11i`%?tx0wY z0djvG6pBYgq#PzDqpGF+?hdOT!T{RJ6j`M* zsAqmh#CZ17{XoYzU+(%oAKW~WWfr%eyy@Wa;g5Uwr`k^*8z+#jH?*>I9%iOLp*V4$ z3K4`DMSUQH<^!MC7(Vl!EoruM*MVXh8Y4-Bb+*PvBKxH^`fe!#ZmBW z#v5)2;J}s4ec&U+=OxpL?YAGSofx1{&s2#J0nMF|$h5IHb>f1XiDjnK)zVsrK>?dL zR~!?;hq+Jg;t~>qRKd*ogK}g;N|$>6N>MW)OZ z`$;I&aVFY03_c1ij^9Egj64v&1W_?&M?J5hzlTau05R&mc0|rPT32f;um0f%eEnDJ z4#x4b6bS+ZC^~QfY;?-vU4f}XWh?8h_+2u-lzU9ByiFO(H`h6}KI*ya4f1Eg7Fw{D zW)z=}YMn9+9#}KU{JsWr=x*`ZkBoopmXqa)uk6Q8Cc4*tf;%E#vxq6&pYYThcm+9+ z!?=JLV9tLY5s$_L9acu1Xodb3$}%(Yg~Nyk0HWYuyB~VfpfVtIO!9%7n-eHlIIlTX zkHJ(yOUuF+40!x*>0&MD7-Z8~f?9B@B)A7F!n#rdg<{tAmEZMhk>m>iYWmsqiz?7i7OtIYOBqtEP8@ zi*uABLZMXv0^)6x9Bw3l@B0SC_PBBYTf)B-cK=@{$DcqBTw<^T7_}V;Rq0tkx051Zpxn=$BT?xDfL~8 zl#|6%RG5p#d2mA31%^-irk-T0>Cgx-q)%lkCU}7opw*~H%9BnNRQHEt${tc;ypD01{)R#% zPbnaYnfdl@g93arbra&^t_L-9*SYRxsosKZOAkhT^(lldcoU7fp z=E1+F0TOD-vf(9aBmOHtU_h0M(U%UzOv6pcS6_U9v^<#lZEIRngu;_SrM zDLm!~$`HFYmRM*Hu-32f%k6((QEYK~e7r2Y)~-b1B`8^8bGmTh8Yj`aMh!6 zScay;8mlzA>s&c{g6sCquW?w0ll#i~W^%m@lOLfI^m~6Bl}#UGH91+|vLQa4M6)2; zCZ28VxcUAx=NGpb{QWXb!tVZtneK9etr-k!Sj5}QP~}({piZc!wIq5U`-K{d zkTjMu5*?K)lId~XbUPZH{o(h|a(o@ewM{eOA)UuNd1g21)G@jAcD` zzm?yOpZY11MYtv_FE5~Z()V>@C0sYu{ykYHXbh&;{-ejm3}!L0N8?3dQotHb_lhRm zJMs!^?aSK8s;Yu#zG)M(W;&d%2iQWKN^*BrK1l(zm@tZhY(@+QhDz|7mqu}jO5M~2 zhr)e7wpH0C=*nkcX$+g5mwM0}FaAt1-d!ELddB4KiVXdCVV6o>j68S|@ri#R!uT%t z`!&Id#bAEY6x@om0aD}>&lpJUs>j+UD2zMTcF9gH{X%J0I!MdO1)#9{1?5o3!vhLj z-0_!AEy;A}aDH%3*>}wtgM34|TlP2|&x-h5QQ-lNj)Fq@um1k|s_^je@ybntjR$QL z;vbn(yiG_C%Do>aI+kOBJF^I-o~f2|s@qTd)*B!L4g&>ph#KjsCz04PmR%Xyz%Jss zC)a3T>eeX?f!woQM@p(uO%7iODS~}jbBDei zlAt2r$Hce)_;GZ!E8vjU4X1|NuUu|2;$wg@dc&W6nFJ)eEkF~-W=+sSjivRaP7?$o zOuq;iB<-~1+k{~VVjFtj(oTr>G@=}ddp|%svBX~O*m<&1_U=#@>fS+src}8( zrd({gEcCepI%BEqTZDuBGq6z$Ke&n@ZJ{-<_;CHTP$-HjpS$j(69l=J57y8!(#Bl* z4`vya)fes=grCJ`D4a7doFtyK*EwF=QDd&$xkVjvp3%W^6YP0O-^qneymwYb>M;Aq z^m_-L)ec`MwM@c&3yBSheV#NB+$|x=O;g8eR~P1$mhB&n*dAF7h?nGPpR*hzR~cqt zl6=4rTqr4fYS?|$b9OB(Y*e58YvJ3PPnYSbR>kIk$rRBjTySt)BSArA-l|Sn)x;Yf z-owi)dVzn4a1(9ua@avq5+pikIojQcPn2kj`$>PmF4^EDptz(aYZ`B6ZOz%eX|2bk zh7{lzGyGwM9T|;a4uQ4C@=$m~CPnks!IAjHdQiHi?l(*hw6tm}Jj^ep!&==_m5M~W z501Q;+S}T02=Q?5xiUN_JVg*X^{w${YHF(T2Ac4pUA35$uD14s*U?=`8>xESy`n3Q znJ;OFLbt(ec3@9Z$9^yijBBNMe%_K#3)AP$BVLV`bj2oMZTqu$Y3_Mk;iS{8bZCan zqqy5f`uY^x#p`!-4eAqt3!Ih3!{ktXIxw}+(ZPPx)481CGeU-jhMxP(*_e3vzjTIcsb5V*GPsr*`o%Ofd;y{|Q;wdZtSpb> zm!cwG&6>9MXUVS?Z8dax!v~x;M0dZQt~cgTvm>Ry(%jnWNIUUUMOg|ie<63`Ydkj+ z-Y8wZTwafx6|wr2YxJ&}|3_BVJg85^xVa@r|3X)N4j=o?9;lv!RE>h|#L--Gfdr1$ z5do6(2n2$C$V`NkXwO3?w#4tpnO}_$eN0BmKu`yQ;GM)S|H zkyAqAq(m@w5XVh}>nD^~(Q%?~tbVVVduMH;byE}z7bqx~OV`)eBbZl*RBKGyT60?h zJpEiu2#Af1d8JFL9W02%UN>Ru9GD4_KZ?-1++@`3MF< zl|hu=OWc;X1+3%J&;%HYdPRt~2jhk~mrzYY4cYDbp!$eP2WbelP{) z8Yqyw&0g#t^n`gGZYEE#1tz9up)F*|PGG20Y=%W!d_?2mls53fRiM$%_xf*h7fgKV zKDKI)3b1}wfVRN12LAqes};mwJvK5EWmKxY;+&K3{nVpLyQ{4@qvJDA&VXfkLc_0P zG4Y#mB=4p`^+YdVS%JO5kP25Ur}kEI0D0?~Q(pUKx{g+!o_erKVh+&xVs6d zRCKw#{;0Nl&U8i(gUQB7n*4r2hCp!L*qbJVckwmXH_iZC+g(mgyFRd{z_#ADNK-Q) z6@#%(PhghI{rhgtuekV8{mIc0bd{ypl?dkWDc3NzLin`q->ZP^2hZa}nwLpTH*YpJ zCaJ212O23Q3fVNh|Mr_10cs{yinmC_!mB}!8^doKn5BP*-Ti@-;KnH1-eq5IJAFb7c$CLWgcM%=B%>GVhQ`Nv0J5)wp) z6a)obOw7B9tT{88VL{M49KA|2jSI z_y4|gy;s+By{6xA-}~Ns?X}icD=;jd=DZ}KRX7{*_;^$p)!qsFHZIQ-AG3 zj5gMnlFfHe+_qF!q>}}A2vyFB()2%twKGZF7u3{lPSO&i#avSjo{%`QIXUGU_#LJP zj(RUQ-Yd*-&^6oo<>?VU_pwn_9ufC1vs9eW|7bb*?eWsm(!Fhaj&d`ea+!R%y1FSa z&@LKsiHu&8O^9+*c-;iT<%wF7=Fr)eO7FhUJ^X_Ctm1Bt6FG-4RFw)WzIanPPH_X}A);2%yoZmTUD^&PaRaDZb{qup< zMsNS;b~!w%txbU*68btiI()k$jD>l5ueZLhH&ST)zPRX8)QuVT=Whj4N)3M6 z@|D@fb!AMj?XcKMvuN!rIVnj-b#P3Vk^%oGf=gv>Dr|yD)S1KN+*ShNbG^X7*L1zd zCdNQ~^uu)-)u#W!x_}`=zG?cXDDgt!h0qr4A_!J zL}D7DK0iux*@yGehXMBbso*Cc&z=q)Dw@c3ZP>nT7OaUS6>m2oUS4Ig-(}m*svOH~ zO_%u0j0~@_JXti9=L5Oo9fd5#C*T}TIQI%l8f=^y6;jd-eKsJFvVB7F{TEx$W?nO9 zir@~~xqm%1$!GzI(YI)6_@V3RDanL~(<+;~=;$0DaplK^+50=anW-p0iYo-4p^h_F z_cQpG14r?fBic4>RmO})x$VTmFMQ;_PAuf-=g$-`jR{XI;<>jZ6<=a3w?kB7sSsbC zOxVw}NG3^^tlF1l=!xz*$UC#L_PlZbaN&Aq4=;<5Z9T}kdb}rpzraM?F(500gV1Umut+ zX8%7I%^Yk^9W47QBcmO1jmgre>&pup>l0!C11PR1AL$vtHj z8z#Tn1MUe)Mpb;&dadoY#kpQaLZONg9D(5YOaow}?DWML;hmDpKlEs6`>gZ*17ej^ zTA9h`hBH&LX*5UBc?X9^5+`$L-j#;sc_lbr*Ylr%MX6wZPuKg_5GIHAxZCTPEw3@J zuBT_r=>>F69?DMH6P89649^?LEekJ$e=aM{HIsAtXX*UK0$b@5X!dcT= zo~Y{b>yAj~9EPs9{^;uy3LTQi>fKA!YlY-PM%7j%&d-37;+x?9=tRbj@2_%lNJC4* z!?t={33cAQq11H|J(-{u>d||fGH!Lhy=@PhW>#-9=2ZxAa)t!_9U1YOOVc0k$ctc& zypd!aoyh(t4Aw0B{ImUbSD&>ym`;F zR5-LV=cO4!D2yC+=wBk(I$Ha1WVVXBOu{zO3znSKqk1!9m@;??OC|X8=kxJHux0w$ z(C~SgC0klV`xKkOU8-0 z8k(j=o!v@IM6ZNQ^(tk5UA#Jp0#QY#WNmB$rs+Vw~I?|z({O*W(G-<$V{;e9mVs@(3R1;%knEqI? zh50CB%h>+uwWA_$nqlH`1v*{cy4gQ!63b?G+S)KRc(d@3JBT5;+#*jqT_d<0PatE2 ztbrFXtAB>gg=79%>&TF6{E%x@^|i~FC;R+^_wHRWi%uRXWGP&8puT(Vl zPBb3Cd00i=>HYCT;%vs_U9Q5y@8A5CqoLG_WZmu0QAOft%nlr&qcgh9xyU5dt0y7xG|&r>(_M6Y`3n0snPUohW^qQ3%&RDh);ex z*#5>!Z}*$dG3GNSO=+3yaLdfud^{+Tooa4w4i6!bJEtx5zi1*fGBB z+sRMh)qYd?v9Wlhj|}^)R{9TabY<%ArZtbo#Ew<3lAeh@l<=(D?!#wP`LJYtZVI+_ z`|0VO9bJ6#&iH&P(v45cD70T&M&HZvl8j7J@@q?&^6!&9Mg1bnb^u4f5)?ioh31S$ zf-h8s#KbTVyW20N8k35M~9$ zV_LY?re^_PgKr_c^UR4Di+LbM1vn=~kzh8k6iv|J~{g`)wp0 zhaXn-ztiN|zC93$2&B8Smzx*T8K*?*QIFCTmD^Fa<^Y7eh5@oI&G#$@$m-vox-8o+S(%{ zBR*jj<*0ru{uGuv-#hyi9K`X_Q7YcXd>c2-CuMw!8ieu#=Av-|p)byT0)_?mXOq32 z5=t}$W1Y8ko!hxZT6k8ctGO^Jxprvf$i4Er8bmY||WzvU=h@7o8rF8xa%7Ax2Y1g`AhLDr|qRet*ImXYHjZu}u05|Y7J zmHAhLYOKHh;#k)BDsw$E;r?kZZBX+4%NUl6Q%QA0J3UY6wIU&IUQQ1w(Df3?i*2@` zrL5%-Oz&Gb?q~4ih&+kAnyBN~e^K2@R#m#^t~sfk7)(4^h#T$e3pK9RSf7qs$Pw

iC!=OCHC9AMz#cBD6*ld`%ET5JhMWa>JPXz?N5Pq>2-N@R&B6?Sf;@(^?lIJXj?X zXhl{SZ@qLRIkg8_=LvUmvd+rd$9hkb5qp;GJ}14O)%iU_ zTPQY_^ib>h4K1BJ$1LV@8D~cIpkbKgLYL&X>OC8i{*quP3s8d@^cT_%%@1z-Vw^+L zp~t-aI+eC?Xmo_voy}vPV=L0$|7C2BKfcPdRK&@zRNp9YNG;@&OL=P-+8?IV(kL$c zx9{}70ZV`MH{1+LePW=s=a6rOd?5;8Y3xTf@Tnz-}- zl>~&jWq|=!)}Jxfg{rC)B}+A#9i5$jG&}aakvy#wF<1Al-O_upOd4eBJJn9H^yGN+ zzn}Cd$$r{8UeN!}uAg^fp(FvqC6(%LyYJWjxF7?wck~t3t5m!MJQjOHcb{}K*-RkN zpj^l2*`>3WENm8L$6}`POT^bxB*i@-X<1$_{QaAutiJ!(ubYO3nA(c)fAw)kr#NFV z9>o8j8;qT@_A0?74-92KZB#kgC#@;T*~n4GUZQVqv+!&Sxy(8AFE=MVyLl!PZ+6P1 z=zFmr6)yaL=O>~5wF+SyzE9luoe%kX$RG0W@4d2LEc&5*}#-d(XnwU#{01`4MLwMV$1whyaKhjY6*dzuz26FW(6J z;MSKVuMw4lWl2dh4>_6qrjUbZXs|sMcX!s%NKWKt2);k$DyvFe_G#hY$@bqB&-u_= zkQkF%*38UY}x4q7kQoXJ}`KaG9RM?S#TG>P+zWW(u zdH4^xw(PFrR|=LDpl;;9|K4H9(b*ZIx!0){*_t4N>uP8?SFq-DaeP5!zA?a2efm;# zo3(F}>X+-mV{~pO{(EHXczq&rFFKL2?AenbXk*Ri4J&nWRc0li1J;~_LvZrz-Ex{9 z9ie0jgWARvH>p~seG2m|lg!fH$$gjf=}qm#AtdwQn|jI~08gL6B_?w-3d z%iqya4x&7%p>d`5$*D4nJYKzJjAf}t<1+y@Ar+;O7L+YD&`Urmn2OBn>NPSa zc?mh;RrNtvi6cjTPghqgO!OoSE&cixhi25$m%zQ9ot-7?ZaVh%(`a?)p-%;mN)T6A z3$4Mo8rkhn{yX{~uQWDcXP@HYTAAz%I(w_7rMa2O?@*ATiOKJ`=8Z(+=Uru!ZXY0m zhpjKot)?+Yk%|!JYnS;RlwVn_C6~DWZKr3sdQqrIeWXYkBVu(?j~?;h7Jy78D?a^Y z+jdD|o(+|zMIM51EMgnfq`(6)2yDAg{f{50eOYN~;~zh6ZvO-Pr4f`e$W>w4@%8Ih zR?(m+-Zl6*!BTCwkhgjo93>+yHc@9q7Z;&hHebFL$;!#8#0uGA+PjsN6#$N)2Me#$|rHVB^muf!I@e4~j*=z50cY=2x#? z)zC0ur}@Mv`0vixDdheVZ-L?tjf^3b8^ z0MI943w(f?`NMTiK|xa#wGctft*l`cVa(iz4>yPFOYQ7b^*!_8<|M$C(&N-x6UiY@ z5=v`^Hm(ro@9acE+1482xLWLruU}+vgdaGOU2*vEVX$J03kwUMKR5VvXOplnQ>p?m zY%6nfNHC9Q7W_I*JRstD$2?l}_PCh+fEi4^^z=S-TOSm##D8z4#Wa)F=4O9?QLVfG z5T5_@y0k-+QvW`e_HS#APL`FCd6kMzYjk8JmN>92HYGKnIxg{Nl+MslA&kHvSpr#R zP0b0=D3OcEJc@{rmYJK|mHgV&*!Wuxa4buKTQGA+Z%;>CyZGlF?j1ym%Tpb+>Qow?(m#IuiDqecMhJ60B}GuPg+X`Gty{OY?)r8~QSnVi z#yS{baNJv-{SyHvwaa{!6RrDXrG)>xiU0Od+EJ`Fv=MSm>vmYZv&z#R`TO@8I*n>- zhl7ZhJgCczW|Fmd?3I;Ef`Wpusw6z=jvWvC^7R7h!(&0uQ;*f{LqqyNvclWBp15ins#mGRpavL?w<}s%65pdLYvfQm!&~BkiUU(rVg&d9 zDIB*I0%!P$QsMc?!QQKO|CY|b)VtTR&s74`8yJhSDt|-53$xrOLQ~TyZQIA3!zyM# zUdT=P*M`i|PH%2*hDs367+V9ScCtAt6TQ|C*ALb?6lUn~FvzM>+&zcXo~PQ+pdmXp z!0n-JV4_*J<~~lo+v84Xc1k3K4Y|sbG*viD^g}{J3qhCG))s-J9qnRp3BgTx_v%$8 zYy(z2B*+UJAKSp6gMBmvLR?xR2a$Nf*MQNhq~yhmvc9Z6jC}0E!V<@hy@9y^&1Frd zaKz~B>^HX>YU9d%KEe8p(XZ6*5%h3DhM2GmPZp85MDEef{JMz+#P80r9z9NakCurA zo%FPc5tq@_DhSy{aAIY&W=t{wUFb_d zaGf7L8WgAJSh?T-+t@ei~GAa_a*_;**nqgJJ4_|NcG(hUgBom07+0&<_!igXvS_>XR>x$_>QPq#Z%WrEda2Qf9>XvYsq>(3K zSR@+7nCB556*XkE@5 z!rwEV%S`~2t1!3Q%^v&dYkB#5U3k#401#bR(V}z2z#f>x?Kd{|zjaG6DDg>jw20Sg z!N7o#`dK5boKCC6#dL>gayc0?v<2{)=V;q0yvFS8sZVz|BO)p&K1et-R5&*x_$Vss zAo5L85~}m#8BZ9QnO}@7cfEH2A$JYqDfS$c_-?0r^=eaI>-EM=eSv5zYtk)Vm@^*tCGoq?^0h#vCZF1=n10=RKJ}Q5IdKG@pFRC7XWug4&JyYrf7^O z|1YU^I~~&Tn%7n#Y+;}@Vs!hs1>w#|xubNu1g(lRyU!%TBGW8*<2J6+ZoN0xg}YERt^01Gx}JwNK)F}$N7-QSD!7Ve~cYVRZcnCKZ7^4pGYK*I*Z2KXD1&5NKo5YcFGLQEVX@)v9wmg zXmW<&W(%Cdrwj9$q%#ky1HHDu&_Mb zk9|0j5rYLbKC@&c(22i}q;kb~dlaD*rgXtm^lwDm#%f962DvtHF;2R&P(A9;NbW9XW9_ll}C{ywVx!y*&!J zhyNAQLsZN>k!T*;_I?87gd+;GJkElYe(2Dl!-qfUmw1WQrKJ`EX$b9y$tyncGMl#! zoYbEE3zW!N zrrvR)x0SD4K^pVM4uLc}dDnqQ%xr8+f73F*<#-G}Zfx%@z?^Qd#aYC)%m2op!GgaD zusr6;6U>qM7LF_bU$q^p#!^ueD|{Hnx;WvovtPe||FW>q4TS=>4l<;_!^4)=);Oi1 z-(8s(N6VTt;3&e(%#2JA=ux-zZ7(k`dwWvn*q{(EjE~TL0c_s7D|BVT(%P|jsheUG zCs&HTwzj=#3Mxix8$R;XSD1q8PCci`6DHaBf0AEfmQ?%xFDNtmLyI9;7-+4-)< zBv+eCwO??c8;N)(vf{r4wV-cl81)}Dl$-~ zM_yi%WIAmWU@$D|Opi)rA44dOEbpmPcZZfpqz`@u9hUDJ8m{OGx-D)_9vQH08&*8%uU~*T+C|eUyPfO;8VMXY#$;rvt+1YxnK3wv@^TxAoFEMu|YisC>-g^b& zgyFcyJQZHSMJ+yA+X96KlpIgJZO7yQ{gP22*w|AavC1aKyNd#Zv?56n5nM`zL|)$7 z{;54|Vw&pBH8Fy4c8Ct(kUt=7KLDExN~wB&tLXuGvAPM&w?zw`%;++>cHMPwvad{! zcjL~c&8ca(cC!d&VNe?pR%P~{o@?XX?r!#m7-RUy@w#(+8>s#W3zn!2`EIb+Ii#k} zk3@a&TtRz0E+%F#D{DIUj`f$go#A~^3~_N1EL-kek~22uq=gA!g8zz2i`3(O7pY#C zcu~Le%c=88Hd_hx_iKG>>T{$3BSoy4AMkrUl5BopG<;^V+T*9PVNZ2qPPrja4%BNH zqTY}7F!|++j8^15rVyTL-l(*fFTsAogM9UhyNnOb)D#<4dbHya1p*3&hhL$ym=C)f3=0}0Qi?_>NrvF~Bg}f_it`sI6>i7wCMUf{>N37|SAv^?-W7J5hsMHalD4&LtLI^m z_P^wCd48hcJ;(lu;z;DNBb;-6uGd@V&au<5vDN<8 zKSSM!j_m#WOn$T-cSVW6Vzy|$P2vu!F>w+aeWRCOHzevdJB*VQUYl^QblGY!%Zw02Cci1HuzgDx&t`BU}R8kxM{CsED$u`3`mN?^=LIi&TD>`+`4%IG0 z@Eh(YnFyKxE%1aZ9P+=6wdg5jE)t^V@87QsPJA=smuQx1(fc#O%{bPPbouvytJ0op zqw(kFj6^Lf9QDFNLO%5QjihVbI)5IShinjb_#HHYhTSy+jB*1>zBAhi9?~=}F-i=w zH509uqbXCq@KMLqL?-m~@XI3s{r3~(n0e=;;87C$q(IDED&` zmVdk$TXW=)EU>@FJXIzUly{{g|Ib%@>C$-q;r7ZmAH*~VQ6Ioh{d;_RB7+xmcy>@I zvl47YDDOrY)5`wezt+ImbflVM_ZC8|fEEMaC-Nyp{-IAV?Y40nUS=lLKiy>;VN6>= zMjihbZ7Py%69eoy2tsO!+*A}qbMjY$XS8?wqsM02-@ze&?kpXlzJ0j;q`Xg0X5SAI;Ot;e=Baq_H}!zS`CK6mo{lr)fy*z!b<&_-L9 z+Km(36|@z0KA)z4qnsbO&7jj_Bzd? zn&cJ=!d(2G`SbSI$7M?9lFk1XJ~#KvVD>X0s#5&RiiS3nWoQYOEtdf zPQ4{Fp?2nMmFxiybcXQd86ad!FhYWV%RQ({h`-2?@n5Z@dugqDKCZ>PkDFUt?@s5~ zMi9wm-+r_~IOHMa-TY4DBE3kCO-JcIaf+%Yb8H{I%1$N5Yw+KTb6qhTF=T1|dL@Zm zt2hi{{)WEiTr((+2PHgQ01QA@C!NbNqgj2om#UywA7DK6#`7OAnI7l79>Z?Eby2}) zPlG#`JRF%nhd5Li(vCT6(c8V;Mv#$7tc3S?xz7~$e|t&HGuG+H7I_{H3v=_Q{N@cH zT&yBp9q-J~EH3t_B5`V@LHF|%V$|(*Gdx_sgm^WJzF1p1>6v;zM*GD{D-t+FQ?Cb0McuFpW=xz$d2y=zT`<^f$o5>%(%A0Bj#N{z2xAdjp6aoeYb=`9F-$ zQ($KS4TBqyXdJXZJ!X{Rhv4Y;vZ<-*A3WSuH1QFvTuT4+z{CR708qW)-?@n%$rC5W zFzVE(TmeTH{vUUkQhg0&g?4jcNOI$8e}Vr&FCk%JS7^||iGy!STdwJzza#>0gTtkX zi8QPHYVd7)MWsCiX7@SC|9joF&0|%vw=*jYqfr%{W9Rc;_t4<|Qki2J{TpMCO|msx zGW0IN;29b0Pj48!K-Br|@$t-}@j{put-`Wk>H(V%nGkVs>Zv&Xo&o(Td@LDJWEq?|B1fZ|q2F}hp z>ZL6dcj52_PsHp}$HjJv&tfgU`o6guA{Mz-0lx{){8RK1<|!Z8ZT`oQJJ6 zXtn=<2~iVfAEV;TGR19n17KQ*%IA8Kb2^zxvxe@a2VP-&E~q(XGBRJl-1xL!2uoO` zSKEqC_sQ+FwJw!Aa@w|PIvKqPSl1|Xk)0`qVXp&=|-#JDMP`Ecb* z1L`xSMtU-h1+?YtF_@Df8*z4YRE!mxf@Bl3?jE4%7IsLkF)2I2|Eb*F`uWdmp+XREGbTsJuFG1KFZdBZlb=SB4*!?&pAqDK8$H8VaXLDRuQNQtZV1&UAC_ z^XDmUz5Vjj9TXwjDX}_jYa5uo;q@CjKnq9h-lC;HV>8rI&I|aP7ofd^r8J&cHl5Iy;dvgsTYY;R;345 zKsdC~DUMSP{R>CSj{>r)Uf7T5ez1u+zQRuW2a=jpgt7uYI>FKf4-+4D%ngpiJVii3 zZmv1b{7(u_A#e zdHE7$NJxN>v7Ahjd322lGpO#{VAu(gxF!$7{2~CNuXZfA-iaH0_5~^&jE-ba?0N8$ z(h$M4a!s5z#BAGhjDeEftO!+-mw!L?l{q&j2SP%)xuPb}f6GDmG}L1%@k%LDmgT~o zojMw?Q&T&~Ff-cA`ax(|;M`olC{sReTQ+Zx(_6KRIpu?cl~@1-T9}$sKFU?yvJ+cfbV8 zzs+fJ%BE2&^z8}o`ox%awG71co{jYdnb|P!)fb70pZS%*HO$?zWy>{PyK?*zxtN-F z7R{*$1x9_J@8_D-7>-4@U2xRfPuT|&zV|}+ZSsIUD8!3V?%_L-T%zZ7MrkkF)|W$N zOe2x0os>uN^XdLC=c19n2hjLg^D4<;W|8w@pAo)|?N z&0A*JjJGAQ$Wf@AR?+Bdn)lTcyYKIxsg?U%5Of0al82MQBk{BL1C@wx4hYK_J)eW2 ztwu&1$4}BxmhwG7klaA*e!sE4!lfK*mZxn4;*}{-E?5k_)lQe;2XhHR1TtC~N^>ZnF{?V5JagOf*z0|A2-W`1D+oOMx6{z@ly=FA6j@K$W_am~_UUetYlv zQ`G&H;V+z=obKK+%+>^*58x5VTIEE4Bl*#~joNiuh1Okqtw8%m=A4}iHG?l`aIVGK zU5WBIrm5cD)&}Am-NAzi;Xk632=)qEq-2A7al-8Aa(Zr~{|j)^UcGt4k%%HzO}pAU zO6BHcv3%1wSCm4b9YYWU$6exyfrrZPT{ji^TAnIFap zs?15BzcX=4Pq6sAFcT4&YXJ|^;{#DdOHYGSmLwbFUohh2a#eWlfrhi`}8hZPDg*Aq>|P3#v% zW^QBL6i=|m@ea$)u{Iztbr+SSr;B5$iHcVLp&t1;Sjcs7KkIEY6hhI=h8{|aM!6^o zimNw6{pfYPX;CY%oL*6v6(0Q4iG@gGf(C}r@eT^pGqQ&L`Yxf`YXfR3OZGu}AzMsE z3{D(VaXcm0qv*@QGNOAU=OMQvlYnK2QYD>kZ$XS<=005^p%*NKPfYI?_sRCnnmiGa zU(grX=AdmJ?fg69YIKG4&~5FE{_(9|^nV&+UX0a0&jDBpT<-4X8FaYDb5rK{0{(m~ zHjk#IrQN*kcjuUZUaLxxOFO@kD!r#f4=Q3Uu4J|h?jVX|$^YtrPg=2$l7_C{>-yHN z7=FH@An$m}5(A~w4Xd4Qi(9p}(tD&G~}z9u$%f9nF(2vQ#wxgN@K#E-u!UC)JK?I?d~t=V`Aj z)J1UoQS^GN8QJvnrxyIdXV`xFeCmHo{SQv(r7F2l==zz~VmW(*Izo|ncz|}EePu?* zNj^yV7;nd>-iGmp&k4(8@dk{LHLB8MrJ)iI;T#?L)mL>MBk<@>+aYmbDI-1 zR4yN`pOs;!5o$f!mR%~bevZA~Q;=Wj=3v^J+iYGuf9NjSY`%NW$ti?;2a?kqo`m2~ zf1cUwc1x(glg(qR=9L;Bab&-HS35E{&v)sU&@b2BkDdQx=B$dU*57<$M0@nBf~rPP zHc6To{^H_sS*@er6tV?^vL5OsUfe0G9oQdwkn8CYuvrSeJWaV8`h_A2-glslf^>-n z4?c3TvOv@a;QlK4V>mtj!A#=b2fI!BT?1bg6fA;`vyPAr?7g>ZNKZp}={VgFsB>_i z2bh?uoFyQH=(Am2Untr0u_$8HxvuAjoxU520KuOwhut{}n3Yq`h=>#dL?(}2ju&@- z$f>tu@S@CBkWl8_`uqEVtkrcFGx5v@1_y@(1sUF*cxtK8__m{?Fg}w=#t)X zK-=}F$-<7qm*=&)I>vY-PB?nYm6pUO`Rl>xA8Lz_%-GpIB^x;IJ^x_LFU~0_@mL*> zdX!X$QQBZFFSu~)9g8ep-PM?F0-)enzNd~s1wcmW=U4K6v7#M&BYe7MQ{@UMbAXx32vt`Lg z=7Q)4yEs%nuupq|-jgwKV_DfPw7XbEW+9|uC#tKHA9bGh#yX5BchDlT%#C#}AaOsE z2sQ2$C*PP9@;dU(Z@EFp-L4SynO=QNDlc@ zix(&sW0IMenXB!(Py?@49u8Zbjw%5`>K8hn>nP4J5$hv{U$9hw4l)J?5eskvWTf9_ zR-pu#MLvZh0K!xvIW3l!mgduJ;!j64@c#YN01Ve~n>BNH7o~M_bR5MN#&;L@`7v*$ zW(0MdCaeO|)FwbLaOXXS2T2Z%C}!c@;MS~u&FSbEEOU@krEC0ck@EQV=qUICbz(D$ zsPDc$D#N$!W+^}(w}8H}b+?FCBsyB64!^&X5q*@x z<~BAPAhZi1FriE4>+heiDi>WNy`QBV1RAjLQ1n2}U#0MNl6lG#JzwEaOM%WM4^?FL zzxRu?RBZ7#H9W2KFLAM@oqA2*&(X|&mn$&kaNMJP@}eVE=7&-gQ>J} zw~?$k39%G7d<+2Jv9Q}(;C3gfQ_M7c9=Mll9_~}`-p%7)mPYh9zKLkoMW4L|suz-a zZFr@iDkK*T5Y?du%H}r3_Ihz4{C(4Py^Lz{HFh-S91O zFW+~~1MrRI3c8LUR=R__vY%J?mHC0rzW9v`)cAhb-i!?o2ZV%_*R?I|OS>~-kn%j& zIqgV%T$Gynu0yo{@XX*z$Fc}Rn!0dvlKGX8;CIbGh8{N!q?9NT{Vy`y6=-g7C^s6c zN+;*uCcDVd&EsRAzXzjk*hedt!yn()kQh_t(3uy2jYjEk74^C%+< z+{QmLkxeVv?KP0pe7$jySkfbjF>a8qh6D&$ww*¨`(W{>kP(>{*HfWa1VNk8Zwo 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

c9MeuT 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 O3&>$R+m*5W68;PP&Di+> literal 21931 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 diff --git a/docs/images/ios-first-run-dark.png b/docs/images/ios-first-run-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..9da0c628d676d74bd5af344d588816d2d7478945 GIT binary patch literal 234773 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 zufY76 ^ARSy+m>p{3w&Y>ejW+?X1HNPbYj7vK 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 B> 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

PAh>Dsg=m>uJ|;iVs{+Ljx}aA$ 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 literal 0 HcmV?d00001 diff --git a/docs/images/ios-first-run.png b/docs/images/ios-first-run.png new file mode 100644 index 0000000000000000000000000000000000000000..e59aa3e4573a421e0af66c9d90cefd5f5b4e0228 GIT binary patch literal 208259 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

`n`RjQ5u6!N!9H!8# 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

-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

$U6z=hx_Vo-R_>3`Jx)pohy1TYO?`)2 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 About**. Connections saved on a Mac come over iCloud; the rest of your Mac setup stays on the Mac. - - TablePro connection list on iPhone - TablePro connection list on iPhone + + Connections grouped under Favorites and a Production folder, next to Settings with Security, iCloud and New Connections sections + Connections grouped under Favorites and a Production folder, next to Settings with Security, iCloud and New Connections sections + + +## First launch + +A welcome sheet lists what the app does. **Continue** leads to at most two questions, each asked once: + +| Question | Shown when | If you swipe the sheet away | +| --- | --- | --- | +| **Sync with iCloud** | The device is signed in to iCloud | Sync stays off | +| **Share Usage Data?** | Always | Nothing is sent | + +Both answers can change later, under **Settings > iCloud** and **Settings > Privacy**. After an update, a **What's New** sheet lists what changed, once per version. + + + Welcome to TablePro sheet with four feature rows, beside the Share Usage Data page listing what the daily report contains + Welcome to TablePro sheet with four feature rows, beside the Share Usage Data page listing what the daily report contains ## Supported databases @@ -34,7 +50,7 @@ MongoDB, ClickHouse, Cassandra, BigQuery, Spanner, Snowflake and the rest have n ## The connection list -Favorites come first, then **Recent** with the five connections opened last, then your groups, nested the way the Mac nests them. The **More** menu holds **Sort By** (**Manual**, **Name**, **Database Type**, **Last Connected**), **Filter by Tag**, group and tag management, and import and export. Typing a tag's name in the search field offers it as a filter. +Favorites come first, then **Recent** with the five connections opened last, then your groups, nested the way the Mac nests them. The **More** menu holds **Sort By** (**Manual**, **Name**, **Database Type**, **Last Connected**), **New Group**, **Manage Tags**, **Open Sample Database**, and import and export. Type a tag's name in the search field to filter by it; with two tags or more chosen, **Match All Tags** appears in the **More** menu. | To | Do this | | --- | --- | @@ -44,12 +60,18 @@ Favorites come first, then **Recent** with the five connections opened last, the | Reorder | Tap **Edit** and drag the handles, with **Sort By** on **Manual** | | Change several at once | Tap **Edit**, select the rows, and tap **Move**, **Favorite** or **Delete** | | Delete | Swipe left, or touch and hold and choose **Delete** | +| Edit or delete a group | Swipe right on the group to edit it, swipe left to delete it | +| Sync now | Pull down on the list, with iCloud Sync on | **Duplicate** copies the saved password, SSH secrets, client certificates and file access along with the settings. Recent and the sort order stay on the device. +## The sample database + +**Open Sample Database** sits on the empty list and in the **More** menu. It opens Chinook, a SQLite database of a music store, at its **Track** table, with no server to set up. The sample stays on this device: it never syncs, exports or hands off to another device. To throw away your edits, touch and hold **Chinook (Sample)** and choose **Reset Database**. + ## What syncs over -The same CloudKit container as the Mac, with iCloud Sync on by default here and off by default there. Three record types cross: connections (host, port, SSH tunnel and SSL settings, color, safe mode level, favorite), groups with their nesting, and tags. SSH profiles, table favorites, saved queries, and app settings are skipped, and query history on the phone is only what you ran on the phone. +The same CloudKit container as the Mac. iCloud Sync is off on both until you turn it on: here during first launch or under **Settings > iCloud**. While it is off nothing leaves the device, and edits made in the meantime go up when you turn it back on. Three record types cross: connections (host, port, SSH tunnel and SSL settings, color, safe mode level, favorite), groups with their nesting, and tags. SSH profiles, table favorites, saved queries, and app settings are skipped, and query history on the phone is only what you ran on the phone. Three things a connection depends on are per device and never sync: @@ -59,7 +81,7 @@ Three things a connection depends on are per device and never sync: | An SSH private key | It arrived as a path on the Mac, so the tunnel cannot find it | Pick the key on this device, or paste it into **Private Key** | | SQLite and DuckDB file paths | The path points at the Mac's disk | Pick the file again here | -Passwords are a separate opt-in, off by default, at **Settings > Sync > Sync Passwords**. They ride iCloud Keychain and only new saves are affected, so re-save a password on the Mac to push it across. **Sync Now** sits in the same section, and a background refresh runs about every 30 minutes. +Passwords are a separate opt-in, off by default, at **Settings > iCloud > Sync Passwords**. They ride iCloud Keychain and only new saves are affected, so re-save a password on the Mac to push it across. Pull down on the connection list to sync now; a background refresh runs about every 30 minutes. Picking a SQLite file copies it into the app, and edits go to that copy, so the original never changes and the two drift apart. DuckDB writes back to the file you picked. @@ -85,7 +107,7 @@ A save, insert, delete, truncate or drop runs inside a read-write transaction. M The editor highlights SQL, runs a statement, and stops one mid-flight. **Stop** ends the result stream at once; on MySQL and Redis the statement keeps running on the server until it finishes. Results copy or export as JSON, CSV, or SQL `INSERT`. -A running query appears in a Live Activity on the lock screen and Dynamic Island, with the elapsed time and the row count so far. **Settings > Privacy** replaces the SQL text there with "Running query". The card clears when the query ends. Quitting the app mid-query leaves it behind, marked interrupted, until the next launch clears it. +A running query appears in a Live Activity on the lock screen and Dynamic Island, with the elapsed time and the row count so far. **Settings > Live Activities > Hide Query** replaces the SQL text there with "Running query". The card clears when the query ends. Quitting the app mid-query leaves it behind, marked interrupted, until the next launch clears it. ## What is missing @@ -95,12 +117,18 @@ A running query appears in a Live Activity on the lock screen and Dynamic Island ## Security -Turn on Face ID, Touch ID, or Optic ID under **Settings > Security**. A cold launch always asks; after that **Auto-Lock** relocks immediately or after 1, 5, 15, or 60 minutes idle, starting at 5. +Turn on Face ID, Touch ID, or Optic ID under **Settings > Security**. A cold launch always asks; after that **Auto-Lock** relocks immediately or after 1, 5, 15, or 60 minutes idle, starting at 5. The lock covers open sheets and connections, and the app switcher shows a locked card instead of your data. Turning the lock off asks you to authenticate first. Each connection carries its own [safe mode](/features/safe-mode) level, synced from the Mac and settable here. iOS has three: **Off**, **Confirm Writes**, and **Read-Only**, which refuses writes outright. **Settings > New Connections** sets the level a new connection starts at. SSH tunnels authenticate with a password or a private key, and an unknown host key prompts with its fingerprint first. +## Privacy + +**Share Usage Data** under **Settings > Privacy** sends one small report a day: a hashed device identifier, the app and iOS versions, your language, the database types you use, and when you first connected and first ran a query. It is off unless you chose **Share Usage Data** on first launch, and it never carries a hostname, username, password, query, or row. + +**Settings > About** holds the version, **What's New**, the privacy policy, and **Acknowledgements** for the open source libraries the app ships. + ## Shortcuts and widgets Three App Intents put the app in Shortcuts, the Share Sheet, and Siri: **Open Connection**, **Add Row to Table**, **Add Rows to Table**. See [iOS Shortcuts](/external-api/ios-shortcuts) for pickers, data formats, and limits. diff --git a/docs/security/privacy.mdx b/docs/security/privacy.mdx index 7737d63dec..f0bc2fdaba 100644 --- a/docs/security/privacy.mdx +++ b/docs/security/privacy.mdx @@ -44,6 +44,8 @@ An `X-Signature` header carries an HMAC-SHA256 of the body. It proves the payloa **Share anonymous usage data** in **Settings > General** is on by default. With it off, the send returns before the payload is built, and nothing queues for later. +On iPhone and iPad the heartbeat is off until you choose **Share Usage Data**, and its `platform` is `ios`. See [iPhone and iPad](/ios#privacy). + ## AI providers Nothing reaches a model until you add a provider, and a fresh install has none: with none configured, every AI path returns before it builds a request. **Enable AI Features** in **Settings > AI** is on out of the box, but it gates an empty tab. diff --git a/scripts/generate-ios-acknowledgements.py b/scripts/generate-ios-acknowledgements.py new file mode 100755 index 0000000000..0a465dd272 --- /dev/null +++ b/scripts/generate-ios-acknowledgements.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 +"""Write the iOS app's Acknowledgements.json from the third-party license inventory. + +The iOS app does not link Yams, so it reads a JSON projection of licenses.yml: every component +whose platforms include ios, sorted by name, with only the fields its Acknowledgements screen shows. +ThirdPartyLicenseInventoryTests fails when the committed file differs from this output. + +Usage: + scripts/generate-ios-acknowledgements.py +""" + +import json +import sys +from pathlib import Path + +import yaml + +REPOSITORY_ROOT = Path(__file__).resolve().parent.parent +INVENTORY_PATH = REPOSITORY_ROOT / "TablePro/Resources/ThirdPartyLicenses/licenses.yml" +OUTPUT_PATH = REPOSITORY_ROOT / "TableProMobile/TableProMobile/Acknowledgements/Acknowledgements.json" + +PROJECTED_FIELDS = ("id", "name", "version", "spdx", "copyrights", "homepageURL", "textFile") +KNOWN_PLATFORMS = {"macos", "ios"} +DEFAULT_PLATFORMS = ["macos"] +TARGET_PLATFORM = "ios" + + +def load_inventory(path: Path) -> list[dict]: + with path.open(encoding="utf-8") as handle: + return yaml.load(handle, Loader=yaml.BaseLoader) + + +def platforms_of(component: dict) -> list[str]: + platforms = component.get("platforms", DEFAULT_PLATFORMS) + unknown = sorted(set(platforms) - KNOWN_PLATFORMS) + if unknown: + raise ValueError(f"{component['id']} names unknown platforms: {', '.join(unknown)}") + return platforms + + +def project(component: dict) -> dict: + return {field: component.get(field) for field in PROJECTED_FIELDS} + + +def sort_key(component: dict) -> tuple[str, str]: + return (component["name"].lower(), component["id"]) + + +def main() -> int: + try: + components = load_inventory(INVENTORY_PATH) + shipped = [project(c) for c in components if TARGET_PLATFORM in platforms_of(c)] + except (OSError, yaml.YAMLError, ValueError) as error: + print(f"error: {error}", file=sys.stderr) + return 1 + + shipped.sort(key=sort_key) + OUTPUT_PATH.parent.mkdir(parents=True, exist_ok=True) + OUTPUT_PATH.write_text(json.dumps(shipped, indent=2, ensure_ascii=False) + "\n", encoding="utf-8") + print(f"Wrote {len(shipped)} components to {OUTPUT_PATH.relative_to(REPOSITORY_ROOT)}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) From 16f7f16737a83af1831fbed595e966f7e835ee81 Mon Sep 17 00:00:00 2001 From: Ngo Quoc Dat Date: Fri, 18 Sep 2026 19:02:08 +0700 Subject: [PATCH 2/2] feat(ios): translate every iOS string into Korean, Vietnamese and Chinese --- CHANGELOG.md | 1 + .../TableProMobile/InfoPlist.xcstrings | 33 +- .../TableProMobile/Localizable.xcstrings | 7250 ++++++++++++----- 3 files changed, 5347 insertions(+), 1937 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 924a92bc73..dd66244c31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -96,6 +96,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Copying objects into a connection that already has a transaction open committing it. - Replace-copy into a remote libSQL target failing at `BEGIN`. - iOS edits uploaded to iCloud after iCloud Sync was turned off. +- iOS text left in English for Korean, Vietnamese, Simplified Chinese and Traditional Chinese. - iOS connections overwritten by the next edit after the saved library failed to load. - A `.tablepro` file or link closing a half-filled form on iPhone and iPad. - Links to a table opening only its connection on iPhone and iPad. diff --git a/TableProMobile/TableProMobile/InfoPlist.xcstrings b/TableProMobile/TableProMobile/InfoPlist.xcstrings index 606e4449a0..820068f237 100644 --- a/TableProMobile/TableProMobile/InfoPlist.xcstrings +++ b/TableProMobile/TableProMobile/InfoPlist.xcstrings @@ -11,7 +11,8 @@ "value" : "TablePro" } } - } + }, + "shouldTranslate" : false }, "CFBundleName" : { "comment" : "Bundle name", @@ -23,7 +24,8 @@ "value" : "TableProMobile" } } - } + }, + "shouldTranslate" : false }, "NSFaceIDUsageDescription" : { "comment" : "Privacy - Face ID Usage Description", @@ -98,7 +100,32 @@ } }, "TablePro Connections" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 연결" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kết nối TablePro" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 连接" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 連線" + } + } + } } }, "version" : "1.0" diff --git a/TableProMobile/TableProMobile/Localizable.xcstrings b/TableProMobile/TableProMobile/Localizable.xcstrings index 37d951a308..3dc97dee61 100644 --- a/TableProMobile/TableProMobile/Localizable.xcstrings +++ b/TableProMobile/TableProMobile/Localizable.xcstrings @@ -87,7 +87,32 @@ } }, "%1$@ via %2$@" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@(%2$@ 경유)" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@ qua %2$@" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@(经由 %2$@)" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$@(經由 %2$@)" + } + } + } }, "%@" : { "localizations" : { @@ -152,7 +177,32 @@ } }, "%@ Copy" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ 복사본" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ bản sao" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ 副本" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ 副本" + } + } + } }, "%@ connections do not support adding rows from Shortcuts." : { "localizations" : { @@ -836,10 +886,60 @@ } }, "A hashed identifier for this device" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 기기의 해시된 식별자" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mã định danh đã băm của thiết bị này" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "此设备经过哈希处理的标识符" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "此裝置的雜湊識別碼" + } + } + } }, "A running query shows its time and row count in a Live Activity." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "실행 중인 쿼리의 경과 시간과 행 수가 실시간 현황에 표시됩니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Truy vấn đang chạy hiển thị thời gian và số dòng trong Hoạt động trực tiếp." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在运行的查询会在实时活动中显示用时和行数。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "執行中的查詢會在即時動態中顯示經過時間與列數。" + } + } + } }, "A sync conflict was detected and needs to be resolved." : { "extractionState" : "stale", @@ -927,10 +1027,60 @@ } }, "Accepted" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "수락" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chấp nhận" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "接受" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "接受" + } + } + } }, "Acknowledgements" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "감사의 글" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ghi nhận" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "致谢" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "致謝" + } + } + } }, "Active DB" : { "localizations" : { @@ -1135,7 +1285,32 @@ } }, "Add Tag" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "태그 추가" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Thêm nhãn" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "添加标签" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "新增標籤" + } + } + } }, "Add a connection in TablePro" : { "localizations" : { @@ -1166,7 +1341,32 @@ } }, "Add a connection to your database, or explore TablePro with the sample database." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "데이터베이스 연결을 추가하거나 샘플 데이터베이스로 TablePro를 둘러보십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Thêm kết nối tới cơ sở dữ liệu của bạn, hoặc khám phá TablePro với cơ sở dữ liệu mẫu." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "添加数据库连接,或通过示例数据库体验 TablePro。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "新增資料庫連線,或透過範例資料庫探索 TablePro。" + } + } + } }, "Add a database connection to get started." : { "extractionState" : "stale", @@ -1338,7 +1538,32 @@ } }, "Add to Favorites" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "즐겨찾기에 추가" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Thêm vào Yêu thích" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "添加到收藏" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "加入我的最愛" + } + } + } }, "Added %lld rows to %@." : { "localizations" : { @@ -1910,7 +2135,32 @@ } }, "Authenticate to stop locking TablePro." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 잠금을 끄려면 인증하십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Xác thực để ngừng khóa TablePro." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "进行认证以停止锁定 TablePro。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "進行驗證以停止鎖定 TablePro。" + } + } + } }, "Authentication Failed" : { "localizations" : { @@ -2025,7 +2275,32 @@ } }, "Browse and Edit Data" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "데이터 탐색 및 편집" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Duyệt và sửa dữ liệu" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "浏览和编辑数据" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "瀏覽與編輯資料" + } + } + } }, "Build" : { "extractionState" : "stale", @@ -2478,52 +2753,102 @@ } }, "Checking iCloud" : { - - }, - "Chinook (Sample)" : { - - }, - "Choose File" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "파일 선택" + "value" : "iCloud 확인 중" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chọn tệp" + "value" : "Đang kiểm tra iCloud" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "选择文件" + "value" : "正在检查 iCloud" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "選擇檔案" + "value" : "正在檢查 iCloud" } } } }, - "Choose a connection from the sidebar." : { - "extractionState" : "stale", + "Chinook (Sample)" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "사이드바에서 연결을 선택하십시오." + "value" : "Chinook(샘플)" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chọn kết nối từ thanh bên." + "value" : "Chinook (Mẫu)" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chinook(示例)" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chinook(範例)" + } + } + } + }, + "Choose File" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "파일 선택" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chọn tệp" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "选择文件" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "選擇檔案" + } + } + } + }, + "Choose a connection from the sidebar." : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "사이드바에서 연결을 선택하십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chọn kết nối từ thanh bên." } }, "zh-Hans" : { @@ -2935,7 +3260,32 @@ } }, "Computed by the database" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "데이터베이스에서 계산됨" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do cơ sở dữ liệu tính toán" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "由数据库计算" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "由資料庫計算" + } + } + } }, "Configuration Error" : { "localizations" : { @@ -3051,7 +3401,32 @@ } }, "Connect Securely" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "안전하게 연결" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kết nối an toàn" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "安全连接" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "安全連線" + } + } + } }, "Connect Using" : { "localizations" : { @@ -3194,7 +3569,32 @@ } }, "Connection Cancelled" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "연결 취소됨" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đã hủy kết nối" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "连接已取消" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "連線已取消" + } + } + } }, "Connection Deleted" : { "localizations" : { @@ -3253,7 +3653,32 @@ } }, "Connection failed while waiting on the socket." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "소켓을 기다리는 동안 연결에 실패했습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kết nối thất bại khi đang chờ trên socket." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "等待 socket 时连接失败。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "等待 socket 時連線失敗。" + } + } + } }, "Connection failed: %@" : { "extractionState" : "stale", @@ -3341,7 +3766,32 @@ } }, "Connection timed out." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "연결 시간이 초과되었습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kết nối đã hết thời gian chờ." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "连接超时。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "連線逾時。" + } + } + } }, "Connections" : { "localizations" : { @@ -3372,10 +3822,60 @@ } }, "Connections Unavailable" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "연결을 사용할 수 없음" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kết nối không khả dụng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "连接不可用" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "連線無法使用" + } + } + } }, "Connections from your other devices appear here." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "다른 기기의 연결이 여기에 표시됩니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kết nối từ các thiết bị khác của bạn sẽ hiển thị ở đây." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "你其他设备上的连接会显示在这里。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "來自你其他裝置的連線會顯示在這裡。" + } + } + } }, "Connections in this group will be moved to ungrouped." : { "localizations" : { @@ -3406,10 +3906,60 @@ } }, "Connections you add here or in TablePro on your Mac appear on all your devices." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "여기 또는 Mac용 TablePro에서 추가한 연결이 모든 기기에 표시됩니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kết nối bạn thêm ở đây hoặc trong TablePro trên máy Mac sẽ xuất hiện trên mọi thiết bị của bạn." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "你在此处或 Mac 上的 TablePro 中添加的连接,会显示在你的所有设备上。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "你在這裡或 Mac 版 TablePro 中新增的連線,會顯示在你所有的裝置上。" + } + } + } }, "Connections, groups, and tags from TablePro on your Mac appear here over iCloud." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mac용 TablePro의 연결, 그룹 및 태그가 iCloud를 통해 여기에 표시됩니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kết nối, nhóm và nhãn từ TablePro trên máy Mac sẽ xuất hiện ở đây qua iCloud." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mac 上 TablePro 中的连接、分组和标签会通过 iCloud 显示在这里。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mac 版 TablePro 中的連線、群組與標籤會透過 iCloud 顯示在這裡。" + } + } + } }, "Continue" : { "localizations" : { @@ -3721,14 +4271,39 @@ } }, "Could not install the sample database: %@" : { - - }, - "Could not read the columns of %@." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "%@의 열을 읽을 수 없습니다." + "value" : "샘플 데이터베이스를 설치할 수 없습니다: %@" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Không thể cài đặt cơ sở dữ liệu mẫu: %@" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "无法安装示例数据库:%@" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "無法安裝範例資料庫:%@" + } + } + } + }, + "Could not read the columns of %@." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@의 열을 읽을 수 없습니다." } }, "vi" : { @@ -3752,7 +4327,32 @@ } }, "Could not start a connection." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "연결을 시작할 수 없습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Không thể bắt đầu kết nối." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "无法发起连接。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "無法啟動連線。" + } + } + } }, "Create" : { "localizations" : { @@ -3925,7 +4525,32 @@ } }, "DEFAULT" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "DEFAULT" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "MẶC ĐỊNH" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "默认" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "預設" + } + } + } }, "Database" : { "localizations" : { @@ -4349,7 +4974,32 @@ } }, "Delete %d Connections" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "연결 %d개 삭제" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Xóa %d kết nối" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "删除 %d 个连接" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "刪除 %d 個連線" + } + } + } }, "Delete Connection" : { "localizations" : { @@ -4605,7 +5255,32 @@ } }, "Don't Share" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "공유 안 함" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Không chia sẻ" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "不共享" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "不要分享" + } + } + } }, "Done" : { "localizations" : { @@ -4832,7 +5507,32 @@ } }, "Empty String" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "빈 문자열" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chuỗi rỗng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "空字符串" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "空字串" + } + } + } }, "Enabled" : { "localizations" : { @@ -4863,7 +5563,32 @@ } }, "Encoding" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "인코딩" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bảng mã" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "编码" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "編碼" + } + } + } }, "Enter a name for the new SQLite database." : { "extractionState" : "stale", @@ -5120,7 +5845,32 @@ } }, "Every change you made to the sample database is replaced with the original data." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "샘플 데이터베이스에서 변경한 모든 내용이 원본 데이터로 대체됩니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mọi thay đổi bạn đã thực hiện trên cơ sở dữ liệu mẫu sẽ được thay bằng dữ liệu gốc." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "你对示例数据库所做的所有更改都将被原始数据替换。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "你對範例資料庫所做的每項變更都會被原始資料取代。" + } + } + } }, "Execute" : { "localizations" : { @@ -5235,7 +5985,32 @@ } }, "Explore a music store database without connecting to a server." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "서버에 연결하지 않고도 음악 상점 데이터베이스를 둘러볼 수 있습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Khám phá cơ sở dữ liệu của một cửa hàng âm nhạc mà không cần kết nối tới máy chủ." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "无需连接服务器,即可探索一个音乐商店数据库。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "不必連線到伺服器,就能探索一個音樂商店資料庫。" + } + } + } }, "Export" : { "localizations" : { @@ -5637,191 +6412,291 @@ } }, "Favorite" : { - - }, - "Favorites" : { - - }, - "File" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "파일" + "value" : "즐겨찾기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tệp" + "value" : "Yêu thích" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "文件" + "value" : "收藏" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "檔案" + "value" : "我的最愛" } } } }, - "Fill in Password, and Username too if the server uses Redis 6 ACL users." : { - - }, - "Fill in at least one column. This database cannot insert a row made only of defaults." : { - - }, - "Filter" : { + "Favorites" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "필터" + "value" : "즐겨찾기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bộ lọc" + "value" : "Yêu thích" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "筛选" + "value" : "收藏" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "篩選" + "value" : "我的最愛" } } } }, - "Filter by Tag" : { + "File" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "태그로 필터링" + "value" : "파일" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Lọc theo nhãn" + "value" : "Tệp" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "按标签筛选" + "value" : "文件" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "依標籤篩選" + "value" : "檔案" } } } }, - "Filters" : { + "Fill in Password, and Username too if the server uses Redis 6 ACL users." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "필터" + "value" : "암호 필드를 입력하고, 서버에서 Redis 6 ACL 사용자를 사용하는 경우 사용자 이름 필드도 입력하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bộ lọc" + "value" : "Hãy điền Mật khẩu, và cả Tên đăng nhập nếu máy chủ dùng người dùng ACL của Redis 6." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "筛选" + "value" : "请填写“密码”;如果服务器使用 Redis 6 ACL 用户,还需填写“用户名”。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "篩選" + "value" : "請填寫「密碼」;如果伺服器使用 Redis 6 ACL 使用者,也請填寫「使用者名稱」。" } } } }, - "Finish Signing In" : { + "Fill in at least one column. This database cannot insert a row made only of defaults." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "로그인 마치기" + "value" : "열을 하나 이상 입력하십시오. 이 데이터베이스는 기본값만으로 이루어진 행을 삽입할 수 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Hoàn tất đăng nhập" + "value" : "Hãy điền ít nhất một cột. Cơ sở dữ liệu này không thể chèn một dòng chỉ gồm giá trị mặc định." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "完成登录" + "value" : "请至少填写一列。此数据库无法插入仅由默认值组成的行。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "完成登入" + "value" : "請至少填寫一個欄位。此資料庫無法插入只含預設值的列。" } } } }, - "Focus search" : { + "Filter" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "검색에 포커스" + "value" : "필터" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tập trung tìm kiếm" + "value" : "Bộ lọc" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "聚焦搜索" + "value" : "筛选" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "聚焦搜尋" + "value" : "篩選" } } } }, - "Foreign Keys" : { + "Filter by Tag" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "외래 키" + "value" : "태그로 필터링" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lọc theo nhãn" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "按标签筛选" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "依標籤篩選" + } + } + } + }, + "Filters" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "필터" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bộ lọc" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "筛选" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "篩選" + } + } + } + }, + "Finish Signing In" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "로그인 마치기" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hoàn tất đăng nhập" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "完成登录" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "完成登入" + } + } + } + }, + "Focus search" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "검색에 포커스" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tập trung tìm kiếm" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "聚焦搜索" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "聚焦搜尋" + } + } + } + }, + "Foreign Keys" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "외래 키" } }, "vi" : { @@ -6127,7 +7002,32 @@ } }, "Help decide what to improve next by sending one small report a day." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "하루에 한 번 간단한 보고서를 보내 다음에 개선할 부분을 정하는 데 도움을 주십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Giúp chọn điều cần cải thiện tiếp theo bằng cách gửi một báo cáo nhỏ mỗi ngày." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "每天发送一份简短报告,帮助决定接下来改进什么。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "每天傳送一份簡短報告,協助決定接下來要改進哪些地方。" + } + } + } }, "Help improve TablePro by sharing anonymous usage statistics (no personal data or queries)." : { "extractionState" : "stale", @@ -6158,8 +7058,62 @@ } } }, + "Hide Query" : { + "localizations" : { + "vi" : { + "stringUnit" : { + "value" : "Ẩn truy vấn", + "state" : "translated" + } + }, + "ko" : { + "stringUnit" : { + "value" : "쿼리 가리기", + "state" : "translated" + } + }, + "zh-Hans" : { + "stringUnit" : { + "value" : "隐藏查询", + "state" : "translated" + } + }, + "zh-Hant" : { + "stringUnit" : { + "value" : "隱藏查詢", + "state" : "translated" + } + } + } + }, "Hide Query in Live Activities" : { - + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "실시간 현황에서 쿼리 가리기" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ẩn truy vấn trong Hoạt động trực tiếp" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "在实时活动中隐藏查询" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "在即時動態中隱藏查詢" + } + } + } }, "Hide query in Live Activities" : { "extractionState" : "manual", @@ -6219,7 +7173,32 @@ } }, "Homepage" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "홈페이지" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trang chủ" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "主页" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "首頁" + } + } + } }, "Host" : { "localizations" : { @@ -6476,7 +7455,32 @@ } }, "In Memory" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "인메모리" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trong bộ nhớ" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "内存中" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "記憶體內" + } + } + } }, "In-Memory Database" : { "localizations" : { @@ -6732,8719 +7736,10947 @@ } }, "Interrupted" : { - - }, - "Interrupted before the query finished." : { - - }, - "It never contains a hostname, username, password, query, or any data from your databases. You can change this in Settings." : { - - }, - "Its subgroups are deleted too. Their connections move to Ungrouped." : { - - }, - "Jump host key not found: %@" : { - "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "점프 호스트 키를 찾을 수 없습니다: %@" + "value" : "중단됨" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không tìm thấy khóa của jump host: %@" + "value" : "Bị gián đoạn" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未找到跳板主机密钥:%@" + "value" : "已中断" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "找不到跳板主機金鑰:%@" + "value" : "已中斷" } } } }, - "Keep Connections at the Top" : { - - }, - "Keep your connections, groups, and tags the same on your iPhone, iPad, and Mac." : { - - }, - "Kerberos authentication failed: %@" : { - "extractionState" : "stale", + "Interrupted before the query finished." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Kerberos 인증 실패: %@" + "value" : "쿼리가 완료되기 전에 중단되었습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Xác thực Kerberos thất bại: %@" + "value" : "Bị gián đoạn trước khi truy vấn hoàn tất." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "Kerberos 认证失败:%@" + "value" : "查询完成前已中断。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "Kerberos 驗證失敗:%@" + "value" : "查詢完成前已中斷。" } } } }, - "Keychain Warning" : { + "It never contains a hostname, username, password, query, or any data from your databases. You can change this in Settings." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "키체인 경고" + "value" : "호스트 이름, 사용자 이름, 암호, 쿼리 또는 데이터베이스의 데이터는 절대 포함되지 않습니다. 설정에서 변경할 수 있습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cảnh báo Keychain" + "value" : "Báo cáo không bao giờ chứa tên máy chủ, tên đăng nhập, mật khẩu, truy vấn hay bất kỳ dữ liệu nào từ cơ sở dữ liệu của bạn. Bạn có thể thay đổi điều này trong Cài đặt." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "钥匙串警告" + "value" : "报告绝不包含主机名、用户名、密码、查询或数据库中的任何数据。你可以在设置中更改此选项。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "鑰匙圈警告" + "value" : "報告絕不包含主機名稱、使用者名稱、密碼、查詢,或你資料庫中的任何資料。你可以在「設定」中更改此選項。" } } } }, - "Last Connected" : { - - }, - "Last Sync" : { + "Its subgroups are deleted too. Their connections move to Ungrouped." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "마지막 동기화" + "value" : "하위 그룹도 함께 삭제됩니다. 그 안의 연결은 그룹 없음으로 이동됩니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đồng bộ lần cuối" + "value" : "Các nhóm con của nhóm này cũng bị xóa. Kết nối trong các nhóm con được chuyển sang Chưa phân nhóm." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "上次同步" + "value" : "其子分组也会被删除,其中的连接将移至“未分组”。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "上次同步" + "value" : "其子群組也會一併刪除。其中的連線將移至「未分組」。" } } } }, - "License" : { - - }, - "Load Failed" : { + "Jump host key not found: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "불러오기 실패" + "value" : "점프 호스트 키를 찾을 수 없습니다: %@" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tải thất bại" + "value" : "Không tìm thấy khóa của jump host: %@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "加载失败" + "value" : "未找到跳板主机密钥:%@" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "載入失敗" + "value" : "找不到跳板主機金鑰:%@" } } } }, - "Load More" : { - "extractionState" : "stale", + "Keep Connections at the Top" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "더 불러오기" + "value" : "연결을 맨 위에 고정" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tải thêm" + "value" : "Giữ kết nối ở đầu danh sách" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "加载更多" + "value" : "将连接置顶" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "載入更多" + "value" : "將連線保留在最上方" } } } }, - "Load full value" : { + "Keep your connections, groups, and tags the same on your iPhone, iPad, and Mac." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "전체 값 불러오기" + "value" : "iPhone, iPad 및 Mac에서 연결, 그룹 및 태그를 동일하게 유지합니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tải đầy đủ" + "value" : "Giữ kết nối, nhóm và nhãn giống nhau trên iPhone, iPad và máy Mac của bạn." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "加载完整值" + "value" : "让你的 iPhone、iPad 和 Mac 上的连接、分组和标签保持一致。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "載入完整值" + "value" : "讓你的連線、群組與標籤在 iPhone、iPad 與 Mac 上保持一致。" } } } }, - "Loading data..." : { + "Kerberos authentication failed: %@" : { "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "데이터 불러오는 중..." + "value" : "Kerberos 인증 실패: %@" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đang tải dữ liệu..." + "value" : "Xác thực Kerberos thất bại: %@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正在加载数据..." + "value" : "Kerberos 认证失败:%@" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "正在載入資料…" + "value" : "Kerberos 驗證失敗:%@" } } } }, - "Loading structure..." : { + "Keychain Warning" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "구조 불러오는 중..." + "value" : "키체인 경고" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đang tải cấu trúc..." + "value" : "Cảnh báo Keychain" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正在加载结构..." + "value" : "钥匙串警告" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "正在載入結構…" + "value" : "鑰匙圈警告" } } } }, - "Loading..." : { - "extractionState" : "stale", + "Last Connected" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "불러오는 중..." + "value" : "마지막 연결" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đang tải..." + "value" : "Lần kết nối gần nhất" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正在加载..." + "value" : "上次连接时间" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "正在載入…" + "value" : "上次連線時間" } } } }, - "Local Network Access Required" : { + "Last Sync" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "로컬 네트워크 접근 필요" + "value" : "마지막 동기화" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Yêu cầu truy cập mạng nội bộ" + "value" : "Đồng bộ lần cuối" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "需要本地网络访问权限" + "value" : "上次同步" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "需要區域網路存取權限" + "value" : "上次同步" } } } }, - "Local Network access is required. Open Settings > Privacy & Security > Local Network and turn TablePro on." : { - "extractionState" : "stale", + "License" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "로컬 네트워크 접근 권한이 필요합니다. 시스템 설정 > 개인정보 보호 및 보안 > 로컬 네트워크를 열고 TablePro를 켜십시오." + "value" : "라이선스" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cần truy cập Mạng nội bộ. Mở Cài đặt > Quyền riêng tư & Bảo mật > Mạng nội bộ và bật TablePro." + "value" : "Giấy phép" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "需要本地网络访问权限。请打开 设置 > 隐私与安全性 > 本地网络,并开启 TablePro。" + "value" : "许可证" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "需要區域網路存取權限。請開啟「設定」>「隱私權與安全性」>「區域網路」並開啟 TablePro。" + "value" : "授權" } } } }, - "Local Network access is required. Open Settings > Privacy & Security > Local Network and turn TablePro on. If it is already on, restart the device or update to iOS 18.6 or later." : { + "Live Activities" : { "localizations" : { - "ko" : { + "vi" : { "stringUnit" : { - "state" : "translated", - "value" : "로컬 네트워크 접근 권한이 필요합니다. 설정 > 개인정보 보호 및 보안 > 로컬 네트워크에서 TablePro를 켜십시오. 이미 켜져 있다면 기기를 재시동하거나 iOS 18.6 이상으로 업데이트하십시오." + "value" : "Hoạt động trực tiếp", + "state" : "translated" } }, - "vi" : { + "ko" : { "stringUnit" : { - "state" : "translated", - "value" : "Cần quyền truy cập Mạng cục bộ. Mở Cài đặt > Quyền riêng tư & Bảo mật > Mạng cục bộ và bật TablePro. Nếu đã bật, hãy khởi động lại thiết bị hoặc cập nhật lên iOS 18.6 trở lên." + "value" : "실시간 현황", + "state" : "translated" } }, "zh-Hans" : { "stringUnit" : { - "state" : "translated", - "value" : "需要本地网络访问权限。请打开“设置 > 隐私与安全性 > 本地网络”并开启 TablePro。如果已开启,请重启设备或升级到 iOS 18.6 或更高版本。" + "value" : "实时活动", + "state" : "translated" } }, "zh-Hant" : { "stringUnit" : { - "state" : "translated", - "value" : "需要區域網路存取權。請開啟「設定 > 隱私權與安全性 > 區域網路」並開啟 TablePro。如果已開啟,請重新啟動裝置或更新至 iOS 18.6 或更新版本。" + "value" : "即時動態", + "state" : "translated" } } } }, - "Local Network access may be blocked. Open Settings > Privacy & Security > Local Network and turn TablePro on." : { + "Load Failed" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "로컬 네트워크 접근이 차단되었을 수 있습니다. 시스템 설정 > 개인정보 보호 및 보안 > 로컬 네트워크를 열고 TablePro를 켜십시오." + "value" : "불러오기 실패" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Truy cập Mạng nội bộ có thể bị chặn. Mở Cài đặt > Quyền riêng tư & Bảo mật > Mạng nội bộ và bật TablePro." + "value" : "Tải thất bại" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "本地网络访问可能被阻止。请打开 设置 > 隐私与安全性 > 本地网络,并开启 TablePro。" + "value" : "加载失败" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "區域網路存取可能被封鎖。請開啟「設定」>「隱私權與安全性」>「區域網路」並開啟 TablePro。" + "value" : "載入失敗" } } } }, - "Locks TablePro when reopened after the selected idle time. Cold launches always require authentication." : { + "Load More" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "선택한 시간 동안 사용하지 않은 후 TablePro를 다시 열면 잠깁니다. 앱을 새로 실행할 때는 항상 인증해야 합니다." + "value" : "더 불러오기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Khóa TablePro khi mở lại sau khoảng thời gian không hoạt động đã chọn. Khởi động lạnh luôn yêu cầu xác thực." + "value" : "Tải thêm" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "在所选闲置时间后重新打开时锁定 TablePro。冷启动始终需要认证。" + "value" : "加载更多" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "閒置超過所選時間後重新開啟時鎖定 TablePro。冷啟動一律需要驗證。" + "value" : "載入更多" } } } }, - "Logic" : { + "Load full value" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "로직" + "value" : "전체 값 불러오기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Logic" + "value" : "Tải đầy đủ" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "逻辑" + "value" : "加载完整值" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "邏輯" + "value" : "載入完整值" } } } }, - "Manage Groups" : { + "Loading data..." : { "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "그룹 관리" + "value" : "데이터 불러오는 중..." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Quản lý nhóm" + "value" : "Đang tải dữ liệu..." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "管理分组" + "value" : "正在加载数据..." } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "管理群組" + "value" : "正在載入資料…" } } } }, - "Manage Tags" : { + "Loading structure..." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "태그 관리" + "value" : "구조 불러오는 중..." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Quản lý nhãn" + "value" : "Đang tải cấu trúc..." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "管理标签" + "value" : "正在加载结构..." } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "管理標籤" + "value" : "正在載入結構…" } } } }, - "Manual" : { - - }, - "Many Databases, One App" : { - - }, - "Match All Tags" : { - - }, - "Match Case" : { + "Loading..." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "대/소문자 구분" + "value" : "불러오는 중..." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Phân biệt hoa thường" + "value" : "Đang tải..." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "区分大小写" + "value" : "正在加载..." } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "區分大小寫" + "value" : "正在載入…" } } } }, - "Microsoft Entra ID Sign-In Required" : { + "Local Network Access Required" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Microsoft Entra ID 로그인 필요" + "value" : "로컬 네트워크 접근 필요" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Yêu cầu đăng nhập Microsoft Entra ID" + "value" : "Yêu cầu truy cập mạng nội bộ" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "需要 Microsoft Entra ID 登录" + "value" : "需要本地网络访问权限" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "需要 Microsoft Entra ID 登入" + "value" : "需要區域網路存取權限" } } } }, - "Mode" : { + "Local Network access is required. Open Settings > Privacy & Security > Local Network and turn TablePro on." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "모드" + "value" : "로컬 네트워크 접근 권한이 필요합니다. 시스템 설정 > 개인정보 보호 및 보안 > 로컬 네트워크를 열고 TablePro를 켜십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chế độ" + "value" : "Cần truy cập Mạng nội bộ. Mở Cài đặt > Quyền riêng tư & Bảo mật > Mạng nội bộ và bật TablePro." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "模式" + "value" : "需要本地网络访问权限。请打开 设置 > 隐私与安全性 > 本地网络,并开启 TablePro。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "模式" + "value" : "需要區域網路存取權限。請開啟「設定」>「隱私權與安全性」>「區域網路」並開啟 TablePro。" } } } }, - "More" : { + "Local Network access is required. Open Settings > Privacy & Security > Local Network and turn TablePro on. If it is already on, restart the device or update to iOS 18.6 or later." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "더 보기" + "value" : "로컬 네트워크 접근 권한이 필요합니다. 설정 > 개인정보 보호 및 보안 > 로컬 네트워크에서 TablePro를 켜십시오. 이미 켜져 있다면 기기를 재시동하거나 iOS 18.6 이상으로 업데이트하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thêm" + "value" : "Cần quyền truy cập Mạng cục bộ. Mở Cài đặt > Quyền riêng tư & Bảo mật > Mạng cục bộ và bật TablePro. Nếu đã bật, hãy khởi động lại thiết bị hoặc cập nhật lên iOS 18.6 trở lên." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "更多" + "value" : "需要本地网络访问权限。请打开“设置 > 隐私与安全性 > 本地网络”并开启 TablePro。如果已开启,请重启设备或升级到 iOS 18.6 或更高版本。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "更多" + "value" : "需要區域網路存取權。請開啟「設定 > 隱私權與安全性 > 區域網路」並開啟 TablePro。如果已開啟,請重新啟動裝置或更新至 iOS 18.6 或更新版本。" } } } }, - "More Actions" : { - - }, - "Move" : { - - }, - "Move %d Connections" : { - - }, - "Move Connection" : { - - }, - "Move to Group" : { - - }, - "MySQL, PostgreSQL, SQL Server, Oracle, Redis, SQLite, DuckDB, and more." : { - - }, - "NULL" : { + "Local Network access may be blocked. Open Settings > Privacy & Security > Local Network and turn TablePro on." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "NULL" + "value" : "로컬 네트워크 접근이 차단되었을 수 있습니다. 시스템 설정 > 개인정보 보호 및 보안 > 로컬 네트워크를 열고 TablePro를 켜십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "NULL" + "value" : "Truy cập Mạng nội bộ có thể bị chặn. Mở Cài đặt > Quyền riêng tư & Bảo mật > Mạng nội bộ và bật TablePro." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "NULL" + "value" : "本地网络访问可能被阻止。请打开 设置 > 隐私与安全性 > 本地网络,并开启 TablePro。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "NULL" + "value" : "區域網路存取可能被封鎖。請開啟「設定」>「隱私權與安全性」>「區域網路」並開啟 TablePro。" } } } }, - "Name" : { + "Locks TablePro when reopened after the selected idle time. Cold launches always require authentication." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이름" + "value" : "선택한 시간 동안 사용하지 않은 후 TablePro를 다시 열면 잠깁니다. 앱을 새로 실행할 때는 항상 인증해야 합니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tên" + "value" : "Khóa TablePro khi mở lại sau khoảng thời gian không hoạt động đã chọn. Khởi động lạnh luôn yêu cầu xác thực." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "名称" + "value" : "在所选闲置时间后重新打开时锁定 TablePro。冷启动始终需要认证。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "名稱" + "value" : "閒置超過所選時間後重新開啟時鎖定 TablePro。冷啟動一律需要驗證。" } } } }, - "Network Encryption" : { - - }, - "Network is unavailable. Changes will sync when connectivity is restored." : { - "extractionState" : "stale", + "Logic" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "네트워크를 사용할 수 없습니다. 연결이 복원되면 변경 사항이 동기화됩니다." + "value" : "로직" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mạng không khả dụng. Các thay đổi sẽ được đồng bộ khi có kết nối trở lại." + "value" : "Logic" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "网络不可用。恢复连接后将自动同步更改。" + "value" : "逻辑" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "網路無法使用。連線恢復後將自動同步變更。" + "value" : "邏輯" } } } }, - "Never" : { + "Manage Groups" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "안 함" + "value" : "그룹 관리" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không bao giờ" + "value" : "Quản lý nhóm" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "从不" + "value" : "管理分组" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "永不" + "value" : "管理群組" } } } }, - "New Connection" : { + "Manage Tags" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "새 연결" + "value" : "태그 관리" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Kết nối mới" + "value" : "Quản lý nhãn" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "新建连接" + "value" : "管理标签" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "新增連線" + "value" : "管理標籤" } } } }, - "New Connections" : { + "Manual" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "새 연결" + "value" : "수동" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Kết nối mới" + "value" : "Thủ công" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "新建连接" + "value" : "手动" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "新增連線" + "value" : "手動" } } } }, - "New Database" : { + "Many Databases, One App" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "새 데이터베이스" + "value" : "하나의 앱, 다양한 데이터베이스" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cơ sở dữ liệu mới" + "value" : "Nhiều cơ sở dữ liệu, một ứng dụng" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "新建数据库" + "value" : "一个应用,多种数据库" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "新增資料庫" + "value" : "多種資料庫,一個 App" } } } }, - "New Group" : { + "Match All Tags" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "새 그룹" + "value" : "모든 태그 일치" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Nhóm mới" + "value" : "Khớp tất cả nhãn" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "新建分组" + "value" : "匹配所有标签" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "新增群組" + "value" : "符合所有標籤" } } } }, - "New Subgroup" : { - - }, - "New Tag" : { + "Match Case" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "새 태그" + "value" : "대/소문자 구분" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Nhãn mới" + "value" : "Phân biệt hoa thường" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "新建标签" + "value" : "区分大小写" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "新增標籤" + "value" : "區分大小寫" } } } }, - "No Connections" : { + "Microsoft Entra ID Sign-In Required" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "연결 없음" + "value" : "Microsoft Entra ID 로그인 필요" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chưa có kết nối" + "value" : "Yêu cầu đăng nhập Microsoft Entra ID" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无连接" + "value" : "需要 Microsoft Entra ID 登录" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "沒有連線" + "value" : "需要 Microsoft Entra ID 登入" } } } }, - "No Data" : { + "Mode" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "데이터 없음" + "value" : "모드" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không có dữ liệu" + "value" : "Chế độ" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无数据" + "value" : "模式" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "沒有資料" + "value" : "模式" } } } }, - "No Foreign Keys" : { + "More" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "외래 키 없음" + "value" : "더 보기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không có khóa ngoại" + "value" : "Thêm" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无外键" + "value" : "更多" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "沒有外鍵" + "value" : "更多" } } } }, - "No Groups" : { - "extractionState" : "stale", + "More Actions" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "그룹 없음" + "value" : "추가 동작" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chưa có nhóm" + "value" : "Thao tác khác" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无分组" + "value" : "更多操作" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "沒有群組" + "value" : "更多動作" } } } }, - "No History" : { + "Move" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "기록 없음" + "value" : "이동" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chưa có lịch sử" + "value" : "Di chuyển" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无历史记录" + "value" : "移动" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "沒有歷程記錄" + "value" : "移動" } } } }, - "No Indexes" : { + "Move %d Connections" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "인덱스 없음" + "value" : "연결 %d개 이동" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không có chỉ mục" + "value" : "Di chuyển %d kết nối" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无索引" + "value" : "移动 %d 个连接" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "沒有索引" + "value" : "移動 %d 個連線" } } } }, - "No License Information" : { - - }, - "No Matching Connections" : { - "extractionState" : "stale", + "Move Connection" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "일치하는 연결 없음" + "value" : "연결 이동" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không có kết nối phù hợp" + "value" : "Di chuyển kết nối" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无匹配的连接" + "value" : "移动连接" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "沒有符合的連線" + "value" : "移動連線" } } } }, - "No Microsoft Entra ID access token was supplied." : { + "Move to Group" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Microsoft Entra ID 액세스 토큰이 제공되지 않았습니다." + "value" : "그룹으로 이동" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không có access token Microsoft Entra ID nào được cung cấp." + "value" : "Di chuyển vào nhóm" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未提供 Microsoft Entra ID 访问令牌。" + "value" : "移动到分组" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "未提供 Microsoft Entra ID 存取權杖。" + "value" : "移動至群組" } } } }, - "No Referenced Row" : { + "MySQL, PostgreSQL, SQL Server, Oracle, Redis, SQLite, DuckDB, and more." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "참조된 행 없음" + "value" : "MySQL, PostgreSQL, SQL Server, Oracle, Redis, SQLite, DuckDB 등." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không có dòng tham chiếu" + "value" : "MySQL, PostgreSQL, SQL Server, Oracle, Redis, SQLite, DuckDB và nhiều loại khác." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无引用行" + "value" : "MySQL、PostgreSQL、SQL Server、Oracle、Redis、SQLite、DuckDB 等。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "無參照列" + "value" : "MySQL、PostgreSQL、SQL Server、Oracle、Redis、SQLite、DuckDB 等等。" } } } }, - "No Results" : { + "NULL" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "결과 없음" + "value" : "NULL" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không có kết quả" + "value" : "NULL" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无结果" + "value" : "NULL" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "無結果" + "value" : "NULL" } } } }, - "No Tables" : { + "Name" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "테이블 없음" + "value" : "이름" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không có bảng" + "value" : "Tên" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无表" + "value" : "名称" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "無資料表" + "value" : "名稱" } } } }, - "No Tags" : { + "Network Encryption" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "태그 없음" + "value" : "네트워크 암호화" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chưa có nhãn" + "value" : "Mã hóa mạng" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无标签" + "value" : "网络加密" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "無標籤" + "value" : "網路加密" } } } }, - "No active database session." : { + "Network is unavailable. Changes will sync when connectivity is restored." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "활성 데이터베이스 세션이 없습니다." + "value" : "네트워크를 사용할 수 없습니다. 연결이 복원되면 변경 사항이 동기화됩니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không có phiên cơ sở dữ liệu nào đang hoạt động." + "value" : "Mạng không khả dụng. Các thay đổi sẽ được đồng bộ khi có kết nối trở lại." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无活动的数据库会话。" + "value" : "网络不可用。恢复连接后将自动同步更改。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "沒有作用中的資料庫工作階段。" + "value" : "網路無法使用。連線恢復後將自動同步變更。" } } } }, - "No connections match the selected filter." : { - "extractionState" : "stale", + "Never" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "선택한 필터와 일치하는 연결이 없습니다." + "value" : "안 함" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không có kết nối nào khớp với bộ lọc đã chọn." + "value" : "Không bao giờ" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "没有连接匹配所选筛选条件。" + "value" : "从不" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "沒有連線符合所選的篩選條件。" + "value" : "永不" } } } }, - "No data was provided to add." : { + "New Connection" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "추가할 데이터가 제공되지 않았습니다." + "value" : "새 연결" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không có dữ liệu nào được cung cấp để thêm." + "value" : "Kết nối mới" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "没有提供要添加的数据。" + "value" : "新建连接" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "沒有提供要新增的資料。" + "value" : "新增連線" } } } }, - "No primary key values found." : { + "New Connections" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "기본 키 값을 찾을 수 없습니다." + "value" : "새 연결" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không tìm thấy giá trị khóa chính." + "value" : "Kết nối mới" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未找到主键值。" + "value" : "新建连接" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "找不到主鍵值。" + "value" : "新增連線" } } } }, - "No row found in %@ where %@ = '%@'" : { + "New Database" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "%@에서 %@ = '%@'인 행을 찾을 수 없음" + "value" : "새 데이터베이스" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không tìm thấy dòng trong %@ với %@ = '%@'" + "value" : "Cơ sở dữ liệu mới" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "在%@中未找到%@ = '%@'的行" + "value" : "新建数据库" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "在 %@ 中找不到 %@ = '%@' 的列" + "value" : "新增資料庫" } } } }, - "None" : { + "New Group" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "없음" + "value" : "새 그룹" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không" + "value" : "Nhóm mới" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无" + "value" : "新建分组" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "無" + "value" : "新增群組" } } } }, - "Normal" : { + "New Subgroup" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "일반" + "value" : "새 하위 그룹" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bình thường" + "value" : "Nhóm con mới" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正常" + "value" : "新建子分组" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "一般" + "value" : "新增子群組" } } } }, - "Not Connected" : { + "New Tag" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "연결되지 않음" + "value" : "새 태그" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chưa kết nối" + "value" : "Nhãn mới" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未连接" + "value" : "新建标签" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "未連線" + "value" : "新增標籤" } } } }, - "Not Now" : { - - }, - "Not connected to SQL Server" : { - "extractionState" : "stale", + "No Connections" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SQL Server에 연결되지 않았습니다" + "value" : "연결 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chưa kết nối tới SQL Server" + "value" : "Chưa có kết nối" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未连接到 SQL Server" + "value" : "无连接" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "未連線到 SQL Server" + "value" : "沒有連線" } } } }, - "Not connected to database" : { - "extractionState" : "stale", + "No Data" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "데이터베이스에 연결되지 않았습니다" + "value" : "데이터 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chưa kết nối cơ sở dữ liệu" + "value" : "Không có dữ liệu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未连接到数据库" + "value" : "无数据" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "未連線到資料庫" + "value" : "沒有資料" } } } }, - "Not set" : { + "No Foreign Keys" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "설정되지 않음" + "value" : "외래 키 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chưa đặt" + "value" : "Không có khóa ngoại" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未设置" + "value" : "无外键" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "未設定" + "value" : "沒有外鍵" } } } }, - "Nullable" : { + "No Groups" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "NULL 허용" + "value" : "그룹 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cho phép NULL" + "value" : "Chưa có nhóm" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "可为空" + "value" : "无分组" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "可為空" + "value" : "沒有群組" } } } }, - "OK" : { + "No History" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "확인" + "value" : "기록 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "OK" + "value" : "Chưa có lịch sử" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "好" + "value" : "无历史记录" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "好" + "value" : "沒有歷程記錄" } } } }, - "ON DELETE %@" : { + "No Indexes" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "ON DELETE %@" + "value" : "인덱스 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "ON DELETE %@" + "value" : "Không có chỉ mục" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "ON DELETE %@" + "value" : "无索引" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "ON DELETE %@" + "value" : "沒有索引" } } } }, - "ON UPDATE %@" : { + "No License Information" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "ON UPDATE %@" + "value" : "라이선스 정보 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "ON UPDATE %@" + "value" : "Không có thông tin giấy phép" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "ON UPDATE %@" + "value" : "没有许可证信息" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "ON UPDATE %@" + "value" : "沒有授權資訊" } } } }, - "OR" : { + "No Matching Connections" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "OR" + "value" : "일치하는 연결 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "OR" + "value" : "Không có kết nối phù hợp" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "OR" + "value" : "无匹配的连接" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "OR" + "value" : "沒有符合的連線" } } } }, - "Off" : { + "No Microsoft Entra ID access token was supplied." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "끔" + "value" : "Microsoft Entra ID 액세스 토큰이 제공되지 않았습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tắt" + "value" : "Không có access token Microsoft Entra ID nào được cung cấp." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "关闭" + "value" : "未提供 Microsoft Entra ID 访问令牌。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "關閉" + "value" : "未提供 Microsoft Entra ID 存取權杖。" } } } }, - "One report a day: hashed device ID, versions, language, database types, first-use dates. Never hostnames, credentials, queries, or data." : { - - }, - "Open" : { - - }, - "Open Connection" : { + "No Referenced Row" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "연결 열기" + "value" : "참조된 행 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mở kết nối" + "value" : "Không có dòng tham chiếu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "打开连接" + "value" : "无引用行" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "開啟連線" + "value" : "無參照列" } } } }, - "Open Database File" : { + "No Results" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "데이터베이스 파일 열기" + "value" : "결과 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mở tệp cơ sở dữ liệu" + "value" : "Không có kết quả" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "打开数据库文件" + "value" : "无结果" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "開啟資料庫檔案" + "value" : "無結果" } } } }, - "Open Sample Database" : { - - }, - "Open Settings > Privacy & Security > Local Network and turn TablePro on, then try again." : { + "No Tables" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "시스템 설정 > 개인정보 보호 및 보안 > 로컬 네트워크를 열고 TablePro를 켠 다음 다시 시도하십시오." + "value" : "테이블 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mở Cài đặt > Quyền riêng tư & Bảo mật > Mạng nội bộ, bật TablePro, sau đó thử lại." + "value" : "Không có bảng" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "请打开 设置 > 隐私与安全性 > 本地网络,开启 TablePro,然后重试。" + "value" : "无表" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "請開啟「設定」>「隱私權與安全性」>「區域網路」並開啟 TablePro,然後再試一次。" + "value" : "無資料表" } } } }, - "Open a connection or add rows from Shortcuts, Siri, and the Home Screen." : { - - }, - "Open a table, filter its rows, and change values in place." : { - - }, - "Opens a database connection in TablePro" : { + "No Tags" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro에서 데이터베이스 연결을 엽니다" + "value" : "태그 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mở kết nối cơ sở dữ liệu trong TablePro" + "value" : "Chưa có nhãn" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "在TablePro中打开数据库连接" + "value" : "无标签" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "在 TablePro 中開啟資料庫連線" + "value" : "無標籤" } } } }, - "Opens table data" : { + "No active database session." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "테이블 데이터를 엽니다" + "value" : "활성 데이터베이스 세션이 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mở dữ liệu bảng" + "value" : "Không có phiên cơ sở dữ liệu nào đang hoạt động." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "打开表数据" + "value" : "无活动的数据库会话。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "開啟資料表資料" + "value" : "沒有作用中的資料庫工作階段。" } } } }, - "Opens this connection" : { + "No connections match the selected filter." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 연결을 엽니다" + "value" : "선택한 필터와 일치하는 연결이 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mở kết nối này" + "value" : "Không có kết nối nào khớp với bộ lọc đã chọn." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "打开此连接" + "value" : "没有连接匹配所选筛选条件。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "開啟此連線" + "value" : "沒有連線符合所選的篩選條件。" } } } }, - "Operator" : { + "No data was provided to add." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "연산자" + "value" : "추가할 데이터가 제공되지 않았습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Toán tử" + "value" : "Không có dữ liệu nào được cung cấp để thêm." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "运算符" + "value" : "没有提供要添加的数据。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "運算子" + "value" : "沒有提供要新增的資料。" } } } }, - "Oracle" : { + "No primary key values found." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle" + "value" : "기본 키 값을 찾을 수 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle" + "value" : "Không tìm thấy giá trị khóa chính." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle" + "value" : "未找到主键值。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle" + "value" : "找不到主鍵值。" } } } }, - "Orange" : { + "No row found in %@ where %@ = '%@'" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "주황색" + "value" : "%@에서 %@ = '%@'인 행을 찾을 수 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cam" + "value" : "Không tìm thấy dòng trong %@ với %@ = '%@'" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "橙色" + "value" : "在%@中未找到%@ = '%@'的行" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "橘色" + "value" : "在 %@ 中找不到 %@ = '%@' 的列" } } } }, - "Order" : { + "None" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "순서" + "value" : "없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thứ tự" + "value" : "Không" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "排序" + "value" : "无" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "排序" + "value" : "無" } } } }, - "Organization" : { + "Normal" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "조직" + "value" : "일반" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tổ chức" + "value" : "Bình thường" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "组织" + "value" : "正常" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "組織" + "value" : "一般" } } } }, - "PING failed: %@" : { - - }, - "Page number" : { + "Not Connected" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "페이지 번호" + "value" : "연결되지 않음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Số trang" + "value" : "Chưa kết nối" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "页码" + "value" : "未连接" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "頁碼" + "value" : "未連線" } } } }, - "Parent Group" : { - - }, - "Passphrase" : { + "Not Now" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "암호 구문" + "value" : "나중에" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cụm mật khẩu" + "value" : "Để sau" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "密码短语" + "value" : "以后再说" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "通關密語" + "value" : "稍後再說" } } } }, - "Passphrase (optional)" : { + "Not connected to SQL Server" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "암호 구문(선택 사항)" + "value" : "SQL Server에 연결되지 않았습니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mật khẩu khóa (tùy chọn)" + "value" : "Chưa kết nối tới SQL Server" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "密码短语(可选)" + "value" : "未连接到 SQL Server" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "通關密語(選填)" + "value" : "未連線到 SQL Server" } } } }, - "Passphrases don't match." : { + "Not connected to database" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "암호 구문이 일치하지 않습니다." + "value" : "데이터베이스에 연결되지 않았습니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cụm mật khẩu không khớp." + "value" : "Chưa kết nối cơ sở dữ liệu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "两次输入的密码短语不一致。" + "value" : "未连接到数据库" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "兩次輸入的通關密語不一致。" + "value" : "未連線到資料庫" } } } }, - "Password" : { + "Not set" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "암호" + "value" : "설정되지 않음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mật khẩu" + "value" : "Chưa đặt" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "密码" + "value" : "未设置" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "密碼" + "value" : "未設定" } } } }, - "Passwords are excluded by default. To include them, set a passphrase. The file is encrypted with it." : { + "Nullable" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "암호는 기본적으로 제외됩니다. 암호를 포함하려면 암호 구문을 설정하십시오. 파일은 설정한 암호 구문으로 암호화됩니다." + "value" : "NULL 허용" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mặc định mật khẩu không được đưa vào. Để đưa vào, hãy đặt một cụm mật khẩu. Tệp sẽ được mã hóa bằng cụm mật khẩu đó." + "value" : "Cho phép NULL" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "默认不包含密码。若要包含,请设置一个密码短语,文件会用它加密。" + "value" : "可为空" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "預設不包含密碼。若要包含,請設定一組通關密語,檔案會用它加密。" + "value" : "可為空" } } } }, - "Passwords stay in your Keychain. Connect through an SSH tunnel or over SSL." : { - - }, - "Passwords stay on this device unless you turn on Sync Passwords in Settings. You can change this at any time in Settings." : { - - }, - "Passwords sync through iCloud Keychain, which is end-to-end encrypted. Only affects new saves. Re-save a password to update its sync." : { - "extractionState" : "stale", + "OK" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "암호는 종단 간 암호화된 iCloud 키체인을 통해 동기화됩니다. 새로 저장할 때만 적용됩니다. 암호를 다시 저장하면 해당 암호의 동기화 상태가 업데이트됩니다." + "value" : "확인" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mật khẩu đồng bộ qua iCloud Keychain, vốn được mã hóa đầu cuối. Chỉ ảnh hưởng đến các lần lưu mới. Hãy lưu lại mật khẩu để cập nhật đồng bộ của nó." + "value" : "OK" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "密码通过端到端加密的 iCloud 钥匙串同步。仅影响新的保存。重新保存密码以更新其同步。" + "value" : "好" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "密碼透過端對端加密的 iCloud 鑰匙圈同步。僅影響新的儲存。重新儲存密碼以更新其同步。" + "value" : "好" } } } }, - "Passwords sync through iCloud Keychain, which is end-to-end encrypted. Turning it on affects new saves only, so re-save a password to sync it." : { - - }, - "Paste" : { + "ON DELETE %@" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "붙여넣기" + "value" : "ON DELETE %@" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Dán" + "value" : "ON DELETE %@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "粘贴" + "value" : "ON DELETE %@" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "貼上" + "value" : "ON DELETE %@" } } } }, - "Paste Key" : { + "ON UPDATE %@" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "키 붙여넣기" + "value" : "ON UPDATE %@" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Dán khóa" + "value" : "ON UPDATE %@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "粘贴密钥" + "value" : "ON UPDATE %@" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "貼上金鑰" + "value" : "ON UPDATE %@" } } } }, - "Paste private key (PEM format)" : { + "OR" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "개인 키 붙여넣기(PEM 형식)" + "value" : "OR" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Dán khóa riêng (định dạng PEM)" + "value" : "OR" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "粘贴私钥(PEM格式)" + "value" : "OR" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "貼上私密金鑰(PEM 格式)" + "value" : "OR" } } } }, - "Paste the whole PEM block, including its BEGIN and END lines." : { + "Off" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "BEGIN 및 END 줄을 포함한 전체 PEM 블록을 붙여넣으십시오." + "value" : "끔" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Dán toàn bộ khối PEM, bao gồm cả dòng BEGIN và END." + "value" : "Tắt" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "粘贴完整的 PEM 块,包括 BEGIN 和 END 行。" + "value" : "关闭" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "貼上完整的 PEM 區塊,包括 BEGIN 和 END 行。" + "value" : "關閉" } } } }, - "Path" : { + "One report a day: hashed device ID, versions, language, database types, first-use dates. Never hostnames, credentials, queries, or data." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "경로" + "value" : "하루 한 번 보고서 전송: 해시된 기기 ID, 버전, 언어, 데이터베이스 유형, 최초 사용 날짜. 호스트 이름, 자격 증명, 쿼리 또는 데이터는 절대 포함되지 않습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đường dẫn" + "value" : "Một báo cáo mỗi ngày: ID thiết bị đã băm, phiên bản, ngôn ngữ, loại cơ sở dữ liệu, ngày sử dụng đầu tiên. Không bao giờ có tên máy chủ, thông tin đăng nhập, truy vấn hay dữ liệu." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "路径" + "value" : "每天一份报告:经过哈希处理的设备 ID、版本、语言、数据库类型、首次使用日期。绝不包含主机名、凭证、查询或数据。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "路徑" + "value" : "每天一份報告:雜湊後的裝置 ID、版本、語言、資料庫類型、首次使用日期。絕不包含主機名稱、憑證、查詢或資料。" } } } }, - "Pink" : { + "Open" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "분홍색" + "value" : "열기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Hồng" + "value" : "Mở" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "粉色" + "value" : "打开" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "粉紅色" + "value" : "開啟" } } } }, - "Port" : { + "Open Connection" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "포트" + "value" : "연결 열기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cổng" + "value" : "Mở kết nối" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "端口" + "value" : "打开连接" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "連接埠" + "value" : "開啟連線" } } } }, - "Primary" : { - "extractionState" : "stale", + "Open Database File" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Primary" + "value" : "데이터베이스 파일 열기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chính" + "value" : "Mở tệp cơ sở dữ liệu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "主键" + "value" : "打开数据库文件" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "主鍵" + "value" : "開啟資料庫檔案" } } } }, - "Primary Key" : { + "Open Sample Database" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "기본 키" + "value" : "샘플 데이터베이스 열기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Khóa chính" + "value" : "Mở cơ sở dữ liệu mẫu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "主键" + "value" : "打开示例数据库" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "主鍵" + "value" : "開啟範例資料庫" } } } }, - "Privacy" : { + "Open Settings > Privacy & Security > Local Network and turn TablePro on, then try again." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "개인정보 보호" + "value" : "시스템 설정 > 개인정보 보호 및 보안 > 로컬 네트워크를 열고 TablePro를 켠 다음 다시 시도하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Quyền riêng tư" + "value" : "Mở Cài đặt > Quyền riêng tư & Bảo mật > Mạng nội bộ, bật TablePro, sau đó thử lại." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "隐私" + "value" : "请打开 设置 > 隐私与安全性 > 本地网络,开启 TablePro,然后重试。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "隱私權" + "value" : "請開啟「設定」>「隱私權與安全性」>「區域網路」並開啟 TablePro,然後再試一次。" } } } }, - "Privacy Policy" : { - - }, - "Private Key" : { + "Open a connection or add rows from Shortcuts, Siri, and the Home Screen." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "개인 키" + "value" : "단축어, Siri 및 홈 화면에서 연결을 열거나 행을 추가할 수 있습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Khóa riêng" + "value" : "Mở kết nối hoặc thêm dòng từ Phím tắt, Siri và Màn hình chính." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "私钥" + "value" : "通过“快捷指令”、Siri 和主屏幕打开连接或添加行。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "私密金鑰" + "value" : "透過「捷徑」、Siri 和主畫面開啟連線或新增列。" } } } }, - "Private key" : { + "Open a table, filter its rows, and change values in place." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "개인 키" + "value" : "테이블을 열고, 행을 필터링하고, 그 자리에서 바로 값을 변경할 수 있습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Khóa riêng tư" + "value" : "Mở bảng, lọc các dòng và sửa giá trị ngay tại chỗ." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "私钥" + "value" : "打开表、筛选行,并直接修改值。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "私密金鑰" + "value" : "開啟資料表、篩選其中的列,並直接修改值。" } } } }, - "Provide a JSON object or an array of objects." : { + "Opens a database connection in TablePro" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "JSON 객체 또는 객체 배열을 제공하십시오." + "value" : "TablePro에서 데이터베이스 연결을 엽니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Hãy cung cấp một đối tượng JSON hoặc một mảng các đối tượng." + "value" : "Mở kết nối cơ sở dữ liệu trong TablePro" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "请提供一个 JSON 对象或对象数组。" + "value" : "在TablePro中打开数据库连接" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "請提供一個 JSON 物件或物件陣列。" + "value" : "在 TablePro 中開啟資料庫連線" } } } }, - "Purple" : { + "Opens table data" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "보라색" + "value" : "테이블 데이터를 엽니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tím" + "value" : "Mở dữ liệu bảng" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "紫色" + "value" : "打开表数据" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "紫色" + "value" : "開啟資料表資料" } } } }, - "Queries on the Lock Screen" : { - - }, - "Query" : { + "Opens this connection" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "쿼리" + "value" : "이 연결을 엽니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Truy vấn" + "value" : "Mở kết nối này" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "查询" + "value" : "打开此连接" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "查詢" + "value" : "開啟此連線" } } } }, - "Query Error" : { + "Operator" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "쿼리 오류" + "value" : "연산자" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Lỗi truy vấn" + "value" : "Toán tử" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "查询错误" + "value" : "运算符" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "查詢錯誤" + "value" : "運算子" } } } }, - "Query History" : { - "extractionState" : "stale", + "Oracle" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "쿼리 기록" + "value" : "Oracle" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Lịch sử truy vấn" + "value" : "Oracle" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "查询历史" + "value" : "Oracle" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "查詢記錄" + "value" : "Oracle" } } } }, - "Query execution failed" : { - "extractionState" : "stale", + "Orange" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "쿼리 실행 실패" + "value" : "주황색" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thực thi truy vấn thất bại" + "value" : "Cam" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "查询执行失败" + "value" : "橙色" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "查詢執行失敗" + "value" : "橘色" } } } }, - "Query failed: %@" : { - "extractionState" : "stale", + "Order" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "쿼리 실패: %@" + "value" : "순서" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Truy vấn thất bại: %@" + "value" : "Thứ tự" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "查询失败:%@" + "value" : "排序" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "查詢失敗:%@" + "value" : "排序" } } } }, - "Query text and results will be cleared." : { + "Organization" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "쿼리 텍스트와 결과가 지워집니다." + "value" : "조직" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Nội dung truy vấn và kết quả sẽ bị xóa." + "value" : "Tổ chức" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "查询文本和结果将被清除。" + "value" : "组织" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "查詢文字與結果將被清除。" + "value" : "組織" } } } }, - "Query was cancelled" : { - "extractionState" : "stale", + "PING failed: %@" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "쿼리가 취소되었습니다" + "value" : "PING 실패: %@" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Truy vấn đã bị hủy" + "value" : "PING thất bại: %@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "查询已取消" + "value" : "PING 失败:%@" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "查詢已取消" + "value" : "PING 失敗:%@" } } } }, - "Quick Connect" : { + "Page number" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "빠른 연결" + "value" : "페이지 번호" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Kết nối nhanh" + "value" : "Số trang" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "快速连接" + "value" : "页码" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "快速連線" + "value" : "頁碼" } } } }, - "Quickly connect to your databases." : { + "Parent Group" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "데이터베이스에 빠르게 연결합니다." + "value" : "상위 그룹" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Kết nối nhanh tới các cơ sở dữ liệu của bạn." + "value" : "Nhóm cha" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "快速连接到你的数据库。" + "value" : "父分组" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "快速連線到你的資料庫。" + "value" : "上層群組" } } } }, - "Read-Only" : { - "extractionState" : "stale", + "Passphrase" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "읽기 전용" + "value" : "암호 구문" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chỉ đọc" + "value" : "Cụm mật khẩu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "只读" + "value" : "密码短语" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "唯讀" + "value" : "通關密語" } } } }, - "Recent" : { - - }, - "Reconnecting..." : { + "Passphrase (optional)" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "다시 연결 중..." + "value" : "암호 구문(선택 사항)" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đang kết nối lại..." + "value" : "Mật khẩu khóa (tùy chọn)" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正在重新连接..." + "value" : "密码短语(可选)" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "正在重新連線…" + "value" : "通關密語(選填)" } } } }, - "Red" : { + "Passphrases don't match." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "빨간색" + "value" : "암호 구문이 일치하지 않습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đỏ" + "value" : "Cụm mật khẩu không khớp." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "红色" + "value" : "两次输入的密码短语不一致。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "紅色" + "value" : "兩次輸入的通關密語不一致。" } } } }, - "Redis authentication failed: %1$@ %2$@" : { + "Password" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Redis 인증 실패: %1$@ %2$@" + "value" : "암호" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Xác thực Redis thất bại: %1$@ %2$@" + "value" : "Mật khẩu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "Redis 认证失败:%1$@ %2$@" + "value" : "密码" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "Redis 驗證失敗:%1$@ %2$@" + "value" : "密碼" } } } }, - "Redis authentication failed: %@" : { + "Passwords are excluded by default. To include them, set a passphrase. The file is encrypted with it." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Redis 인증 실패: %@" + "value" : "암호는 기본적으로 제외됩니다. 암호를 포함하려면 암호 구문을 설정하십시오. 파일은 설정한 암호 구문으로 암호화됩니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Xác thực Redis thất bại: %@" + "value" : "Mặc định mật khẩu không được đưa vào. Để đưa vào, hãy đặt một cụm mật khẩu. Tệp sẽ được mã hóa bằng cụm mật khẩu đó." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "Redis 认证失败:%@" + "value" : "默认不包含密码。若要包含,请设置一个密码短语,文件会用它加密。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "Redis 驗證失敗:%@" + "value" : "預設不包含密碼。若要包含,請設定一組通關密語,檔案會用它加密。" } } } }, - "Redis connection failed" : { - - }, - "Refresh from iCloud" : { - "extractionState" : "stale", + "Passwords stay in your Keychain. Connect through an SSH tunnel or over SSL." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "iCloud에서 새로 고침" + "value" : "암호는 키체인에 보관됩니다. SSH 터널 또는 SSL을 통해 연결할 수 있습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Làm mới từ iCloud" + "value" : "Mật khẩu được giữ trong Chuỗi khóa. Kết nối qua đường hầm SSH hoặc qua SSL." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "从 iCloud 刷新" + "value" : "密码保存在你的钥匙串中。可通过 SSH 隧道或 SSL 连接。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "從 iCloud 重新整理" + "value" : "密碼保存在你的鑰匙圈中。可透過 SSH 隧道或 SSL 連線。" } } } }, - "Refresh from iCloud?" : { - "extractionState" : "stale", + "Passwords stay on this device unless you turn on Sync Passwords in Settings. You can change this at any time in Settings." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "iCloud에서 새로 고치시겠습니까?" + "value" : "설정에서 암호 동기화를 켜지 않는 한 암호는 이 기기에만 저장됩니다. 설정에서 언제든지 변경할 수 있습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Làm mới từ iCloud?" + "value" : "Mật khẩu chỉ ở trên thiết bị này trừ khi bạn bật Đồng bộ mật khẩu trong Cài đặt. Bạn có thể thay đổi điều này bất cứ lúc nào trong Cài đặt." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "从 iCloud 刷新?" + "value" : "除非你在设置中开启“同步密码”,否则密码只保留在此设备上。你可以随时在设置中更改此选项。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "從 iCloud 重新整理?" + "value" : "除非你在「設定」中開啟「同步密碼」,否則密碼只會保留在此裝置上。你隨時可以在「設定」中更改此選項。" } } } }, - "Rejected" : { - - }, - "Reload" : { + "Passwords sync through iCloud Keychain, which is end-to-end encrypted. Only affects new saves. Re-save a password to update its sync." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "다시 로드" + "value" : "암호는 종단 간 암호화된 iCloud 키체인을 통해 동기화됩니다. 새로 저장할 때만 적용됩니다. 암호를 다시 저장하면 해당 암호의 동기화 상태가 업데이트됩니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tải lại" + "value" : "Mật khẩu đồng bộ qua iCloud Keychain, vốn được mã hóa đầu cuối. Chỉ ảnh hưởng đến các lần lưu mới. Hãy lưu lại mật khẩu để cập nhật đồng bộ của nó." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "重新加载" + "value" : "密码通过端到端加密的 iCloud 钥匙串同步。仅影响新的保存。重新保存密码以更新其同步。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "重新載入" + "value" : "密碼透過端對端加密的 iCloud 鑰匙圈同步。僅影響新的儲存。重新儲存密碼以更新其同步。" } } } }, - "Remove" : { + "Passwords sync through iCloud Keychain, which is end-to-end encrypted. Turning it on affects new saves only, so re-save a password to sync it." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "제거" + "value" : "암호는 종단 간 암호화된 iCloud 키체인을 통해 동기화됩니다. 켜면 새로 저장하는 암호에만 적용되므로, 기존 암호를 동기화하려면 다시 저장하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Gỡ" + "value" : "Mật khẩu được đồng bộ qua Chuỗi khóa iCloud, vốn được mã hóa đầu cuối. Việc bật chỉ ảnh hưởng đến các lần lưu mới, vì vậy hãy lưu lại mật khẩu để đồng bộ nó." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "移除" + "value" : "密码通过端到端加密的 iCloud 钥匙串同步。开启后仅影响新的保存,因此请重新保存密码以同步它。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "移除" + "value" : "密碼透過端對端加密的 iCloud 鑰匙圈同步。開啟後只會影響新的儲存,因此請重新儲存密碼以同步它。" } } } }, - "Remove from Favorites" : { - - }, - "Remove from Recent" : { - - }, - "Replace" : { + "Paste" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "바꾸기" + "value" : "붙여넣기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thay thế" + "value" : "Dán" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "替换" + "value" : "粘贴" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "取代" + "value" : "貼上" } } } }, - "Requested" : { - - }, - "Require Face ID" : { + "Paste Key" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Face ID 요구" + "value" : "키 붙여넣기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Yêu cầu Face ID" + "value" : "Dán khóa" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "需要 Face ID" + "value" : "粘贴密钥" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "需要 Face ID" + "value" : "貼上金鑰" } } } }, - "Require Optic ID" : { + "Paste private key (PEM format)" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Optic ID 요구" + "value" : "개인 키 붙여넣기(PEM 형식)" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Yêu cầu Optic ID" + "value" : "Dán khóa riêng (định dạng PEM)" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "需要 Optic ID" + "value" : "粘贴私钥(PEM格式)" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "需要 Optic ID" + "value" : "貼上私密金鑰(PEM 格式)" } } } }, - "Require Touch ID" : { + "Paste the whole PEM block, including its BEGIN and END lines." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Touch ID 요구" + "value" : "BEGIN 및 END 줄을 포함한 전체 PEM 블록을 붙여넣으십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Yêu cầu Touch ID" + "value" : "Dán toàn bộ khối PEM, bao gồm cả dòng BEGIN và END." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "需要 Touch ID" + "value" : "粘贴完整的 PEM 块,包括 BEGIN 和 END 行。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "需要 Touch ID" + "value" : "貼上完整的 PEM 區塊,包括 BEGIN 和 END 行。" } } } }, - "Required" : { + "Path" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "필수" + "value" : "경로" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bắt buộc" + "value" : "Đường dẫn" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "必填" + "value" : "路径" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "必填" + "value" : "路徑" } } } }, - "Reset" : { - - }, - "Reset Database" : { - - }, - "Reset Sample Database?" : { - - }, - "Results Cleared" : { + "Pink" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "결과가 지워짐" + "value" : "분홍색" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đã xoá kết quả" + "value" : "Hồng" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "结果已清除" + "value" : "粉色" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "結果已清除" + "value" : "粉紅色" } } } }, - "Results cleared due to memory pressure." : { - "extractionState" : "stale", + "Port" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "메모리 부족으로 결과가 지워졌습니다." + "value" : "포트" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Kết quả đã bị xoá do thiếu bộ nhớ." + "value" : "Cổng" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "因内存不足,结果已清除。" + "value" : "端口" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "因記憶體不足,結果已清除。" + "value" : "連接埠" } } } }, - "Results trimmed due to memory pressure." : { + "Primary" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "메모리 부족으로 결과 일부가 삭제되었습니다." + "value" : "Primary" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đã cắt bớt kết quả do áp lực bộ nhớ." + "value" : "Chính" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "由于内存压力,结果已被裁剪。" + "value" : "主键" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "因記憶體不足,結果已縮減。" + "value" : "主鍵" } } } }, - "Retry" : { + "Primary Key" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "재시도" + "value" : "기본 키" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thử lại" + "value" : "Khóa chính" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "重试" + "value" : "主键" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "重試" + "value" : "主鍵" } } } }, - "Role" : { + "Privacy" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "역할" + "value" : "개인정보 보호" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Vai trò" + "value" : "Quyền riêng tư" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "角色" + "value" : "隐私" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "角色" + "value" : "隱私權" } } } }, - "Row %d of %d" : { + "Privacy Policy" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "%d/%d행" + "value" : "개인정보 처리방침" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Dòng %d / %d" + "value" : "Chính sách quyền riêng tư" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "第%d行 / 共%d行" + "value" : "隐私政策" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "第 %d 列 / 共 %d 列" + "value" : "隱私權政策" } } } }, - "Row (JSON or CSV)" : { + "Private Key" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "행(JSON 또는 CSV)" + "value" : "개인 키" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Dòng (JSON hoặc CSV)" + "value" : "Khóa riêng" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "行(JSON 或 CSV)" + "value" : "私钥" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "列(JSON 或 CSV)" + "value" : "私密金鑰" } } } }, - "Row updated" : { + "Private key" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "행 업데이트됨" + "value" : "개인 키" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đã cập nhật dòng" + "value" : "Khóa riêng tư" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "行已更新" + "value" : "私钥" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "列已更新" + "value" : "私密金鑰" } } } }, - "Rows (JSON or CSV)" : { + "Provide a JSON object or an array of objects." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "여러 행(JSON 또는 CSV)" + "value" : "JSON 객체 또는 객체 배열을 제공하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Các dòng (JSON hoặc CSV)" + "value" : "Hãy cung cấp một đối tượng JSON hoặc một mảng các đối tượng." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "多行(JSON 或 CSV)" + "value" : "请提供一个 JSON 对象或对象数组。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "多列(JSON 或 CSV)" + "value" : "請提供一個 JSON 物件或物件陣列。" } } } }, - "Rows per Page" : { + "Purple" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "페이지당 행 수" + "value" : "보라색" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Số dòng mỗi trang" + "value" : "Tím" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "每页行数" + "value" : "紫色" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "每頁列數" + "value" : "紫色" } } } }, - "Run" : { + "Queries on the Lock Screen" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "실행" + "value" : "잠금 화면에서 쿼리 확인" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chạy" + "value" : "Truy vấn trên Màn hình khóa" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "运行" + "value" : "锁定屏幕上的查询" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "執行" + "value" : "鎖定畫面上的查詢" } } } }, - "Run a Query" : { + "Query" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "쿼리 실행" + "value" : "쿼리" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chạy truy vấn" + "value" : "Truy vấn" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "运行查询" + "value" : "查询" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "執行查詢" + "value" : "查詢" } } } }, - "Run queries and find the ones you ran before in History." : { - - }, - "Running" : { - - }, - "Running query" : { - "extractionState" : "manual", + "Query Error" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "쿼리 실행 중" + "value" : "쿼리 오류" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đang chạy truy vấn" + "value" : "Lỗi truy vấn" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正在运行查询" + "value" : "查询错误" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "正在執行查詢" + "value" : "查詢錯誤" } } } }, - "SELECT * FROM ..." : { + "Query History" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SELECT * FROM ..." + "value" : "쿼리 기록" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "SELECT * FROM ..." + "value" : "Lịch sử truy vấn" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SELECT * FROM ..." + "value" : "查询历史" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SELECT * FROM ..." + "value" : "查詢記錄" } } } }, - "SID" : { + "Query execution failed" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SID" + "value" : "쿼리 실행 실패" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "SID" + "value" : "Thực thi truy vấn thất bại" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SID" + "value" : "查询执行失败" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SID" + "value" : "查詢執行失敗" } } } }, - "SID Not Found" : { + "Query failed: %@" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SID를 찾을 수 없음" + "value" : "쿼리 실패: %@" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không tìm thấy SID" + "value" : "Truy vấn thất bại: %@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未找到 SID" + "value" : "查询失败:%@" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "找不到 SID" + "value" : "查詢失敗:%@" } } } }, - "SQL" : { + "Query text and results will be cleared." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SQL" + "value" : "쿼리 텍스트와 결과가 지워집니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "SQL" + "value" : "Nội dung truy vấn và kết quả sẽ bị xóa." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SQL" + "value" : "查询文本和结果将被清除。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SQL" + "value" : "查詢文字與結果將被清除。" } } } }, - "SSH Host" : { + "Query was cancelled" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 호스트" + "value" : "쿼리가 취소되었습니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Máy chủ SSH" + "value" : "Truy vấn đã bị hủy" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SSH主机" + "value" : "查询已取消" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 主機" + "value" : "查詢已取消" } } } }, - "SSH Host Key Changed" : { + "Quick Connect" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 호스트 키 변경됨" + "value" : "빠른 연결" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Khóa máy chủ SSH đã thay đổi" + "value" : "Kết nối nhanh" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 主机密钥已更改" + "value" : "快速连接" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 主機金鑰已變更" + "value" : "快速連線" } } } }, - "SSH Password" : { + "Quickly connect to your databases." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 암호" + "value" : "데이터베이스에 빠르게 연결합니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mật khẩu SSH" + "value" : "Kết nối nhanh tới các cơ sở dữ liệu của bạn." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SSH密码" + "value" : "快速连接到你的数据库。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 密碼" + "value" : "快速連線到你的資料庫。" } } } }, - "SSH Port" : { + "Read-Only" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 포트" + "value" : "읽기 전용" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cổng SSH" + "value" : "Chỉ đọc" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SSH端口" + "value" : "只读" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 連接埠" + "value" : "唯讀" } } } }, - "SSH Server" : { + "Recent" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 서버" + "value" : "최근" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Máy chủ SSH" + "value" : "Gần đây" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SSH服务器" + "value" : "最近" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 伺服器" + "value" : "最近" } } } }, - "SSH Tunnel" : { + "Reconnecting..." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 터널" + "value" : "다시 연결 중..." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đường hầm SSH" + "value" : "Đang kết nối lại..." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SSH隧道" + "value" : "正在重新连接..." } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 隧道" + "value" : "正在重新連線…" } } } }, - "SSH Tunnel Failed" : { + "Red" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 터널 실패" + "value" : "빨간색" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đường hầm SSH thất bại" + "value" : "Đỏ" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SSH隧道失败" + "value" : "红色" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 隧道失敗" + "value" : "紅色" } } } }, - "SSH Username" : { + "Redis authentication failed: %1$@ %2$@" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 사용자 이름" + "value" : "Redis 인증 실패: %1$@ %2$@" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tên đăng nhập SSH" + "value" : "Xác thực Redis thất bại: %1$@ %2$@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SSH用户名" + "value" : "Redis 认证失败:%1$@ %2$@" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 使用者名稱" + "value" : "Redis 驗證失敗:%1$@ %2$@" } } } }, - "SSH private key not found: %@" : { - "extractionState" : "stale", + "Redis authentication failed: %@" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 개인 키를 찾을 수 없습니다: %@" + "value" : "Redis 인증 실패: %@" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không tìm thấy private key SSH: %@" + "value" : "Xác thực Redis thất bại: %@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未找到 SSH 私钥:%@" + "value" : "Redis 认证失败:%@" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "找不到 SSH 私密金鑰:%@" + "value" : "Redis 驗證失敗:%@" } } } }, - "SSL" : { + "Redis connection failed" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSL" + "value" : "Redis 연결 실패" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "SSL" + "value" : "Kết nối Redis thất bại" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SSL" + "value" : "Redis 连接失败" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SSL" + "value" : "Redis 連線失敗" } } } }, - "SSL Mode" : { + "Refresh from iCloud" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSL 모드" + "value" : "iCloud에서 새로 고침" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chế độ SSL" + "value" : "Làm mới từ iCloud" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SSL 模式" + "value" : "从 iCloud 刷新" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SSL 模式" + "value" : "從 iCloud 重新整理" } } } }, - "Safe Mode" : { + "Refresh from iCloud?" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "안전 모드" + "value" : "iCloud에서 새로 고치시겠습니까?" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chế độ an toàn" + "value" : "Làm mới từ iCloud?" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "安全模式" + "value" : "从 iCloud 刷新?" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "安全模式" + "value" : "從 iCloud 重新整理?" } } } }, - "Sample Database" : { - - }, - "Sample Database Unavailable" : { - - }, - "Save" : { + "Rejected" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "저장" + "value" : "거부" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Lưu" + "value" : "Từ chối" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "保存" + "value" : "拒绝" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "儲存" + "value" : "拒絕" } } } }, - "Save Changes?" : { + "Reload" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "변경 사항을 저장하시겠습니까?" + "value" : "다시 로드" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Lưu thay đổi?" + "value" : "Tải lại" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "保存更改?" + "value" : "重新加载" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "儲存變更?" + "value" : "重新載入" } } } }, - "Saved credentials for these connections will be permanently removed." : { - - }, - "Schema" : { + "Remove" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "스키마" + "value" : "제거" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Schema" + "value" : "Gỡ" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "模式" + "value" : "移除" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "綱要" + "value" : "移除" } } } }, - "Schemas" : { + "Remove from Favorites" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "스키마" + "value" : "즐겨찾기에서 제거" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Schemas" + "value" : "Gỡ khỏi Yêu thích" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "模式" + "value" : "从收藏中移除" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "綱要" + "value" : "從我的最愛中移除" } } } }, - "Search Connections" : { - - }, - "Search all columns" : { + "Remove from Recent" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "모든 열 검색" + "value" : "최근 항목에서 제거" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tìm kiếm tất cả cột" + "value" : "Xóa khỏi mục Gần đây" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "搜索所有列" + "value" : "从“最近”中移除" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "搜尋所有欄位" + "value" : "從「最近」中移除" } } } }, - "Search tables" : { + "Replace" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "테이블 검색" + "value" : "바꾸기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tìm bảng" + "value" : "Thay thế" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "搜索表" + "value" : "替换" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "搜尋資料表" + "value" : "取代" } } } }, - "Second value" : { + "Requested" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "두 번째 값" + "value" : "요청" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Giá trị thứ hai" + "value" : "Đề nghị" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "第二个值" + "value" : "请求" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "第二個值" + "value" : "要求" } } } }, - "Section" : { + "Require Face ID" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "섹션" + "value" : "Face ID 요구" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Phần" + "value" : "Yêu cầu Face ID" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "分区" + "value" : "需要 Face ID" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "區段" + "value" : "需要 Face ID" } } } }, - "Security" : { + "Require Optic ID" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "보안" + "value" : "Optic ID 요구" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bảo mật" + "value" : "Yêu cầu Optic ID" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "安全" + "value" : "需要 Optic ID" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "安全性" + "value" : "需要 Optic ID" } } } }, - "Select Private Key" : { + "Require Touch ID" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "개인 키 선택" + "value" : "Touch ID 요구" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chọn khóa riêng" + "value" : "Yêu cầu Touch ID" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "选择私钥" + "value" : "需要 Touch ID" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "選擇私密金鑰" + "value" : "需要 Touch ID" } } } }, - "Select a Connection" : { - "extractionState" : "stale", + "Required" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "연결 선택" + "value" : "필수" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chọn kết nối" + "value" : "Bắt buộc" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "选择连接" + "value" : "必填" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "選擇連線" + "value" : "必填" } } } }, - "Server" : { + "Reset" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "서버" + "value" : "재설정" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Máy chủ" + "value" : "Đặt lại" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "服务器" + "value" : "重置" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "伺服器" + "value" : "重設" } } } }, - "Service Name" : { + "Reset Database" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "서비스 이름" + "value" : "데이터베이스 재설정" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tên dịch vụ" + "value" : "Đặt lại cơ sở dữ liệu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "服务名称" + "value" : "重置数据库" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "服務名稱" + "value" : "重設資料庫" } } } }, - "Service Name Not Found" : { + "Reset Sample Database?" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "서비스 이름을 찾을 수 없음" + "value" : "샘플 데이터베이스를 재설정하시겠습니까?" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không tìm thấy tên dịch vụ" + "value" : "Đặt lại cơ sở dữ liệu mẫu?" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未找到服务名" + "value" : "要重置示例数据库吗?" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "找不到服務名稱" + "value" : "要重設範例資料庫嗎?" } } } }, - "Set up a new database connection" : { - "extractionState" : "stale", + "Results Cleared" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "새 데이터베이스 연결 설정" + "value" : "결과가 지워짐" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thiết lập kết nối cơ sở dữ liệu mới" + "value" : "Đã xoá kết quả" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "设置新的数据库连接" + "value" : "结果已清除" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "設定新的資料庫連線" + "value" : "結果已清除" } } } }, - "Settings" : { + "Results cleared due to memory pressure." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "설정" + "value" : "메모리 부족으로 결과가 지워졌습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cài đặt" + "value" : "Kết quả đã bị xoá do thiếu bộ nhớ." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "设置" + "value" : "因内存不足,结果已清除。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "設定" + "value" : "因記憶體不足,結果已清除。" } } } }, - "Share" : { + "Results trimmed due to memory pressure." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "공유" + "value" : "메모리 부족으로 결과 일부가 삭제되었습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chia sẻ" + "value" : "Đã cắt bớt kết quả do áp lực bộ nhớ." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "共享" + "value" : "由于内存压力,结果已被裁剪。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "分享" + "value" : "因記憶體不足,結果已縮減。" } } } }, - "Share Results" : { + "Retry" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "결과 공유" + "value" : "재시도" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chia sẻ kết quả" + "value" : "Thử lại" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "共享结果" + "value" : "重试" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "分享結果" + "value" : "重試" } } } }, - "Share Row" : { + "Role" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "행 공유" + "value" : "역할" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chia sẻ dòng" + "value" : "Vai trò" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "共享行" + "value" : "角色" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "分享列" + "value" : "角色" } } } }, - "Share Usage Data" : { - - }, - "Share Usage Data?" : { - - }, - "Share anonymous usage data" : { - "extractionState" : "stale", + "Row %d of %d" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "익명 사용 데이터 공유" + "value" : "%d/%d행" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chia sẻ dữ liệu sử dụng ẩn danh" + "value" : "Dòng %d / %d" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "共享匿名使用数据" + "value" : "第%d行 / 共%d行" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "分享匿名使用資料" + "value" : "第 %d 列 / 共 %d 列" } } } }, - "Shortcuts and Widgets" : { - - }, - "Showing the first %d rows. Add LIMIT to fetch more." : { + "Row (JSON or CSV)" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "처음 %d개 행을 표시합니다. 더 가져오려면 LIMIT를 추가하십시오." + "value" : "행(JSON 또는 CSV)" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đang hiển thị %d dòng đầu tiên. Thêm LIMIT để lấy thêm." + "value" : "Dòng (JSON hoặc CSV)" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正在显示前 %d 行。添加 LIMIT 以获取更多。" + "value" : "行(JSON 或 CSV)" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "正在顯示前 %d 列。加入 LIMIT 以取得更多。" + "value" : "列(JSON 或 CSV)" } } } }, - "Sign In" : { + "Row updated" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "로그인" + "value" : "행 업데이트됨" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đăng nhập" + "value" : "Đã cập nhật dòng" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "登录" + "value" : "行已更新" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "登入" + "value" : "列已更新" } } } }, - "Sign in to Microsoft Entra ID with your browser?" : { + "Rows (JSON or CSV)" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "브라우저에서 Microsoft Entra ID에 로그인하시겠습니까?" + "value" : "여러 행(JSON 또는 CSV)" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đăng nhập Microsoft Entra ID bằng trình duyệt?" + "value" : "Các dòng (JSON hoặc CSV)" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "要用浏览器登录 Microsoft Entra ID 吗?" + "value" : "多行(JSON 或 CSV)" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "要用瀏覽器登入 Microsoft Entra ID 嗎?" + "value" : "多列(JSON 或 CSV)" } } } }, - "Sign in to iCloud in the Settings app to sync your connections." : { - - }, - "Skip" : { - "extractionState" : "stale", + "Rows per Page" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "건너뛰기" + "value" : "페이지당 행 수" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bỏ qua" + "value" : "Số dòng mỗi trang" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "跳过" + "value" : "每页行数" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "略過" + "value" : "每頁列數" } } } }, - "Some credentials could not be saved to the keychain. You may need to re-enter them later." : { + "Run" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "일부 자격 증명을 키체인에 저장할 수 없습니다. 나중에 다시 입력해야 할 수 있습니다." + "value" : "실행" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không thể lưu một số thông tin xác thực vào keychain. Bạn có thể cần nhập lại sau." + "value" : "Chạy" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "部分凭证无法保存到钥匙串,稍后可能需要重新输入。" + "value" : "运行" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "部分憑證無法儲存至鑰匙圈,稍後可能需要重新輸入。" + "value" : "執行" } } } }, - "Sort" : { + "Run a Query" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "정렬" + "value" : "쿼리 실행" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Sắp xếp" + "value" : "Chạy truy vấn" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "排序" + "value" : "运行查询" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "排序" + "value" : "執行查詢" } } } }, - "Sort By" : { + "Run queries and find the ones you ran before in History." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "정렬 기준" + "value" : "쿼리를 실행하고, 이전에 실행한 쿼리를 기록에서 찾을 수 있습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Sắp xếp theo" + "value" : "Chạy truy vấn và tìm lại những truy vấn đã chạy trong Lịch sử." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "排序方式" + "value" : "运行查询,并在“历史”中找到之前运行过的查询。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "排序依據" + "value" : "執行查詢,並在「歷程記錄」中找到你之前執行過的查詢。" } } } }, - "Stats" : { + "Running" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "통계" + "value" : "실행 중" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thống kê" + "value" : "Đang chạy" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "统计" + "value" : "正在运行" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "統計" + "value" : "執行中" } } } }, - "Status" : { + "Running query" : { + "extractionState" : "manual", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "상태" + "value" : "쿼리 실행 중" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Trạng thái" + "value" : "Đang chạy truy vấn" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "状态" + "value" : "正在运行查询" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "狀態" + "value" : "正在執行查詢" } } } }, - "Stop" : { + "SELECT * FROM ..." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "중지" + "value" : "SELECT * FROM ..." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Dừng" + "value" : "SELECT * FROM ..." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "停止" + "value" : "SELECT * FROM ..." } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "停止" + "value" : "SELECT * FROM ..." } } } }, - "Stopped" : { - - }, - "Stopped at %d rows to stay within memory limits. Add LIMIT to fetch fewer." : { + "SID" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "메모리 한도를 넘지 않도록 %d개 행에서 중지했습니다. 더 적게 가져오려면 LIMIT를 추가하십시오." + "value" : "SID" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đã dừng ở %d dòng để giữ trong giới hạn bộ nhớ. Thêm LIMIT để lấy ít hơn." + "value" : "SID" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "已在 %d 行处停止以保持在内存限制内。添加 LIMIT 以获取更少。" + "value" : "SID" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "已在 %d 列處停止以維持在記憶體限制內。加入 LIMIT 以取得更少。" + "value" : "SID" } } } }, - "Stopped before the query finished." : { - - }, - "Stopped. Showing %d rows." : { + "SID Not Found" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "중지됨. %d개 행을 표시합니다." + "value" : "SID를 찾을 수 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đã dừng. Đang hiển thị %d dòng." + "value" : "Không tìm thấy SID" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "已停止。正在显示 %d 行。" + "value" : "未找到 SID" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "已停止。正在顯示 %d 列。" + "value" : "找不到 SID" } } } }, - "Swipe right on a connection to add it to Favorites." : { - - }, - "Switching..." : { - "extractionState" : "stale", + "SQL" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "전환 중..." + "value" : "SQL" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đang chuyển..." + "value" : "SQL" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正在切换..." + "value" : "SQL" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "正在切換…" + "value" : "SQL" } } } }, - "Sync" : { - "extractionState" : "stale", + "SSH Host" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "동기화" + "value" : "SSH 호스트" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đồng bộ" + "value" : "Máy chủ SSH" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "同步" + "value" : "SSH主机" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "同步" + "value" : "SSH 主機" } } } }, - "Sync Now" : { - "extractionState" : "stale", + "SSH Host Key Changed" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "지금 동기화" + "value" : "SSH 호스트 키 변경됨" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đồng bộ ngay" + "value" : "Khóa máy chủ SSH đã thay đổi" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "立即同步" + "value" : "SSH 主机密钥已更改" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "立即同步" + "value" : "SSH 主機金鑰已變更" } } } }, - "Sync Passwords" : { + "SSH Password" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "암호 동기화" + "value" : "SSH 암호" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đồng bộ mật khẩu" + "value" : "Mật khẩu SSH" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "同步密码" + "value" : "SSH密码" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "同步密碼" + "value" : "SSH 密碼" } } } }, - "Sync from iCloud" : { - "extractionState" : "stale", + "SSH Port" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "iCloud에서 동기화" + "value" : "SSH 포트" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đồng bộ từ iCloud" + "value" : "Cổng SSH" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "从iCloud同步" + "value" : "SSH端口" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "從 iCloud 同步" + "value" : "SSH 連接埠" } } } }, - "Sync token expired. A full sync will be performed." : { - "extractionState" : "stale", + "SSH Server" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "동기화 토큰이 만료되었습니다. 전체 동기화를 수행합니다." + "value" : "SSH 서버" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Token đồng bộ đã hết hạn. Sẽ thực hiện đồng bộ toàn bộ." + "value" : "Máy chủ SSH" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "同步令牌已过期。将执行一次完整同步。" + "value" : "SSH服务器" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "同步權杖已過期。將執行一次完整同步。" + "value" : "SSH 伺服器" } } } }, - "Sync with iCloud" : { + "SSH Tunnel" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "iCloud와 동기화" + "value" : "SSH 터널" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đồng bộ với iCloud" + "value" : "Đường hầm SSH" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "与 iCloud 同步" + "value" : "SSH隧道" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "與 iCloud 同步" + "value" : "SSH 隧道" } } } }, - "Sync zone not found. A full sync will be performed." : { + "SSH Tunnel Failed" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSH 터널 실패" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đường hầm SSH thất bại" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSH隧道失败" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSH 隧道失敗" + } + } + } + }, + "SSH Username" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSH 사용자 이름" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tên đăng nhập SSH" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSH用户名" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSH 使用者名稱" + } + } + } + }, + "SSH private key not found: %@" : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSH 개인 키를 찾을 수 없습니다: %@" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Không tìm thấy private key SSH: %@" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "未找到 SSH 私钥:%@" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "找不到 SSH 私密金鑰:%@" + } + } + } + }, + "SSL" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSL" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSL" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSL" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSL" + } + } + } + }, + "SSL Mode" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSL 모드" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chế độ SSL" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSL 模式" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "SSL 模式" + } + } + } + }, + "Safe Mode" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "안전 모드" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chế độ an toàn" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "安全模式" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "安全模式" + } + } + } + }, + "Sample Database" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "샘플 데이터베이스" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cơ sở dữ liệu mẫu" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "示例数据库" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "範例資料庫" + } + } + } + }, + "Sample Database Unavailable" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "샘플 데이터베이스를 사용할 수 없음" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cơ sở dữ liệu mẫu không khả dụng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "示例数据库不可用" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "範例資料庫無法使用" + } + } + } + }, + "Save" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "저장" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lưu" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "保存" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "儲存" + } + } + } + }, + "Save Changes?" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "변경 사항을 저장하시겠습니까?" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lưu thay đổi?" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "保存更改?" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "儲存變更?" + } + } + } + }, + "Saved credentials for these connections will be permanently removed." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 연결들에 저장된 자격 증명이 영구적으로 제거됩니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Thông tin đăng nhập đã lưu của các kết nối này sẽ bị xóa vĩnh viễn." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "这些连接已保存的凭据将被永久移除。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "這些連線已儲存的憑證將被永久移除。" + } + } + } + }, + "Schema" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "스키마" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Schema" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "模式" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "綱要" + } + } + } + }, + "Schemas" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "스키마" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Schemas" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "模式" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "綱要" + } + } + } + }, + "Search Connections" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "연결 검색" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tìm kết nối" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "搜索连接" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "搜尋連線" + } + } + } + }, + "Search all columns" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "모든 열 검색" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tìm kiếm tất cả cột" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "搜索所有列" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "搜尋所有欄位" + } + } + } + }, + "Search tables" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "테이블 검색" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tìm bảng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "搜索表" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "搜尋資料表" + } + } + } + }, + "Second value" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "두 번째 값" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Giá trị thứ hai" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "第二个值" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "第二個值" + } + } + } + }, + "Section" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "섹션" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Phần" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "分区" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "區段" + } + } + } + }, + "Security" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "보안" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bảo mật" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "安全" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "安全性" + } + } + } + }, + "Select Private Key" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "개인 키 선택" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chọn khóa riêng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "选择私钥" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "選擇私密金鑰" + } + } + } + }, + "Select a Connection" : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "연결 선택" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chọn kết nối" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "选择连接" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "選擇連線" + } + } + } + }, + "Server" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "서버" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Máy chủ" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "服务器" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "伺服器" + } + } + } + }, + "Service Name" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "서비스 이름" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tên dịch vụ" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "服务名称" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "服務名稱" + } + } + } + }, + "Service Name Not Found" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "서비스 이름을 찾을 수 없음" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Không tìm thấy tên dịch vụ" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "未找到服务名" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "找不到服務名稱" + } + } + } + }, + "Set up a new database connection" : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "새 데이터베이스 연결 설정" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Thiết lập kết nối cơ sở dữ liệu mới" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "设置新的数据库连接" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定新的資料庫連線" + } + } + } + }, + "Settings" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "설정" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cài đặt" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "设置" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定" + } + } + } + }, + "Share" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "공유" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chia sẻ" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "共享" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "分享" + } + } + } + }, + "Share Results" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "결과 공유" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chia sẻ kết quả" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "共享结果" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "分享結果" + } + } + } + }, + "Share Row" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "행 공유" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chia sẻ dòng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "共享行" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "分享列" + } + } + } + }, + "Share Usage Data" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "사용 데이터 공유" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chia sẻ dữ liệu sử dụng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "共享使用数据" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "分享使用資料" + } + } + } + }, + "Share Usage Data?" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "사용 데이터를 공유하시겠습니까?" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chia sẻ dữ liệu sử dụng?" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "要共享使用数据吗?" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "要分享使用資料嗎?" + } + } + } + }, + "Share anonymous usage data" : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "익명 사용 데이터 공유" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chia sẻ dữ liệu sử dụng ẩn danh" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "共享匿名使用数据" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "分享匿名使用資料" + } + } + } + }, + "Shortcuts and Widgets" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "단축어 및 위젯" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Phím tắt và tiện ích" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "快捷指令和小组件" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "捷徑與小工具" + } + } + } + }, + "Showing the first %d rows. Add LIMIT to fetch more." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "처음 %d개 행을 표시합니다. 더 가져오려면 LIMIT를 추가하십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đang hiển thị %d dòng đầu tiên. Thêm LIMIT để lấy thêm." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在显示前 %d 行。添加 LIMIT 以获取更多。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在顯示前 %d 列。加入 LIMIT 以取得更多。" + } + } + } + }, + "Sign In" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "로그인" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đăng nhập" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "登录" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "登入" + } + } + } + }, + "Sign in to Microsoft Entra ID with your browser?" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "브라우저에서 Microsoft Entra ID에 로그인하시겠습니까?" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đăng nhập Microsoft Entra ID bằng trình duyệt?" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "要用浏览器登录 Microsoft Entra ID 吗?" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "要用瀏覽器登入 Microsoft Entra ID 嗎?" + } + } + } + }, + "Sign in to iCloud in the Settings app to sync your connections." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "연결을 동기화하려면 설정 앱에서 iCloud에 로그인하십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đăng nhập iCloud trong ứng dụng Cài đặt để đồng bộ kết nối của bạn." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "在“设置”App 中登录 iCloud 以同步你的连接。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "在「設定」App 中登入 iCloud 以同步你的連線。" + } + } + } + }, + "Skip" : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "건너뛰기" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bỏ qua" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "跳过" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "略過" + } + } + } + }, + "Some credentials could not be saved to the keychain. You may need to re-enter them later." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "일부 자격 증명을 키체인에 저장할 수 없습니다. 나중에 다시 입력해야 할 수 있습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Không thể lưu một số thông tin xác thực vào keychain. Bạn có thể cần nhập lại sau." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "部分凭证无法保存到钥匙串,稍后可能需要重新输入。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "部分憑證無法儲存至鑰匙圈,稍後可能需要重新輸入。" + } + } + } + }, + "Sort" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "정렬" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sắp xếp" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "排序" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "排序" + } + } + } + }, + "Sort By" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "정렬 기준" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sắp xếp theo" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "排序方式" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "排序依據" + } + } + } + }, + "Stats" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "통계" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Thống kê" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "统计" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "統計" + } + } + } + }, + "Status" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "상태" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trạng thái" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "状态" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "狀態" + } + } + } + }, + "Stop" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "중지" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dừng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "停止" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "停止" + } + } + } + }, + "Stopped" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "중지됨" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đã dừng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "已停止" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "已停止" + } + } + } + }, + "Stopped at %d rows to stay within memory limits. Add LIMIT to fetch fewer." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "메모리 한도를 넘지 않도록 %d개 행에서 중지했습니다. 더 적게 가져오려면 LIMIT를 추가하십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đã dừng ở %d dòng để giữ trong giới hạn bộ nhớ. Thêm LIMIT để lấy ít hơn." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "已在 %d 行处停止以保持在内存限制内。添加 LIMIT 以获取更少。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "已在 %d 列處停止以維持在記憶體限制內。加入 LIMIT 以取得更少。" + } + } + } + }, + "Stopped before the query finished." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "쿼리가 완료되기 전에 중지되었습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đã dừng trước khi truy vấn hoàn tất." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "查询完成前已停止。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "查詢完成前已停止。" + } + } + } + }, + "Stopped. Showing %d rows." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "중지됨. %d개 행을 표시합니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đã dừng. Đang hiển thị %d dòng." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "已停止。正在显示 %d 行。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "已停止。正在顯示 %d 列。" + } + } + } + }, + "Swipe right on a connection to add it to Favorites." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "연결을 오른쪽으로 쓸어넘겨 즐겨찾기에 추가하십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vuốt sang phải trên một kết nối để thêm vào Yêu thích." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "在连接上向右轻扫,即可将其添加到收藏。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "在連線上向右滑動,即可將其加入我的最愛。" + } + } + } + }, + "Switching..." : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "전환 중..." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đang chuyển..." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在切换..." + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在切換…" + } + } + } + }, + "Sync" : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "동기화" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đồng bộ" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "同步" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "同步" + } + } + } + }, + "Sync Now" : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "지금 동기화" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đồng bộ ngay" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "立即同步" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "立即同步" + } + } + } + }, + "Sync Passwords" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "암호 동기화" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đồng bộ mật khẩu" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "同步密码" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "同步密碼" + } + } + } + }, + "Sync from iCloud" : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud에서 동기화" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đồng bộ từ iCloud" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "从iCloud同步" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "從 iCloud 同步" + } + } + } + }, + "Sync token expired. A full sync will be performed." : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "동기화 토큰이 만료되었습니다. 전체 동기화를 수행합니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Token đồng bộ đã hết hạn. Sẽ thực hiện đồng bộ toàn bộ." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "同步令牌已过期。将执行一次完整同步。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "同步權杖已過期。將執行一次完整同步。" + } + } + } + }, + "Sync with iCloud" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud와 동기화" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đồng bộ với iCloud" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "与 iCloud 同步" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "與 iCloud 同步" + } + } + } + }, + "Sync zone not found. A full sync will be performed." : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "동기화 영역을 찾을 수 없습니다. 전체 동기화를 수행합니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Không tìm thấy vùng đồng bộ. Sẽ thực hiện đồng bộ toàn bộ." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "未找到同步区域。将执行完整同步。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "找不到同步區域。將執行完整同步。" + } + } + } + }, + "Syncing from iCloud..." : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud에서 동기화 중..." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đang đồng bộ từ iCloud..." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在从iCloud同步..." + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在從 iCloud 同步…" + } + } + } + }, + "Syncing…" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "동기화 중…" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đang đồng bộ…" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在同步…" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在同步…" + } + } + } + }, + "Syncs with Your Mac" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mac과 동기화" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đồng bộ với máy Mac của bạn" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "与你的 Mac 同步" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "與你的 Mac 同步" + } + } + } + }, + "TLS handshake failed: %@" : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TLS 핸드셰이크 실패: %@" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bắt tay TLS thất bại: %@" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TLS 握手失败:%@" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TLS 交握失敗:%@" + } + } + } + }, + "Tab" : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "탭" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tab" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "标签页" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "分頁" + } + } + } + }, + "Table" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "테이블" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bảng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "表" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "資料表" + } + } + } + }, + "Table Structure" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "테이블 구조" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cấu trúc bảng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "表结构" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "資料表結構" + } + } + } + }, + "TablePro" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro" + } + } + } + }, + "TablePro Is Locked" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro가 잠겨 있습니다" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro đã khóa" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 已锁定" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 已鎖定" + } + } + } + }, + "TablePro cannot receive the output of COPY TO STDOUT, so it was discarded. Run a SELECT instead." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro는 COPY TO STDOUT의 출력을 받을 수 없으므로 출력이 삭제되었습니다. 대신 SELECT를 실행하십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro không thể nhận đầu ra của COPY TO STDOUT nên đầu ra đã bị bỏ qua. Hãy chạy SELECT thay thế." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 无法接收 COPY TO STDOUT 的输出,因此输出已被丢弃。请改为运行 SELECT。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 無法接收 COPY TO STDOUT 的輸出,因此已將其捨棄。請改為執行 SELECT。" + } + } + } + }, + "TablePro cannot run a replication COPY." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro는 복제 COPY를 실행할 수 없습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro không thể chạy lệnh COPY dùng cho replication." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 无法运行用于复制的 COPY。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 無法執行複寫用的 COPY。" + } + } + } + }, + "TablePro cannot send data to COPY FROM STDIN, so no rows were sent. Insert the rows with INSERT instead." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro는 COPY FROM STDIN으로 데이터를 보낼 수 없으므로 행을 보내지 않았습니다. 대신 INSERT로 행을 삽입하십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro không thể gửi dữ liệu tới COPY FROM STDIN nên không có dòng nào được gửi. Hãy chèn các dòng bằng INSERT thay thế." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 无法向 COPY FROM STDIN 发送数据,因此没有发送任何行。请改用 INSERT 插入这些行。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 無法傳送資料給 COPY FROM STDIN,因此未傳送任何列。請改用 INSERT 插入這些列。" + } + } + } + }, + "TablePro could not read that file." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro가 해당 파일을 읽을 수 없습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro không đọc được tệp đó." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 无法读取该文件。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 無法讀取該檔案。" + } + } + } + }, + "TablePro could not read your saved connections. Nothing on this device has been changed." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro가 저장된 연결을 읽을 수 없습니다. 이 기기에서 변경된 내용은 없습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro không đọc được các kết nối đã lưu. Không có gì trên thiết bị này bị thay đổi." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 无法读取你已保存的连接。此设备上的任何内容都未被更改。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 無法讀取你已儲存的連線。此裝置上的任何內容都沒有變更。" + } + } + } + }, + "TablePro doesn't support “%@” connections" : { + "extractionState" : "manual", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro는 “%@” 연결을 지원하지 않습니다" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro không hỗ trợ kết nối “%@”" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 不支持“%@”连接" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 不支援「%@」連線" + } + } + } + }, + "TablePro has not connected to %@ before.\n\n%@ key fingerprint:\n%@\n\nTrust this server only if the fingerprint matches the one you expect." : { + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "TablePro has not connected to %1$@ before.\n\n%2$@ key fingerprint:\n%3$@\n\nTrust this server only if the fingerprint matches the one you expect." + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro는 이전에 %1$@에 연결한 적이 없습니다.\n\n%2$@ 키 지문:\n%3$@\n\n예상한 지문과 일치할 때만 이 서버를 신뢰하십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro chưa từng kết nối tới %1$@.\n\nVân tay khóa %2$@:\n%3$@\n\nChỉ tin cậy máy chủ này nếu vân tay khớp với vân tay bạn mong đợi." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 之前未连接过 %1$@。\n\n%2$@ 密钥指纹:\n%3$@\n\n只有当指纹与你预期的一致时才信任此服务器。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 之前未連線過 %1$@。\n\n%2$@ 金鑰指紋:\n%3$@\n\n只有當指紋與你預期的一致時才信任此伺服器。" + } + } + } + }, + "TablePro is Locked" : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro가 잠겨 있습니다" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro đã khóa" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 已锁定" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 已鎖定" + } + } + } + }, + "TablePro will re-download every connection, group, and tag from your iCloud account. Local data on this device is not deleted." : { "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "동기화 영역을 찾을 수 없습니다. 전체 동기화를 수행합니다." + "value" : "TablePro는 iCloud 계정에서 모든 연결, 그룹 및 태그를 다시 다운로드합니다. 이 기기의 로컬 데이터는 삭제되지 않습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro sẽ tải lại mọi kết nối, nhóm và thẻ từ tài khoản iCloud của bạn. Dữ liệu cục bộ trên thiết bị này không bị xóa." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 将从你的 iCloud 账户重新下载每个连接、分组和标签。此设备上的本地数据不会被删除。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "TablePro 將從你的 iCloud 帳戶重新下載每個連線、群組和標籤。此裝置上的本機資料不會被刪除。" + } + } + } + }, + "Tables" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "테이블" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bảng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "表" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "資料表" + } + } + } + }, + "Tag" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "태그" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nhãn" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "标签" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "標籤" + } + } + } + }, + "Tags" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "태그" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nhãn" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "标签" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "標籤" + } + } + } + }, + "Tap Retry to try again." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "다시 시도하려면 ‘재시도’를 탭하십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nhấn Thử lại để thử lần nữa." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "轻点“重试”以再试一次。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "點按「重試」以再試一次。" + } + } + } + }, + "Test Connection" : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "연결 테스트" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kiểm tra kết nối" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "测试连接" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "測試連線" + } + } + } + }, + "Testing..." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "테스트 중..." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Đang kiểm tra..." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在测试..." + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "正在測試…" + } + } + } + }, + "That connection no longer exists in TablePro." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "해당 연결이 더 이상 TablePro에 없습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kết nối đó không còn tồn tại trong TablePro." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "该连接在 TablePro 中已不存在。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "該連線在 TablePro 中已不存在。" + } + } + } + }, + "That file holds a certificate, not a private key." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 파일에는 개인 키가 아닌 인증서가 들어 있습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không tìm thấy vùng đồng bộ. Sẽ thực hiện đồng bộ toàn bộ." + "value" : "Tệp đó chứa chứng chỉ, không phải khóa riêng tư." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未找到同步区域。将执行完整同步。" + "value" : "该文件包含的是证书,不是私钥。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "找不到同步區域。將執行完整同步。" + "value" : "該檔案包含的是憑證,不是私密金鑰。" } } } }, - "Syncing from iCloud..." : { - "extractionState" : "stale", + "That file holds a private key, not a certificate." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "iCloud에서 동기화 중..." + "value" : "이 파일에는 인증서가 아닌 개인 키가 들어 있습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đang đồng bộ từ iCloud..." + "value" : "Tệp đó chứa khóa riêng tư, không phải chứng chỉ." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正在从iCloud同步..." + "value" : "该文件包含的是私钥,不是证书。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "正在從 iCloud 同步…" + "value" : "該檔案包含的是私密金鑰,不是憑證。" } } } }, - "Syncing…" : { + "That file is not a PEM certificate. Choose a .pem or .crt file, or paste its contents." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "동기화 중…" + "value" : "이 파일은 PEM 인증서가 아닙니다. .pem 또는 .crt 파일을 선택하거나 인증서 내용을 붙여넣으십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đang đồng bộ…" + "value" : "Tệp đó không phải chứng chỉ PEM. Hãy chọn tệp .pem hoặc .crt, hoặc dán nội dung của nó." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正在同步…" + "value" : "该文件不是 PEM 证书。请选择 .pem 或 .crt 文件,或粘贴其内容。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "正在同步…" + "value" : "該檔案不是 PEM 憑證。請選擇 .pem 或 .crt 檔案,或貼上其內容。" } } } }, - "Syncs with Your Mac" : { - + "That private key is protected by a passphrase. Remove the passphrase or import a PKCS#12 file instead." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 개인 키는 암호로 보호되어 있습니다. 암호를 제거하거나 대신 PKCS#12 파일을 가져오십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Khóa riêng tư đó được bảo vệ bằng passphrase. Hãy gỡ passphrase hoặc nhập tệp PKCS#12 thay thế." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "该私钥受密码短语保护。请移除密码短语,或改为导入 PKCS#12 文件。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "該私密金鑰受密碼短語保護。請移除密碼短語,或改為匯入 PKCS#12 檔案。" + } + } + } }, - "TLS handshake failed: %@" : { + "That text has no certificate or key in it. Paste the whole PEM block, including its BEGIN and END lines." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 텍스트에 인증서 또는 키가 없습니다. BEGIN 및 END 줄을 포함한 전체 PEM 블록을 붙여넣으십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Văn bản đó không chứa chứng chỉ hay khóa nào. Hãy dán toàn bộ khối PEM, bao gồm cả dòng BEGIN và END." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "该文本中没有证书或密钥。请粘贴完整的 PEM 块,包括 BEGIN 和 END 行。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "該文字中沒有憑證或金鑰。請貼上完整的 PEM 區塊,包括 BEGIN 和 END 行。" + } + } + } + }, + "The CA certificate for this connection is missing. Import it again in the connection's SSL settings." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 연결의 CA 인증서가 없습니다. 연결의 SSL 설정에서 다시 가져오십시오." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Thiếu chứng chỉ CA cho kết nối này. Hãy nhập lại trong cài đặt SSL của kết nối." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "此连接的 CA 证书缺失。请在连接的 SSL 设置中重新导入。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "此連線的 CA 憑證遺失。請在連線的 SSL 設定中重新匯入。" + } + } + } + }, + "The CSV data has no header row." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "CSV 데이터에 헤더 행이 없습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dữ liệu CSV không có dòng tiêu đề." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "该 CSV 数据没有标题行。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "該 CSV 資料沒有標題列。" + } + } + } + }, + "The JSON array must contain only objects." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "JSON 배열에는 객체만 포함해야 합니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mảng JSON chỉ được chứa các đối tượng." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "JSON 数组只能包含对象。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "JSON 陣列只能包含物件。" + } + } + } + }, + "The Microsoft Entra ID access token was rejected by the driver." : { + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "Microsoft Entra ID 액세스 토큰이 드라이버에서 거부되었습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Access token Microsoft Entra ID bị driver từ chối." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "驱动拒绝了该 Microsoft Entra ID 访问令牌。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "驅動程式拒絕了該 Microsoft Entra ID 存取權杖。" + } + } + } + }, + "The Oracle listener refused the connection (ORA-%ld)." : { "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "TLS 핸드셰이크 실패: %@" + "value" : "Oracle 리스너가 연결을 거부했습니다(ORA-%ld)." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bắt tay TLS thất bại: %@" + "value" : "Oracle listener đã từ chối kết nối (ORA-%ld)." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "TLS 握手失败:%@" + "value" : "Oracle 侦听器拒绝了此连接(ORA-%ld)。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "TLS 交握失敗:%@" + "value" : "Oracle 接聽程式拒絕了此連線(ORA-%ld)。" } } } }, - "Tab" : { + "The Oracle listener refused the connection." : { + "extractionState" : "stale", + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oracle 리스너가 연결을 거부했습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oracle listener đã từ chối kết nối." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oracle 侦听器拒绝了此连接。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "Oracle 接聽程式拒絕了此連線。" + } + } + } + }, + "The Oracle server closed the connection during the login handshake." : { "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "탭" + "value" : "Oracle 서버가 로그인 핸드셰이크 중 연결을 종료했습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tab" + "value" : "Máy chủ Oracle đã đóng kết nối trong quá trình bắt tay đăng nhập." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "标签页" + "value" : "Oracle 服务器在登录握手期间关闭了连接。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "分頁" + "value" : "Oracle 伺服器在登入交握期間關閉了連線。" } } } }, - "Table" : { + "The Password field is empty. Fill it in, or clear Username to sign in as the default user." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "테이블" + "value" : "암호 필드가 비어 있습니다. 암호를 입력하거나, 기본 사용자로 로그인하려면 사용자 이름 필드를 비우십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bảng" + "value" : "Trường Mật khẩu đang trống. Hãy điền vào, hoặc xóa trống Tên đăng nhập để đăng nhập bằng người dùng mặc định." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "表" + "value" : "“密码”字段为空。请填写密码,或清空“用户名”以默认用户身份登录。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "資料表" + "value" : "「密碼」欄位是空的。請填寫它,或清空「使用者名稱」以預設使用者身分登入。" } } } }, - "Table Structure" : { + "The SSH server may be unreachable or running a different protocol." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "테이블 구조" + "value" : "SSH 서버에 연결할 수 없거나 서버에서 다른 프로토콜을 사용 중일 수 있습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cấu trúc bảng" + "value" : "Máy chủ SSH có thể không truy cập được hoặc đang chạy giao thức khác." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "表结构" + "value" : "SSH服务器可能无法访问或运行了不同的协议。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "資料表結構" + "value" : "SSH 伺服器可能無法連線,或正在執行不同的通訊協定。" } } } }, - "TablePro" : { + "The SSH tunnel connected but could not forward to the database port." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro" + "value" : "SSH 터널에 연결했지만 데이터베이스 포트로 전달할 수 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro" + "value" : "Đường hầm SSH đã kết nối nhưng không thể chuyển tiếp đến cổng cơ sở dữ liệu." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro" + "value" : "SSH隧道已连接但无法转发到数据库端口。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro" + "value" : "SSH 隧道已連線,但無法轉送至資料庫連接埠。" } } } }, - "TablePro Is Locked" : { - - }, - "TablePro cannot receive the output of COPY TO STDOUT, so it was discarded. Run a SELECT instead." : { - - }, - "TablePro cannot run a replication COPY." : { - - }, - "TablePro cannot send data to COPY FROM STDIN, so no rows were sent. Insert the rows with INSERT instead." : { - - }, - "TablePro could not read that file." : { + "The app and iOS versions, and your language" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro가 해당 파일을 읽을 수 없습니다." + "value" : "앱 및 iOS 버전, 사용 언어" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro không đọc được tệp đó." + "value" : "Phiên bản ứng dụng và iOS, cùng ngôn ngữ của bạn" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro 无法读取该文件。" + "value" : "应用和 iOS 的版本,以及你的语言" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro 無法讀取該檔案。" + "value" : "App 與 iOS 版本,以及你的語言" } } } }, - "TablePro could not read your saved connections. Nothing on this device has been changed." : { - - }, - "TablePro doesn't support “%@” connections" : { - "extractionState" : "manual", + "The certificate could not be saved to this device's keychain." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro는 “%@” 연결을 지원하지 않습니다" + "value" : "인증서를 이 기기의 키체인에 저장할 수 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro không hỗ trợ kết nối “%@”" + "value" : "Không thể lưu chứng chỉ vào keychain của thiết bị này." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro 不支持“%@”连接" + "value" : "无法将证书保存到本设备的钥匙串。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro 不支援「%@」連線" + "value" : "無法將憑證儲存到本裝置的鑰匙圈。" } } } }, - "TablePro has not connected to %@ before.\n\n%@ key fingerprint:\n%@\n\nTrust this server only if the fingerprint matches the one you expect." : { + "The certificate file could not be read. Check the password and that the file is a PKCS#12 certificate." : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "TablePro has not connected to %1$@ before.\n\n%2$@ key fingerprint:\n%3$@\n\nTrust this server only if the fingerprint matches the one you expect." - } - }, "ko" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro는 이전에 %1$@에 연결한 적이 없습니다.\n\n%2$@ 키 지문:\n%3$@\n\n예상한 지문과 일치할 때만 이 서버를 신뢰하십시오." + "value" : "인증서 파일을 읽을 수 없습니다. 암호가 맞는지, 파일이 PKCS#12 인증서인지 확인하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro chưa từng kết nối tới %1$@.\n\nVân tay khóa %2$@:\n%3$@\n\nChỉ tin cậy máy chủ này nếu vân tay khớp với vân tay bạn mong đợi." + "value" : "Không thể đọc tệp chứng chỉ. Hãy kiểm tra mật khẩu và xác nhận tệp là chứng chỉ PKCS#12." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro 之前未连接过 %1$@。\n\n%2$@ 密钥指纹:\n%3$@\n\n只有当指纹与你预期的一致时才信任此服务器。" + "value" : "无法读取证书文件。请检查密码,并确认该文件是 PKCS#12 证书。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro 之前未連線過 %1$@。\n\n%2$@ 金鑰指紋:\n%3$@\n\n只有當指紋與你預期的一致時才信任此伺服器。" + "value" : "無法讀取憑證檔案。請檢查密碼,並確認該檔案是 PKCS#12 憑證。" } } } }, - "TablePro is Locked" : { - "extractionState" : "stale", + "The client certificate for this connection is missing. Import it again in the connection's SSL settings." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro가 잠겨 있습니다" + "value" : "이 연결의 클라이언트 인증서가 없습니다. 연결의 SSL 설정에서 다시 가져오십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro đã khóa" + "value" : "Thiếu chứng chỉ máy khách cho kết nối này. Hãy nhập lại trong cài đặt SSL của kết nối." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro 已锁定" + "value" : "此连接的客户端证书缺失。请在连接的 SSL 设置中重新导入。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro 已鎖定" + "value" : "此連線的用戶端憑證遺失。請在連線的 SSL 設定中重新匯入。" } } } }, - "TablePro will re-download every connection, group, and tag from your iCloud account. Local data on this device is not deleted." : { - "extractionState" : "stale", + "The client key for this connection is missing. Import it again in the connection's SSL settings." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro는 iCloud 계정에서 모든 연결, 그룹 및 태그를 다시 다운로드합니다. 이 기기의 로컬 데이터는 삭제되지 않습니다." + "value" : "이 연결의 클라이언트 키가 없습니다. 연결의 SSL 설정에서 다시 가져오십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro sẽ tải lại mọi kết nối, nhóm và thẻ từ tài khoản iCloud của bạn. Dữ liệu cục bộ trên thiết bị này không bị xóa." + "value" : "Thiếu khóa máy khách cho kết nối này. Hãy nhập lại trong cài đặt SSL của kết nối." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro 将从你的 iCloud 账户重新下载每个连接、分组和标签。此设备上的本地数据不会被删除。" + "value" : "此连接的客户端密钥缺失。请在连接的 SSL 设置中重新导入。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro 將從你的 iCloud 帳戶重新下載每個連線、群組和標籤。此裝置上的本機資料不會被刪除。" + "value" : "此連線的用戶端金鑰遺失。請在連線的 SSL 設定中重新匯入。" } } } }, - "Tables" : { + "The connection attempt was cancelled." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "테이블" + "value" : "연결 시도가 취소되었습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bảng" + "value" : "Lần thử kết nối đã bị hủy." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "表" + "value" : "连接尝试已取消。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "資料表" + "value" : "連線嘗試已取消。" } } } }, - "Tag" : { + "The data could not be read: %@" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "태그" + "value" : "데이터를 읽을 수 없습니다: %@" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Nhãn" + "value" : "Không thể đọc dữ liệu: %@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "标签" + "value" : "无法读取数据:%@" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "標籤" + "value" : "無法讀取資料:%@" } } } }, - "Tags" : { + "The data has no values to insert into %@." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "태그" + "value" : "%@에 삽입할 값이 입력 데이터에 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Nhãn" + "value" : "Dữ liệu không có giá trị nào để chèn vào %@." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "标签" + "value" : "该数据没有可插入 %@ 的值。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "標籤" + "value" : "該資料沒有可插入 %@ 的值。" } } } }, - "Tap Retry to try again." : { - - }, - "Test Connection" : { + "The database limited the result. Showing %d rows." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "연결 테스트" + "value" : "데이터베이스에서 결과를 제한했습니다. %d개 행을 표시합니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Kiểm tra kết nối" + "value" : "Cơ sở dữ liệu đã giới hạn kết quả. Đang hiển thị %d dòng." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "测试连接" + "value" : "数据库限制了结果。正在显示 %d 行。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "測試連線" + "value" : "資料庫限制了結果。正在顯示 %d 列。" } } } }, - "Testing..." : { + "The encrypted file is corrupt or incomplete" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "테스트 중..." + "value" : "암호화된 파일이 손상되었거나 불완전합니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đang kiểm tra..." + "value" : "Tệp mã hóa bị hỏng hoặc không đầy đủ" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "正在测试..." + "value" : "加密文件已损坏或不完整" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "正在測試…" + "value" : "加密的檔案已損毀或不完整" } } } }, - "That connection no longer exists in TablePro." : { + "The file is not UTF-8 text." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "해당 연결이 더 이상 TablePro에 없습니다." + "value" : "파일이 UTF-8 텍스트가 아닙니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Kết nối đó không còn tồn tại trong TablePro." + "value" : "Tệp không phải văn bản UTF-8." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "该连接在 TablePro 中已不存在。" + "value" : "该文件不是 UTF-8 文本。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "該連線在 TablePro 中已不存在。" + "value" : "該檔案不是 UTF-8 文字。" } } } }, - "That file holds a certificate, not a private key." : { + "The host key for %@ has changed.\n\nThis can mean the server was rebuilt, or that someone is intercepting the connection.\n\nPrevious fingerprint:\n%@\n\nCurrent fingerprint:\n%@" : { "localizations" : { + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "The host key for %1$@ has changed.\n\nThis can mean the server was rebuilt, or that someone is intercepting the connection.\n\nPrevious fingerprint:\n%2$@\n\nCurrent fingerprint:\n%3$@" + } + }, "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 파일에는 개인 키가 아닌 인증서가 들어 있습니다." + "value" : "%1$@의 호스트 키가 변경되었습니다.\n\n서버가 다시 구축되었거나 누군가 연결을 가로채고 있을 수 있습니다.\n\n이전 지문:\n%2$@\n\n현재 지문:\n%3$@" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tệp đó chứa chứng chỉ, không phải khóa riêng tư." + "value" : "Khóa máy chủ của %1$@ đã thay đổi.\n\nĐiều này có thể nghĩa là máy chủ được dựng lại, hoặc có ai đó đang chặn kết nối.\n\nVân tay trước đây:\n%2$@\n\nVân tay hiện tại:\n%3$@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "该文件包含的是证书,不是私钥。" + "value" : "%1$@ 的主机密钥已更改。\n\n这可能意味着服务器被重建,也可能有人正在拦截此连接。\n\n之前的指纹:\n%2$@\n\n当前的指纹:\n%3$@" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "該檔案包含的是憑證,不是私密金鑰。" + "value" : "%1$@ 的主機金鑰已變更。\n\n這可能表示伺服器被重建,也可能有人正在攔截此連線。\n\n之前的指紋:\n%2$@\n\n目前的指紋:\n%3$@" } } } }, - "That file holds a private key, not a certificate." : { + "The license text is missing from this build." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 파일에는 인증서가 아닌 개인 키가 들어 있습니다." + "value" : "이 빌드에는 라이선스 본문이 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tệp đó chứa khóa riêng tư, không phải chứng chỉ." + "value" : "Bản dựng này thiếu nội dung giấy phép." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "该文件包含的是私钥,不是证书。" + "value" : "此版本缺少许可证文本。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "該檔案包含的是私密金鑰,不是憑證。" + "value" : "此建置版本缺少授權文字。" } } } }, - "That file is not a PEM certificate. Choose a .pem or .crt file, or paste its contents." : { + "The list of open source libraries is missing from this build." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 파일은 PEM 인증서가 아닙니다. .pem 또는 .crt 파일을 선택하거나 인증서 내용을 붙여넣으십시오." + "value" : "이 빌드에는 오픈 소스 라이브러리 목록이 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tệp đó không phải chứng chỉ PEM. Hãy chọn tệp .pem hoặc .crt, hoặc dán nội dung của nó." + "value" : "Bản dựng này thiếu danh sách thư viện mã nguồn mở." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "该文件不是 PEM 证书。请选择 .pem 或 .crt 文件,或粘贴其内容。" + "value" : "此版本缺少开源库清单。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "該檔案不是 PEM 憑證。請選擇 .pem 或 .crt 檔案,或貼上其內容。" + "value" : "此建置版本缺少開放原始碼程式庫清單。" } } } }, - "That private key is protected by a passphrase. Remove the passphrase or import a PKCS#12 file instead." : { + "The listener does not know the requested SID" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 개인 키는 암호로 보호되어 있습니다. 암호를 제거하거나 대신 PKCS#12 파일을 가져오십시오." + "value" : "리스너가 요청한 SID를 인식하지 못합니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Khóa riêng tư đó được bảo vệ bằng passphrase. Hãy gỡ passphrase hoặc nhập tệp PKCS#12 thay thế." + "value" : "Listener không biết SID được yêu cầu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "该私钥受密码短语保护。请移除密码短语,或改为导入 PKCS#12 文件。" + "value" : "侦听器不认识请求的 SID" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "該私密金鑰受密碼短語保護。請移除密碼短語,或改為匯入 PKCS#12 檔案。" + "value" : "接聽程式不認識請求的 SID" } } } }, - "That text has no certificate or key in it. Paste the whole PEM block, including its BEGIN and END lines." : { + "The listener does not know the requested service name" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 텍스트에 인증서 또는 키가 없습니다. BEGIN 및 END 줄을 포함한 전체 PEM 블록을 붙여넣으십시오." + "value" : "리스너가 요청한 서비스 이름을 인식하지 못합니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Văn bản đó không chứa chứng chỉ hay khóa nào. Hãy dán toàn bộ khối PEM, bao gồm cả dòng BEGIN và END." + "value" : "Listener không biết tên dịch vụ được yêu cầu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "该文本中没有证书或密钥。请粘贴完整的 PEM 块,包括 BEGIN 和 END 行。" + "value" : "侦听器不认识请求的服务名" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "該文字中沒有憑證或金鑰。請貼上完整的 PEM 區塊,包括 BEGIN 和 END 行。" + "value" : "接聽程式不認識請求的服務名稱" } } } }, - "The CA certificate for this connection is missing. Import it again in the connection's SSL settings." : { + "The listener does not know this SID. Databases from 12c onward are usually reached by service name instead." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 연결의 CA 인증서가 없습니다. 연결의 SSL 설정에서 다시 가져오십시오." + "value" : "리스너에서 이 SID를 인식하지 못합니다. 12c 이상 데이터베이스는 일반적으로 서비스 이름으로 연결합니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thiếu chứng chỉ CA cho kết nối này. Hãy nhập lại trong cài đặt SSL của kết nối." + "value" : "Listener không biết SID này. Các cơ sở dữ liệu từ 12c trở đi thường được truy cập bằng tên dịch vụ." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此连接的 CA 证书缺失。请在连接的 SSL 设置中重新导入。" + "value" : "侦听器不认识此 SID。12c 及以后的数据库通常改用服务名连接。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此連線的 CA 憑證遺失。請在連線的 SSL 設定中重新匯入。" + "value" : "接聽程式不認識此 SID。12c 及以後的資料庫通常改用服務名稱連線。" } } } }, - "The CSV data has no header row." : { + "The listener does not know this service name. Check it with your DBA, or switch to SID if this is an older database." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "CSV 데이터에 헤더 행이 없습니다." + "value" : "리스너에서 이 서비스 이름을 인식하지 못합니다. DBA에게 확인하거나 이전 버전 데이터베이스인 경우 SID로 전환하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Dữ liệu CSV không có dòng tiêu đề." + "value" : "Listener không biết tên dịch vụ này. Hãy hỏi DBA của bạn, hoặc chuyển sang SID nếu đây là cơ sở dữ liệu cũ." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "该 CSV 数据没有标题行。" + "value" : "侦听器不认识此服务名。请与你的 DBA 确认,或在较旧的数据库上改用 SID。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "該 CSV 資料沒有標題列。" + "value" : "接聽程式不認識此服務名稱。請與你的 DBA 確認,或在較舊的資料庫上改用 SID。" } } } }, - "The JSON array must contain only objects." : { + "The listener has no handler available for the requested service" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "JSON 배열에는 객체만 포함해야 합니다." + "value" : "리스너에 요청한 서비스를 처리할 수 있는 핸들러가 없습니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mảng JSON chỉ được chứa các đối tượng." + "value" : "Listener không có handler khả dụng cho dịch vụ được yêu cầu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "JSON 数组只能包含对象。" + "value" : "侦听器没有可用于所请求服务的处理程序" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "JSON 陣列只能包含物件。" + "value" : "接聽程式沒有可用於所請求服務的處理常式" } } } }, - "The Microsoft Entra ID access token was rejected by the driver." : { + "The listener is blocking new connections to the requested service" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Microsoft Entra ID 액세스 토큰이 드라이버에서 거부되었습니다." + "value" : "리스너가 요청한 서비스에 대한 새 연결을 차단하고 있습니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Access token Microsoft Entra ID bị driver từ chối." + "value" : "Listener đang chặn các kết nối mới tới dịch vụ được yêu cầu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "驱动拒绝了该 Microsoft Entra ID 访问令牌。" + "value" : "侦听器正在阻止到所请求服务的新连接" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "驅動程式拒絕了該 Microsoft Entra ID 存取權杖。" + "value" : "接聽程式正在阻擋到所請求服務的新連線" } } } }, - "The Oracle listener refused the connection (ORA-%ld)." : { - "extractionState" : "stale", + "The operation violates a database constraint." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle 리스너가 연결을 거부했습니다(ORA-%ld)." + "value" : "작업이 데이터베이스 제약 조건을 위반합니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle listener đã từ chối kết nối (ORA-%ld)." + "value" : "Thao tác vi phạm ràng buộc cơ sở dữ liệu." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle 侦听器拒绝了此连接(ORA-%ld)。" + "value" : "操作违反了数据库约束。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle 接聽程式拒絕了此連線(ORA-%ld)。" + "value" : "此操作違反了資料庫限制條件。" } } } }, - "The Oracle listener refused the connection." : { + "The query did not finish within the configured timeout, so the connection was reset. Run the query again." : { "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle 리스너가 연결을 거부했습니다." + "value" : "쿼리가 설정된 제한 시간 내에 완료되지 않아 연결을 재설정했습니다. 쿼리를 다시 실행하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle listener đã từ chối kết nối." + "value" : "Truy vấn không hoàn tất trong thời gian chờ đã cấu hình, nên kết nối đã bị đặt lại. Hãy chạy lại truy vấn." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle 侦听器拒绝了此连接。" + "value" : "查询未在配置的超时时间内完成,因此连接已重置。请重新运行该查询。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle 接聽程式拒絕了此連線。" + "value" : "查詢未在設定的逾時時間內完成,因此連線已重設。請重新執行該查詢。" } } } }, - "The Oracle server closed the connection during the login handshake." : { - "extractionState" : "stale", + "The query returned no rows." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle 서버가 로그인 핸드셰이크 중 연결을 종료했습니다." + "value" : "쿼리에서 반환된 행이 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Máy chủ Oracle đã đóng kết nối trong quá trình bắt tay đăng nhập." + "value" : "Truy vấn không trả về hàng nào." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle 服务器在登录握手期间关闭了连接。" + "value" : "查询未返回任何行。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle 伺服器在登入交握期間關閉了連線。" + "value" : "查詢未傳回任何列。" } } } }, - "The Password field is empty. Fill it in, or clear Username to sign in as the default user." : { - - }, - "The SSH server may be unreachable or running a different protocol." : { + "The report contains:" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 서버에 연결할 수 없거나 서버에서 다른 프로토콜을 사용 중일 수 있습니다." + "value" : "보고서에 포함되는 내용:" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Máy chủ SSH có thể không truy cập được hoặc đang chạy giao thức khác." + "value" : "Báo cáo gồm:" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SSH服务器可能无法访问或运行了不同的协议。" + "value" : "报告包含:" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 伺服器可能無法連線,或正在執行不同的通訊協定。" + "value" : "報告包含:" } } } }, - "The SSH tunnel connected but could not forward to the database port." : { + "The sample database is missing from the app." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 터널에 연결했지만 데이터베이스 포트로 전달할 수 없습니다." + "value" : "앱에 샘플 데이터베이스가 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Đường hầm SSH đã kết nối nhưng không thể chuyển tiếp đến cổng cơ sở dữ liệu." + "value" : "Ứng dụng thiếu cơ sở dữ liệu mẫu." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "SSH隧道已连接但无法转发到数据库端口。" + "value" : "应用中缺少示例数据库。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "SSH 隧道已連線,但無法轉送至資料庫連接埠。" + "value" : "App 中缺少範例資料庫。" } } } }, - "The app and iOS versions, and your language" : { - - }, - "The certificate could not be saved to this device's keychain." : { + "The server is not responding. Check the host and port." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "인증서를 이 기기의 키체인에 저장할 수 없습니다." + "value" : "서버가 응답하지 않습니다. 호스트와 포트를 확인하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không thể lưu chứng chỉ vào keychain của thiết bị này." + "value" : "Máy chủ không phản hồi. Kiểm tra máy chủ và cổng." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无法将证书保存到本设备的钥匙串。" + "value" : "服务器无响应。请检查主机和端口。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "無法將憑證儲存到本裝置的鑰匙圈。" + "value" : "伺服器沒有回應。請檢查主機與連接埠。" } } } }, - "The certificate file could not be read. Check the password and that the file is a PKCS#12 certificate." : { + "The server sent an unexpected message and the connection was reset. Run the query again." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "인증서 파일을 읽을 수 없습니다. 암호가 맞는지, 파일이 PKCS#12 인증서인지 확인하십시오." + "value" : "서버에서 예상하지 못한 메시지를 보내 연결을 재설정했습니다. 쿼리를 다시 실행하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không thể đọc tệp chứng chỉ. Hãy kiểm tra mật khẩu và xác nhận tệp là chứng chỉ PKCS#12." + "value" : "Máy chủ đã gửi một thông điệp không mong đợi và kết nối đã bị đặt lại. Hãy chạy lại truy vấn." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无法读取证书文件。请检查密码,并确认该文件是 PKCS#12 证书。" + "value" : "服务器发送了意外消息,连接已重置。请重新运行该查询。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "無法讀取憑證檔案。請檢查密碼,並確認該檔案是 PKCS#12 憑證。" + "value" : "伺服器傳送了非預期的訊息,連線已重設。請重新執行該查詢。" } } } }, - "The client certificate for this connection is missing. Import it again in the connection's SSL settings." : { + "The server's host key has changed." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 연결의 클라이언트 인증서가 없습니다. 연결의 SSL 설정에서 다시 가져오십시오." + "value" : "서버의 호스트 키가 변경되었습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thiếu chứng chỉ máy khách cho kết nối này. Hãy nhập lại trong cài đặt SSL của kết nối." + "value" : "Khóa máy chủ của server đã thay đổi." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此连接的客户端证书缺失。请在连接的 SSL 设置中重新导入。" + "value" : "服务器的主机密钥已更改。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此連線的用戶端憑證遺失。請在連線的 SSL 設定中重新匯入。" + "value" : "伺服器的主機金鑰已變更。" } } } }, - "The client key for this connection is missing. Import it again in the connection's SSL settings." : { + "The server's host key was not trusted." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 연결의 클라이언트 키가 없습니다. 연결의 SSL 설정에서 다시 가져오십시오." + "value" : "서버의 호스트 키를 신뢰하지 않았습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thiếu khóa máy khách cho kết nối này. Hãy nhập lại trong cài đặt SSL của kết nối." + "value" : "Khóa máy chủ của server không được tin cậy." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此连接的客户端密钥缺失。请在连接的 SSL 设置中重新导入。" + "value" : "服务器的主机密钥未被信任。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此連線的用戶端金鑰遺失。請在連線的 SSL 設定中重新匯入。" + "value" : "伺服器的主機金鑰未被信任。" } } } }, - "The connection attempt was cancelled." : { - - }, - "The data could not be read: %@" : { + "The table \"%@\" and all its data will be permanently deleted." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "데이터를 읽을 수 없습니다: %@" + "value" : "\"%@\" 테이블과 모든 데이터가 영구적으로 삭제됩니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không thể đọc dữ liệu: %@" + "value" : "Bảng \"%@\" và toàn bộ dữ liệu của nó sẽ bị xóa vĩnh viễn." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "无法读取数据:%@" + "value" : "表\"%@\"及其所有数据将被永久删除。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "無法讀取資料:%@" + "value" : "資料表「%@」及其所有資料將被永久刪除。" } } } }, - "The data has no values to insert into %@." : { + "The table or column does not exist." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "%@에 삽입할 값이 입력 데이터에 없습니다." + "value" : "테이블 또는 열이 존재하지 않습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Dữ liệu không có giá trị nào để chèn vào %@." + "value" : "Bảng hoặc cột không tồn tại." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "该数据没有可插入 %@ 的值。" + "value" : "表或列不存在。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "該資料沒有可插入 %@ 的值。" + "value" : "資料表或欄位不存在。" } } } }, - "The database limited the result. Showing %d rows." : { + "The text encoding is invalid." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "데이터베이스에서 결과를 제한했습니다. %d개 행을 표시합니다." + "value" : "텍스트 인코딩이 올바르지 않습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cơ sở dữ liệu đã giới hạn kết quả. Đang hiển thị %d dòng." + "value" : "Bảng mã văn bản không hợp lệ." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "数据库限制了结果。正在显示 %d 行。" + "value" : "文本编码无效。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "資料庫限制了結果。正在顯示 %d 列。" + "value" : "文字編碼無效。" } } } }, - "The encrypted file is corrupt or incomplete" : { + "This Oracle server is older than release 11.1, which the database driver does not support." : { "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "암호화된 파일이 손상되었거나 불완전합니다" + "value" : "이 Oracle 서버는 릴리스 11.1보다 이전 버전이며 데이터베이스 드라이버에서 지원하지 않습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tệp mã hóa bị hỏng hoặc không đầy đủ" + "value" : "Máy chủ Oracle này cũ hơn bản 11.1, phiên bản mà driver cơ sở dữ liệu không hỗ trợ." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "加密文件已损坏或不完整" + "value" : "此 Oracle 服务器早于 11.1 版,数据库驱动不支持。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "加密的檔案已損毀或不完整" + "value" : "此 Oracle 伺服器早於 11.1 版,資料庫驅動程式不支援。" } } } }, - "The file is not UTF-8 text." : { + "This account uses a password verifier the database driver does not support." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "파일이 UTF-8 텍스트가 아닙니다." + "value" : "이 계정은 데이터베이스 드라이버가 지원하지 않는 암호 검증 형식을 사용합니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tệp không phải văn bản UTF-8." + "value" : "Tài khoản này dùng password verifier mà driver cơ sở dữ liệu không hỗ trợ." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "该文件不是 UTF-8 文本。" + "value" : "此账户使用了数据库驱动不支持的口令校验器。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "該檔案不是 UTF-8 文字。" + "value" : "此帳戶使用了資料庫驅動程式不支援的密碼驗證器。" } } } }, - "The host key for %@ has changed.\n\nThis can mean the server was rebuilt, or that someone is intercepting the connection.\n\nPrevious fingerprint:\n%@\n\nCurrent fingerprint:\n%@" : { + "This certificate file needs a password. Certificate files exported without one cannot be read on iOS." : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "The host key for %1$@ has changed.\n\nThis can mean the server was rebuilt, or that someone is intercepting the connection.\n\nPrevious fingerprint:\n%2$@\n\nCurrent fingerprint:\n%3$@" - } - }, "ko" : { "stringUnit" : { "state" : "translated", - "value" : "%1$@의 호스트 키가 변경되었습니다.\n\n서버가 다시 구축되었거나 누군가 연결을 가로채고 있을 수 있습니다.\n\n이전 지문:\n%2$@\n\n현재 지문:\n%3$@" + "value" : "이 인증서 파일에는 암호가 필요합니다. 암호 없이 내보낸 인증서 파일은 iOS에서 읽을 수 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Khóa máy chủ của %1$@ đã thay đổi.\n\nĐiều này có thể nghĩa là máy chủ được dựng lại, hoặc có ai đó đang chặn kết nối.\n\nVân tay trước đây:\n%2$@\n\nVân tay hiện tại:\n%3$@" + "value" : "Tệp chứng chỉ này cần mật khẩu. Tệp chứng chỉ xuất ra mà không có mật khẩu thì không đọc được trên iOS." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "%1$@ 的主机密钥已更改。\n\n这可能意味着服务器被重建,也可能有人正在拦截此连接。\n\n之前的指纹:\n%2$@\n\n当前的指纹:\n%3$@" + "value" : "此证书文件需要密码。导出时未设置密码的证书文件在 iOS 上无法读取。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "%1$@ 的主機金鑰已變更。\n\n這可能表示伺服器被重建,也可能有人正在攔截此連線。\n\n之前的指紋:\n%2$@\n\n目前的指紋:\n%3$@" + "value" : "此憑證檔案需要密碼。匯出時未設定密碼的憑證檔案在 iOS 上無法讀取。" } } } }, - "The license text is missing from this build." : { - - }, - "The list of open source libraries is missing from this build." : { - - }, - "The listener does not know the requested SID" : { - "extractionState" : "stale", + "This certificate uses a private key type TablePro cannot read." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "리스너가 요청한 SID를 인식하지 못합니다" + "value" : "이 인증서에는 TablePro에서 읽을 수 없는 유형의 개인 키가 사용되었습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Listener không biết SID được yêu cầu" + "value" : "Chứng chỉ này dùng loại khóa riêng tư mà TablePro không đọc được." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "侦听器不认识请求的 SID" + "value" : "此证书使用了 TablePro 无法读取的私钥类型。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "接聽程式不認識請求的 SID" + "value" : "此憑證使用了 TablePro 無法讀取的私密金鑰類型。" } } } }, - "The listener does not know the requested service name" : { - "extractionState" : "stale", + "This column is generated, so it is never written." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "리스너가 요청한 서비스 이름을 인식하지 못합니다" + "value" : "이 열은 생성 열이므로 값이 기록되지 않습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Listener không biết tên dịch vụ được yêu cầu" + "value" : "Đây là cột tự sinh nên không bao giờ được ghi giá trị." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "侦听器不认识请求的服务名" + "value" : "此列是生成列,因此永远不会被写入。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "接聽程式不認識請求的服務名稱" + "value" : "此欄位是產生欄位,因此永遠不會寫入。" } } } }, - "The listener does not know this SID. Databases from 12c onward are usually reached by service name instead." : { + "This connection has a client certificate but no private key. Import both." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "리스너에서 이 SID를 인식하지 못합니다. 12c 이상 데이터베이스는 일반적으로 서비스 이름으로 연결합니다." + "value" : "이 연결에 클라이언트 인증서는 있지만 개인 키가 없습니다. 둘 다 가져오십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Listener không biết SID này. Các cơ sở dữ liệu từ 12c trở đi thường được truy cập bằng tên dịch vụ." + "value" : "Kết nối này có chứng chỉ máy khách nhưng không có khóa riêng tư. Hãy nhập cả hai." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "侦听器不认识此 SID。12c 及以后的数据库通常改用服务名连接。" + "value" : "此连接有客户端证书但没有私钥。请同时导入两者。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "接聽程式不認識此 SID。12c 及以後的資料庫通常改用服務名稱連線。" + "value" : "此連線有用戶端憑證但沒有私密金鑰。請同時匯入兩者。" } } } }, - "The listener does not know this service name. Check it with your DBA, or switch to SID if this is an older database." : { + "This connection has a client key but no certificate. Import both." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "리스너에서 이 서비스 이름을 인식하지 못합니다. DBA에게 확인하거나 이전 버전 데이터베이스인 경우 SID로 전환하십시오." + "value" : "이 연결에 클라이언트 키는 있지만 인증서가 없습니다. 둘 다 가져오십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Listener không biết tên dịch vụ này. Hãy hỏi DBA của bạn, hoặc chuyển sang SID nếu đây là cơ sở dữ liệu cũ." + "value" : "Kết nối này có khóa máy khách nhưng không có chứng chỉ. Hãy nhập cả hai." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "侦听器不认识此服务名。请与你的 DBA 确认,或在较旧的数据库上改用 SID。" + "value" : "此连接有客户端密钥但没有证书。请同时导入两者。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "接聽程式不認識此服務名稱。請與你的 DBA 確認,或在較舊的資料庫上改用 SID。" + "value" : "此連線有用戶端金鑰但沒有憑證。請同時匯入兩者。" } } } }, - "The listener has no handler available for the requested service" : { - "extractionState" : "stale", + "This connection is in read-only mode. Write queries are not allowed." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "리스너에 요청한 서비스를 처리할 수 있는 핸들러가 없습니다" + "value" : "이 연결은 읽기 전용 모드입니다. 쓰기 쿼리는 허용되지 않습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Listener không có handler khả dụng cho dịch vụ được yêu cầu" + "value" : "Kết nối này ở chế độ chỉ đọc. Không cho phép truy vấn ghi." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "侦听器没有可用于所请求服务的处理程序" + "value" : "此连接为只读模式,不允许写入查询。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "接聽程式沒有可用於所請求服務的處理常式" + "value" : "此連線為唯讀模式,不允許寫入查詢。" } } } }, - "The listener is blocking new connections to the requested service" : { - "extractionState" : "stale", + "This connection no longer exists. It may have been removed from another device." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "리스너가 요청한 서비스에 대한 새 연결을 차단하고 있습니다" + "value" : "이 연결은 더 이상 존재하지 않습니다. 다른 기기에서 제거되었을 수 있습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Listener đang chặn các kết nối mới tới dịch vụ được yêu cầu" + "value" : "Kết nối này không còn tồn tại. Có thể đã bị xóa từ thiết bị khác." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "侦听器正在阻止到所请求服务的新连接" + "value" : "此连接已不存在。它可能已在其他设备上被移除。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "接聽程式正在阻擋到所請求服務的新連線" + "value" : "此連線已不存在,可能已從其他裝置移除。" } } } }, - "The operation violates a database constraint." : { + "This connection's CA certificate is not readable on this device (%@). Certificate files do not sync between devices, so add the certificate here or lower the SSL mode to Required." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "작업이 데이터베이스 제약 조건을 위반합니다." + "value" : "이 기기에서 이 연결의 CA 인증서를 읽을 수 없습니다(%@). 인증서 파일은 기기 간에 동기화되지 않으므로 이 기기에 인증서를 추가하거나 SSL 모드를 필수(Required)로 낮추십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thao tác vi phạm ràng buộc cơ sở dữ liệu." + "value" : "Không đọc được chứng chỉ CA của kết nối này trên thiết bị này (%@). Tệp chứng chỉ không đồng bộ giữa các thiết bị, nên hãy thêm chứng chỉ tại đây hoặc hạ chế độ SSL xuống Required." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "操作违反了数据库约束。" + "value" : "此连接的 CA 证书在本设备上不可读(%@)。证书文件不会在设备之间同步,请在此处添加证书,或将 SSL 模式降为“必需”。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此操作違反了資料庫限制條件。" + "value" : "此連線的 CA 憑證在本裝置上無法讀取(%@)。憑證檔案不會在裝置之間同步,請在此處加入憑證,或將 SSL 模式降為「必要」。" } } } }, - "The query did not finish within the configured timeout, so the connection was reset. Run the query again." : { + "This connection's client certificate is not readable on this device (%@). Certificate files do not sync between devices, so add the certificate here before connecting." : { "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "쿼리가 설정된 제한 시간 내에 완료되지 않아 연결을 재설정했습니다. 쿼리를 다시 실행하십시오." + "value" : "이 기기에서 이 연결의 클라이언트 인증서를 읽을 수 없습니다(%@). 인증서 파일은 기기 간에 동기화되지 않으므로 연결하기 전에 이 기기에 인증서를 추가하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Truy vấn không hoàn tất trong thời gian chờ đã cấu hình, nên kết nối đã bị đặt lại. Hãy chạy lại truy vấn." + "value" : "Không đọc được chứng chỉ máy khách của kết nối này trên thiết bị này (%@). Tệp chứng chỉ không đồng bộ giữa các thiết bị, nên hãy thêm chứng chỉ tại đây trước khi kết nối." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "查询未在配置的超时时间内完成,因此连接已重置。请重新运行该查询。" + "value" : "此连接的客户端证书在本设备上不可读(%@)。证书文件不会在设备之间同步,请先在此处添加证书再连接。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "查詢未在設定的逾時時間內完成,因此連線已重設。請重新執行該查詢。" + "value" : "此連線的用戶端憑證在本裝置上無法讀取(%@)。憑證檔案不會在裝置之間同步,請先在此處加入憑證再連線。" } } } }, - "The query returned no rows." : { + "This connection's client key is not readable on this device (%@). Key files do not sync between devices, so add the key here before connecting." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "쿼리에서 반환된 행이 없습니다." + "value" : "이 기기에서 이 연결의 클라이언트 키를 읽을 수 없습니다(%@). 키 파일은 기기 간에 동기화되지 않으므로 연결하기 전에 이 기기에 키를 추가하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Truy vấn không trả về hàng nào." + "value" : "Không đọc được khóa máy khách của kết nối này trên thiết bị này (%@). Tệp khóa không đồng bộ giữa các thiết bị, nên hãy thêm khóa tại đây trước khi kết nối." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "查询未返回任何行。" + "value" : "此连接的客户端密钥在本设备上不可读(%@)。密钥文件不会在设备之间同步,请先在此处添加密钥再连接。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "查詢未傳回任何列。" - } - } - } - }, - "The report contains:" : { - - }, - "The sample database is missing from the app." : { - + "value" : "此連線的用戶端金鑰在本裝置上無法讀取(%@)。金鑰檔案不會在裝置之間同步,請先在此處加入金鑰再連線。" + } + } + } }, - "The server is not responding. Check the host and port." : { + "This database has no tables." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "서버가 응답하지 않습니다. 호스트와 포트를 확인하십시오." + "value" : "이 데이터베이스에는 테이블이 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Máy chủ không phản hồi. Kiểm tra máy chủ và cổng." + "value" : "Cơ sở dữ liệu này không có bảng." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "服务器无响应。请检查主机和端口。" + "value" : "此数据库没有表。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "伺服器沒有回應。請檢查主機與連接埠。" + "value" : "此資料庫沒有資料表。" } } } }, - "The server sent an unexpected message and the connection was reset. Run the query again." : { - "extractionState" : "stale", + "This file has no private key. Export the certificate together with its key." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "서버에서 예상하지 못한 메시지를 보내 연결을 재설정했습니다. 쿼리를 다시 실행하십시오." + "value" : "이 파일에 개인 키가 없습니다. 인증서를 개인 키와 함께 내보내십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Máy chủ đã gửi một thông điệp không mong đợi và kết nối đã bị đặt lại. Hãy chạy lại truy vấn." + "value" : "Tệp này không có khóa riêng tư. Hãy xuất chứng chỉ cùng với khóa của nó." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "服务器发送了意外消息,连接已重置。请重新运行该查询。" + "value" : "此文件没有私钥。请将证书与其密钥一起导出。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "伺服器傳送了非預期的訊息,連線已重設。請重新執行該查詢。" + "value" : "此檔案沒有私密金鑰。請將憑證與其金鑰一起匯出。" } } } }, - "The server's host key has changed." : { + "This file is encrypted" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "서버의 호스트 키가 변경되었습니다." + "value" : "이 파일은 암호화되어 있습니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Khóa máy chủ của server đã thay đổi." + "value" : "Tệp này được mã hóa" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "服务器的主机密钥已更改。" + "value" : "此文件已加密" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "伺服器的主機金鑰已變更。" + "value" : "此檔案已加密" } } } }, - "The server's host key was not trusted." : { + "This file is encrypted and requires a passphrase" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "서버의 호스트 키를 신뢰하지 않았습니다." + "value" : "이 파일은 암호화되어 있어 암호가 필요합니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Khóa máy chủ của server không được tin cậy." + "value" : "Tệp này được mã hóa và yêu cầu cụm mật khẩu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "服务器的主机密钥未被信任。" + "value" : "此文件已加密,需要密码短语" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "伺服器的主機金鑰未被信任。" + "value" : "此檔案已加密,需要通關密語" } } } }, - "The table \"%@\" and all its data will be permanently deleted." : { + "This file is not a valid TablePro export" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "\"%@\" 테이블과 모든 데이터가 영구적으로 삭제됩니다." + "value" : "이 파일은 올바른 TablePro 내보내기 파일이 아닙니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bảng \"%@\" và toàn bộ dữ liệu của nó sẽ bị xóa vĩnh viễn." + "value" : "Tệp này không phải là tệp xuất TablePro hợp lệ" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "表\"%@\"及其所有数据将被永久删除。" + "value" : "此文件不是有效的 TablePro 导出文件" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "資料表「%@」及其所有資料將被永久刪除。" + "value" : "此檔案不是有效的 TablePro 匯出檔" } } } }, - "The table or column does not exist." : { + "This file requires a newer version of TablePro (format version %d)" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "테이블 또는 열이 존재하지 않습니다." + "value" : "이 파일을 사용하려면 더 최신 버전의 TablePro가 필요합니다(파일 형식 버전 %d)" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bảng hoặc cột không tồn tại." + "value" : "Tệp này yêu cầu phiên bản TablePro mới hơn (phiên bản định dạng %d)" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "表或列不存在。" + "value" : "此文件需要更新版本的TablePro(格式版本%d)" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "資料表或欄位不存在。" + "value" : "此檔案需要較新版本的 TablePro(格式版本 %d)" } } } }, - "The text encoding is invalid." : { + "This query will modify data. Are you sure you want to continue?" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "텍스트 인코딩이 올바르지 않습니다." + "value" : "이 쿼리는 데이터를 변경합니다. 계속하시겠습니까?" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bảng mã văn bản không hợp lệ." + "value" : "Truy vấn này sẽ thay đổi dữ liệu. Bạn có chắc muốn tiếp tục?" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "文本编码无效。" + "value" : "此查询将修改数据,确定要继续吗?" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "文字編碼無效。" + "value" : "此查詢將會修改資料。確定要繼續嗎?" } } } }, - "This Oracle server is older than release 11.1, which the database driver does not support." : { - "extractionState" : "stale", + "This server has no password set for the default user. Clear the Password field." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 Oracle 서버는 릴리스 11.1보다 이전 버전이며 데이터베이스 드라이버에서 지원하지 않습니다." + "value" : "이 서버의 기본 사용자에게는 암호가 설정되어 있지 않습니다. 암호 필드를 비우십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Máy chủ Oracle này cũ hơn bản 11.1, phiên bản mà driver cơ sở dữ liệu không hỗ trợ." + "value" : "Máy chủ này không đặt mật khẩu cho người dùng mặc định. Hãy xóa trống trường Mật khẩu." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此 Oracle 服务器早于 11.1 版,数据库驱动不支持。" + "value" : "此服务器未为默认用户设置密码。请清空“密码”字段。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此 Oracle 伺服器早於 11.1 版,資料庫驅動程式不支援。" + "value" : "此伺服器未為預設使用者設定密碼。請清空「密碼」欄位。" } } } }, - "This account uses a password verifier the database driver does not support." : { - "extractionState" : "stale", + "This server predates Redis 6 and takes no username. Clear the Username field." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 계정은 데이터베이스 드라이버가 지원하지 않는 암호 검증 형식을 사용합니다." + "value" : "이 서버는 Redis 6 이전 버전이므로 사용자 이름을 사용하지 않습니다. 사용자 이름 필드를 비우십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tài khoản này dùng password verifier mà driver cơ sở dữ liệu không hỗ trợ." + "value" : "Máy chủ này cũ hơn Redis 6 và không nhận tên người dùng. Hãy xóa trống trường Tên người dùng." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此账户使用了数据库驱动不支持的口令校验器。" + "value" : "此服务器早于 Redis 6,不接受用户名。请清空“用户名”字段。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此帳戶使用了資料庫驅動程式不支援的密碼驗證器。" + "value" : "此伺服器早於 Redis 6,不接受使用者名稱。請清空「使用者名稱」欄位。" } } } }, - "This certificate file needs a password. Certificate files exported without one cannot be read on iOS." : { + "This server requires authentication." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 인증서 파일에는 암호가 필요합니다. 암호 없이 내보낸 인증서 파일은 iOS에서 읽을 수 없습니다." + "value" : "이 서버는 인증이 필요합니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tệp chứng chỉ này cần mật khẩu. Tệp chứng chỉ xuất ra mà không có mật khẩu thì không đọc được trên iOS." + "value" : "Máy chủ này yêu cầu xác thực." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此证书文件需要密码。导出时未设置密码的证书文件在 iOS 上无法读取。" + "value" : "此服务器需要认证。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此憑證檔案需要密碼。匯出時未設定密碼的憑證檔案在 iOS 上無法讀取。" + "value" : "此伺服器需要驗證。" } } } }, - "This certificate uses a private key type TablePro cannot read." : { + "This table has no foreign key relationships." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 인증서에는 TablePro에서 읽을 수 없는 유형의 개인 키가 사용되었습니다." + "value" : "이 테이블에는 외래 키 관계가 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chứng chỉ này dùng loại khóa riêng tư mà TablePro không đọc được." + "value" : "Bảng này không có quan hệ khóa ngoại." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此证书使用了 TablePro 无法读取的私钥类型。" + "value" : "此表没有外键关系。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此憑證使用了 TablePro 無法讀取的私密金鑰類型。" + "value" : "此資料表沒有外鍵關聯。" } } } }, - "This column is generated, so it is never written." : { - - }, - "This connection has a client certificate but no private key. Import both." : { + "This table has no indexes." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 연결에 클라이언트 인증서는 있지만 개인 키가 없습니다. 둘 다 가져오십시오." + "value" : "이 테이블에는 인덱스가 없습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Kết nối này có chứng chỉ máy khách nhưng không có khóa riêng tư. Hãy nhập cả hai." + "value" : "Bảng này không có chỉ mục." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此连接有客户端证书但没有私钥。请同时导入两者。" + "value" : "此表没有索引。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此連線有用戶端憑證但沒有私密金鑰。請同時匯入兩者。" + "value" : "此資料表沒有索引。" } } } }, - "This connection has a client key but no certificate. Import both." : { + "This table is empty." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 연결에 클라이언트 키는 있지만 인증서가 없습니다. 둘 다 가져오십시오." + "value" : "이 테이블은 비어 있습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Kết nối này có khóa máy khách nhưng không có chứng chỉ. Hãy nhập cả hai." + "value" : "Bảng này trống." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此连接有客户端密钥但没有证书。请同时导入两者。" + "value" : "此表为空。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此連線有用戶端金鑰但沒有憑證。請同時匯入兩者。" + "value" : "此資料表是空的。" } } } }, - "This connection is in read-only mode. Write queries are not allowed." : { + "This table needs a primary key to identify the row." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 연결은 읽기 전용 모드입니다. 쓰기 쿼리는 허용되지 않습니다." + "value" : "행을 식별하려면 이 테이블에 기본 키가 있어야 합니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Kết nối này ở chế độ chỉ đọc. Không cho phép truy vấn ghi." + "value" : "Bảng này cần khóa chính để xác định dòng." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此连接为只读模式,不允许写入查询。" + "value" : "此表需要主键来标识行。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此連線為唯讀模式,不允許寫入查詢。" + "value" : "此資料表需要主鍵來識別該列。" } } } }, - "This connection no longer exists. It may have been removed from another device." : { + "This will insert a row into %@. Continue?" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 연결은 더 이상 존재하지 않습니다. 다른 기기에서 제거되었을 수 있습니다." + "value" : "%@에 행을 삽입합니다. 계속하시겠습니까?" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Kết nối này không còn tồn tại. Có thể đã bị xóa từ thiết bị khác." + "value" : "Thao tác này sẽ chèn một dòng vào %@. Tiếp tục?" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此连接已不存在。它可能已在其他设备上被移除。" + "value" : "这将向 %@ 插入一行。是否继续?" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此連線已不存在,可能已從其他裝置移除。" + "value" : "這將向 %@ 插入一列。是否繼續?" } } } }, - "This connection's CA certificate is not readable on this device (%@). Certificate files do not sync between devices, so add the certificate here or lower the SSL mode to Required." : { - "extractionState" : "stale", + "This will update a row in %@. Continue?" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 기기에서 이 연결의 CA 인증서를 읽을 수 없습니다(%@). 인증서 파일은 기기 간에 동기화되지 않으므로 이 기기에 인증서를 추가하거나 SSL 모드를 필수(Required)로 낮추십시오." + "value" : "%@의 행을 업데이트합니다. 계속하시겠습니까?" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không đọc được chứng chỉ CA của kết nối này trên thiết bị này (%@). Tệp chứng chỉ không đồng bộ giữa các thiết bị, nên hãy thêm chứng chỉ tại đây hoặc hạ chế độ SSL xuống Required." + "value" : "Thao tác này sẽ cập nhật một dòng trong %@. Tiếp tục?" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此连接的 CA 证书在本设备上不可读(%@)。证书文件不会在设备之间同步,请在此处添加证书,或将 SSL 模式降为“必需”。" + "value" : "这将更新 %@ 中的一行。是否继续?" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此連線的 CA 憑證在本裝置上無法讀取(%@)。憑證檔案不會在裝置之間同步,請在此處加入憑證,或將 SSL 模式降為「必要」。" + "value" : "這將更新 %@ 中的一列。是否繼續?" } } } }, - "This connection's client certificate is not readable on this device (%@). Certificate files do not sync between devices, so add the certificate here before connecting." : { + "Timed out completing Kerberos authentication. The Kerberos KDC (domain controller) may be unreachable, the server's SPN may be missing, or this device's clock may be off. Check your network to the domain, or use SQL Server Authentication." : { "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 기기에서 이 연결의 클라이언트 인증서를 읽을 수 없습니다(%@). 인증서 파일은 기기 간에 동기화되지 않으므로 연결하기 전에 이 기기에 인증서를 추가하십시오." + "value" : "Kerberos 인증을 완료하는 동안 시간이 초과되었습니다. Kerberos KDC(도메인 컨트롤러)에 연결할 수 없거나, 서버의 SPN이 없거나, 이 기기의 시계가 맞지 않을 수 있습니다. 도메인에 대한 네트워크 연결을 확인하거나 SQL Server 인증을 사용하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không đọc được chứng chỉ máy khách của kết nối này trên thiết bị này (%@). Tệp chứng chỉ không đồng bộ giữa các thiết bị, nên hãy thêm chứng chỉ tại đây trước khi kết nối." + "value" : "Hết thời gian chờ khi hoàn tất xác thực Kerberos. Có thể KDC Kerberos (domain controller) không truy cập được, SPN của máy chủ bị thiếu, hoặc đồng hồ của thiết bị này bị lệch. Hãy kiểm tra mạng tới domain, hoặc dùng SQL Server Authentication." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此连接的客户端证书在本设备上不可读(%@)。证书文件不会在设备之间同步,请先在此处添加证书再连接。" + "value" : "完成 Kerberos 认证超时。可能是 Kerberos KDC(域控制器)无法访问、服务器的 SPN 缺失,或本设备的时钟不准。请检查到域的网络,或改用 SQL Server 身份验证。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此連線的用戶端憑證在本裝置上無法讀取(%@)。憑證檔案不會在裝置之間同步,請先在此處加入憑證再連線。" + "value" : "完成 Kerberos 驗證逾時。可能是 Kerberos KDC(網域控制站)無法連線、伺服器的 SPN 遺失,或本裝置的時鐘不準。請檢查到網域的網路,或改用 SQL Server 驗證。" } } } }, - "This connection's client key is not readable on this device (%@). Key files do not sync between devices, so add the key here before connecting." : { - "extractionState" : "stale", + "Timed out connecting to the MySQL server." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 기기에서 이 연결의 클라이언트 키를 읽을 수 없습니다(%@). 키 파일은 기기 간에 동기화되지 않으므로 연결하기 전에 이 기기에 키를 추가하십시오." + "value" : "MySQL 서버에 연결하는 동안 시간이 초과되었습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Không đọc được khóa máy khách của kết nối này trên thiết bị này (%@). Tệp khóa không đồng bộ giữa các thiết bị, nên hãy thêm khóa tại đây trước khi kết nối." + "value" : "Hết thời gian chờ khi kết nối tới máy chủ MySQL." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此连接的客户端密钥在本设备上不可读(%@)。密钥文件不会在设备之间同步,请先在此处添加密钥再连接。" + "value" : "连接 MySQL 服务器超时。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此連線的用戶端金鑰在本裝置上無法讀取(%@)。金鑰檔案不會在裝置之間同步,請先在此處加入金鑰再連線。" + "value" : "連線 MySQL 伺服器逾時。" } } } }, - "This database has no tables." : { + "Timed out connecting to the server. Check the host, port, and that the server is reachable and accepting connections." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 데이터베이스에는 테이블이 없습니다." + "value" : "서버에 연결하는 동안 시간이 초과되었습니다. 호스트와 포트가 올바른지, 서버에 연결할 수 있고 서버가 연결을 수락하는지 확인하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Cơ sở dữ liệu này không có bảng." + "value" : "Hết thời gian chờ khi kết nối tới máy chủ. Hãy kiểm tra host, cổng, và xem máy chủ có truy cập được và đang nhận kết nối không." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此数据库没有表。" + "value" : "连接服务器超时。请检查主机、端口,以及服务器是否可达并接受连接。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此資料庫沒有資料表。" + "value" : "連線伺服器逾時。請檢查主機、連接埠,以及伺服器是否可連線並接受連線。" } } } }, - "This file has no private key. Export the certificate together with its key." : { + "Timed out during the Oracle login handshake. The server accepted the network connection but did not finish logging in." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 파일에 개인 키가 없습니다. 인증서를 개인 키와 함께 내보내십시오." + "value" : "Oracle 로그인 핸드셰이크 중 시간이 초과되었습니다. 서버가 네트워크 연결을 수락했지만 로그인을 완료하지 않았습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tệp này không có khóa riêng tư. Hãy xuất chứng chỉ cùng với khóa của nó." + "value" : "Hết thời gian chờ trong quá trình bắt tay đăng nhập Oracle. Máy chủ đã chấp nhận kết nối mạng nhưng không hoàn tất đăng nhập." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此文件没有私钥。请将证书与其密钥一起导出。" + "value" : "Oracle 登录握手超时。服务器接受了网络连接,但没有完成登录。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此檔案沒有私密金鑰。請將憑證與其金鑰一起匯出。" + "value" : "Oracle 登入交握逾時。伺服器接受了網路連線,但沒有完成登入。" } } } }, - "This file is encrypted" : { + "Too many rows. Add up to %lld rows at a time." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 파일은 암호화되어 있습니다" + "value" : "행이 너무 많습니다. 한 번에 최대 %lld개까지 추가하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tệp này được mã hóa" + "value" : "Quá nhiều dòng. Mỗi lần chỉ thêm tối đa %lld dòng." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此文件已加密" + "value" : "行数过多。每次最多添加 %lld 行。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此檔案已加密" + "value" : "列數過多。每次最多新增 %lld 列。" } } } }, - "This file is encrypted and requires a passphrase" : { - "extractionState" : "stale", + "Touch and hold a connection to rename, duplicate, or move it to a group." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 파일은 암호화되어 있어 암호가 필요합니다" + "value" : "연결을 길게 터치하여 이름을 변경하거나, 복제하거나, 그룹으로 이동하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tệp này được mã hóa và yêu cầu cụm mật khẩu" + "value" : "Chạm và giữ một kết nối để đổi tên, nhân đôi hoặc di chuyển vào một nhóm." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此文件已加密,需要密码短语" + "value" : "触碰并按住连接,即可将其重命名、复制或移动到分组。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此檔案已加密,需要通關密語" + "value" : "按住連線即可重新命名、複製,或將其移至群組。" } } } }, - "This file is not a valid TablePro export" : { - "extractionState" : "stale", + "Truncate" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 파일은 올바른 TablePro 내보내기 파일이 아닙니다" + "value" : "비우기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tệp này không phải là tệp xuất TablePro hợp lệ" + "value" : "Xóa dữ liệu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此文件不是有效的 TablePro 导出文件" + "value" : "清空" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此檔案不是有效的 TablePro 匯出檔" + "value" : "清空" } } } }, - "This file requires a newer version of TablePro (format version %d)" : { - "extractionState" : "stale", + "Truncate Table" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 파일을 사용하려면 더 최신 버전의 TablePro가 필요합니다(파일 형식 버전 %d)" + "value" : "테이블 비우기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tệp này yêu cầu phiên bản TablePro mới hơn (phiên bản định dạng %d)" + "value" : "Xóa dữ liệu bảng" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此文件需要更新版本的TablePro(格式版本%d)" + "value" : "清空表" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此檔案需要較新版本的 TablePro(格式版本 %d)" + "value" : "清空資料表" } } } }, - "This query will modify data. Are you sure you want to continue?" : { + "Trust" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 쿼리는 데이터를 변경합니다. 계속하시겠습니까?" + "value" : "신뢰" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Truy vấn này sẽ thay đổi dữ liệu. Bạn có chắc muốn tiếp tục?" + "value" : "Tin cậy" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此查询将修改数据,确定要继续吗?" + "value" : "信任" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此查詢將會修改資料。確定要繼續嗎?" + "value" : "信任" } } } }, - "This server has no password set for the default user. Clear the Password field." : { + "Try Again" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 서버의 기본 사용자에게는 암호가 설정되어 있지 않습니다. 암호 필드를 비우십시오." + "value" : "다시 시도" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Máy chủ này không đặt mật khẩu cho người dùng mặc định. Hãy xóa trống trường Mật khẩu." + "value" : "Thử lại" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此服务器未为默认用户设置密码。请清空“密码”字段。" + "value" : "重试" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此伺服器未為預設使用者設定密碼。請清空「密碼」欄位。" + "value" : "再試一次" } } } }, - "This server predates Redis 6 and takes no username. Clear the Username field." : { + "Try again or check your connection." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 서버는 Redis 6 이전 버전이므로 사용자 이름을 사용하지 않습니다. 사용자 이름 필드를 비우십시오." + "value" : "다시 시도하거나 연결을 확인하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Máy chủ này cũ hơn Redis 6 và không nhận tên người dùng. Hãy xóa trống trường Tên người dùng." + "value" : "Thử lại hoặc kiểm tra kết nối." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此服务器早于 Redis 6,不接受用户名。请清空“用户名”字段。" + "value" : "请重试或检查你的连接。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此伺服器早於 Redis 6,不接受使用者名稱。請清空「使用者名稱」欄位。" + "value" : "請再試一次或檢查你的連線。" } } } }, - "This server requires authentication." : { - - }, - "This table has no foreign key relationships." : { + "Turn On iCloud Sync" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 테이블에는 외래 키 관계가 없습니다." + "value" : "iCloud 동기화 켜기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bảng này không có quan hệ khóa ngoại." + "value" : "Bật Đồng bộ iCloud" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此表没有外键关系。" + "value" : "开启 iCloud 同步" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此資料表沒有外鍵關聯。" + "value" : "開啟 iCloud 同步" } } } }, - "This table has no indexes." : { + "Type" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 테이블에는 인덱스가 없습니다." + "value" : "유형" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bảng này không có chỉ mục." + "value" : "Loại" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此表没有索引。" + "value" : "类型" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此資料表沒有索引。" + "value" : "型別" } } } }, - "This table is empty." : { + "Type a tag's name in the search field to show only the connections that carry it." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 테이블은 비어 있습니다." + "value" : "검색 필드에 태그 이름을 입력하면 해당 태그가 지정된 연결만 표시됩니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bảng này trống." + "value" : "Nhập tên nhãn vào trường tìm kiếm để chỉ hiện các kết nối có nhãn đó." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此表为空。" + "value" : "在搜索栏中输入标签名称,即可只显示带有该标签的连接。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此資料表是空的。" + "value" : "在搜尋欄位中輸入標籤名稱,即可只顯示帶有該標籤的連線。" } } } }, - "This table needs a primary key to identify the row." : { + "UTF-8 via Latin 1" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "행을 식별하려면 이 테이블에 기본 키가 있어야 합니다." + "value" : "UTF-8(Latin 1 경유)" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Bảng này cần khóa chính để xác định dòng." + "value" : "UTF-8 qua Latin 1" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "此表需要主键来标识行。" + "value" : "UTF-8(经由 Latin 1)" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "此資料表需要主鍵來識別該列。" + "value" : "UTF-8(透過 Latin 1)" } } } }, - "This will insert a row into %@. Continue?" : { + "Unfavorite" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "%@에 행을 삽입합니다. 계속하시겠습니까?" + "value" : "즐겨찾기 해제" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thao tác này sẽ chèn một dòng vào %@. Tiếp tục?" + "value" : "Bỏ yêu thích" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "这将向 %@ 插入一行。是否继续?" + "value" : "取消收藏" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "這將向 %@ 插入一列。是否繼續?" + "value" : "移出我的最愛" } } } }, - "This will update a row in %@. Continue?" : { + "Ungrouped" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "%@의 행을 업데이트합니다. 계속하시겠습니까?" + "value" : "그룹 없음" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thao tác này sẽ cập nhật một dòng trong %@. Tiếp tục?" + "value" : "Chưa phân nhóm" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "这将更新 %@ 中的一行。是否继续?" + "value" : "未分组" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "這將更新 %@ 中的一列。是否繼續?" + "value" : "未分組" } } } }, - "Timed out completing Kerberos authentication. The Kerberos KDC (domain controller) may be unreachable, the server's SPN may be missing, or this device's clock may be off. Check your network to the domain, or use SQL Server Authentication." : { + "Unique" : { "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Kerberos 인증을 완료하는 동안 시간이 초과되었습니다. Kerberos KDC(도메인 컨트롤러)에 연결할 수 없거나, 서버의 SPN이 없거나, 이 기기의 시계가 맞지 않을 수 있습니다. 도메인에 대한 네트워크 연결을 확인하거나 SQL Server 인증을 사용하십시오." + "value" : "고유" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Hết thời gian chờ khi hoàn tất xác thực Kerberos. Có thể KDC Kerberos (domain controller) không truy cập được, SPN của máy chủ bị thiếu, hoặc đồng hồ của thiết bị này bị lệch. Hãy kiểm tra mạng tới domain, hoặc dùng SQL Server Authentication." + "value" : "Duy nhất" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "完成 Kerberos 认证超时。可能是 Kerberos KDC(域控制器)无法访问、服务器的 SPN 缺失,或本设备的时钟不准。请检查到域的网络,或改用 SQL Server 身份验证。" + "value" : "唯一" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "完成 Kerberos 驗證逾時。可能是 Kerberos KDC(網域控制站)無法連線、伺服器的 SPN 遺失,或本裝置的時鐘不準。請檢查到網域的網路,或改用 SQL Server 驗證。" + "value" : "唯一" } } } }, - "Timed out connecting to the MySQL server." : { - - }, - "Timed out connecting to the server. Check the host, port, and that the server is reachable and accepting connections." : { - "extractionState" : "stale", + "Unknown SSH Server" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "서버에 연결하는 동안 시간이 초과되었습니다. 호스트와 포트가 올바른지, 서버에 연결할 수 있고 서버가 연결을 수락하는지 확인하십시오." + "value" : "알 수 없는 SSH 서버" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Hết thời gian chờ khi kết nối tới máy chủ. Hãy kiểm tra host, cổng, và xem máy chủ có truy cập được và đang nhận kết nối không." + "value" : "Máy chủ SSH không xác định" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "连接服务器超时。请检查主机、端口,以及服务器是否可达并接受连接。" + "value" : "未知的 SSH 服务器" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "連線伺服器逾時。請檢查主機、連接埠,以及伺服器是否可連線並接受連線。" + "value" : "未知的 SSH 伺服器" } } } }, - "Timed out during the Oracle login handshake. The server accepted the network connection but did not finish logging in." : { - "extractionState" : "stale", + "Unknown error" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle 로그인 핸드셰이크 중 시간이 초과되었습니다. 서버가 네트워크 연결을 수락했지만 로그인을 완료하지 않았습니다." + "value" : "알 수 없는 오류" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Hết thời gian chờ trong quá trình bắt tay đăng nhập Oracle. Máy chủ đã chấp nhận kết nối mạng nhưng không hoàn tất đăng nhập." + "value" : "Lỗi không xác định" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle 登录握手超时。服务器接受了网络连接,但没有完成登录。" + "value" : "未知错误" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "Oracle 登入交握逾時。伺服器接受了網路連線,但沒有完成登入。" + "value" : "未知錯誤" } } } }, - "Too many rows. Add up to %lld rows at a time." : { + "Unlock" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "행이 너무 많습니다. 한 번에 최대 %lld개까지 추가하십시오." + "value" : "잠금 해제" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Quá nhiều dòng. Mỗi lần chỉ thêm tối đa %lld dòng." + "value" : "Mở khóa" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "行数过多。每次最多添加 %lld 行。" + "value" : "解锁" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "列數過多。每次最多新增 %lld 列。" + "value" : "解鎖" } } } }, - "Touch and hold a connection to rename, duplicate, or move it to a group." : { - - }, - "Truncate" : { + "Unlock TablePro to access your database connections." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "비우기" + "value" : "데이터베이스 연결에 접근하려면 TablePro의 잠금을 해제하십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Xóa dữ liệu" + "value" : "Mở khóa TablePro để truy cập các kết nối cơ sở dữ liệu." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "清空" + "value" : "解锁 TablePro 以访问你的数据库连接。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "清空" + "value" : "解鎖 TablePro 以存取你的資料庫連線。" } } } }, - "Truncate Table" : { + "Unsupported encryption version %d" : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "테이블 비우기" + "value" : "지원되지 않는 암호화 버전 %d" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Xóa dữ liệu bảng" + "value" : "Phiên bản mã hoá %d không được hỗ trợ" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "清空表" + "value" : "不支持的加密版本%d" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "清空資料表" + "value" : "不支援的加密版本 %d" } } } }, - "Trust" : { + "Use Default" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "신뢰" + "value" : "기본값 사용" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tin cậy" + "value" : "Dùng mặc định" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "信任" + "value" : "使用默认值" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "信任" + "value" : "使用預設值" } } } }, - "Try Again" : { + "Use Passcode" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "다시 시도" + "value" : "암호 사용" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thử lại" + "value" : "Dùng mật mã" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "重试" + "value" : "使用密码" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "再試一次" + "value" : "使用密碼" } } } }, - "Try again or check your connection." : { + "Use SID Instead" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "다시 시도하거나 연결을 확인하십시오." + "value" : "대신 SID 사용" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Thử lại hoặc kiểm tra kết nối." + "value" : "Dùng SID thay thế" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "请重试或检查你的连接。" + "value" : "改用 SID" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "請再試一次或檢查你的連線。" + "value" : "改用 SID" } } } }, - "Turn On iCloud Sync" : { - - }, - "Type" : { + "Use Service Name Instead" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "유형" + "value" : "대신 서비스 이름 사용" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Loại" + "value" : "Dùng tên dịch vụ thay thế" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "类型" + "value" : "改用服务名" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "型別" + "value" : "改用服務名稱" } } } }, - "Type a tag's name in the search field to show only the connections that carry it." : { - - }, - "UTF-8 via Latin 1" : { - - }, - "Unfavorite" : { - - }, - "Ungrouped" : { + "Use iCloud" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "그룹 없음" + "value" : "iCloud 사용" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chưa phân nhóm" + "value" : "Dùng iCloud" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未分组" + "value" : "使用 iCloud" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "未分組" + "value" : "使用 iCloud" } } } }, - "Unique" : { - "extractionState" : "stale", + "Username" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "고유" + "value" : "사용자 이름" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Duy nhất" + "value" : "Tên đăng nhập" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "唯一" + "value" : "用户名" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "唯一" + "value" : "使用者名稱" } } } }, - "Unknown SSH Server" : { + "Username is for Redis 6 and later ACL users. Leave it empty for password-only servers." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "알 수 없는 SSH 서버" + "value" : "사용자 이름은 Redis 6 이상의 ACL 사용자용입니다. 암호만 사용하는 서버에서는 비워 두십시오." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Máy chủ SSH không xác định" + "value" : "Tên người dùng dành cho người dùng ACL của Redis 6 trở lên. Để trống với các máy chủ chỉ dùng mật khẩu." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "未知的 SSH 服务器" + "value" : "用户名用于 Redis 6 及更高版本的 ACL 用户。仅使用密码的服务器请留空。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "未知的 SSH 伺服器" + "value" : "使用者名稱用於 Redis 6 及更新版本的 ACL 使用者。僅使用密碼的伺服器請留空。" } } } }, - "Unknown error" : { - - }, - "Unlock" : { + "VALUE" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "잠금 해제" + "value" : "값" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mở khóa" + "value" : "GIÁ TRỊ" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "解锁" + "value" : "值" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "解鎖" + "value" : "值" } } } }, - "Unlock TablePro to access your database connections." : { + "Value" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "데이터베이스 연결에 접근하려면 TablePro의 잠금을 해제하십시오." + "value" : "값" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Mở khóa TablePro để truy cập các kết nối cơ sở dữ liệu." + "value" : "Giá trị" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "解锁 TablePro 以访问你的数据库连接。" + "value" : "值" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "解鎖 TablePro 以存取你的資料庫連線。" + "value" : "值" } } } }, - "Unsupported encryption version %d" : { - "extractionState" : "stale", + "Value for %@" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "지원되지 않는 암호화 버전 %d" + "value" : "%@ 값" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Phiên bản mã hoá %d không được hỗ trợ" + "value" : "Giá trị cho %@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "不支持的加密版本%d" + "value" : "%@ 的值" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "不支援的加密版本 %d" + "value" : "%@ 的值" } } } }, - "Use Default" : { - - }, - "Use Passcode" : { + "Verify CA" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "암호 사용" + "value" : "CA 확인" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Dùng mật mã" + "value" : "Xác minh CA" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "使用密码" + "value" : "验证 CA" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "使用密碼" + "value" : "驗證 CA" } } } }, - "Use SID Instead" : { + "Verify Identity" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "대신 SID 사용" + "value" : "신원 확인" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Dùng SID thay thế" + "value" : "Xác minh danh tính" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "改用 SID" + "value" : "验证身份" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "改用 SID" + "value" : "驗證身分" } } } }, - "Use Service Name Instead" : { + "Version" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "대신 서비스 이름 사용" + "value" : "버전" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Dùng tên dịch vụ thay thế" + "value" : "Phiên bản" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "改用服务名" + "value" : "版本" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "改用服務名稱" + "value" : "版本" } } } }, - "Use iCloud" : { - - }, - "Username" : { + "Version %@" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "사용자 이름" + "value" : "버전 %@" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tên đăng nhập" + "value" : "Phiên bản %@" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "用户名" + "value" : "版本 %@" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "使用者名稱" + "value" : "版本 %@" } } } }, - "Username is for Redis 6 and later ACL users. Leave it empty for password-only servers." : { + "View" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "사용자 이름은 Redis 6 이상의 ACL 사용자용입니다. 암호만 사용하는 서버에서는 비워 두십시오." + "value" : "보기" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Tên người dùng dành cho người dùng ACL của Redis 6 trở lên. Để trống với các máy chủ chỉ dùng mật khẩu." + "value" : "View" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "用户名用于 Redis 6 及更高版本的 ACL 用户。仅使用密码的服务器请留空。" + "value" : "视图" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "使用者名稱用於 Redis 6 及更新版本的 ACL 使用者。僅使用密碼的伺服器請留空。" + "value" : "檢視表" } } } }, - "VALUE" : { - - }, - "Value" : { + "Views" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "값" + "value" : "뷰" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Giá trị" + "value" : "View" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "值" + "value" : "视图" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "值" + "value" : "檢視表" } } } }, - "Value for %@" : { - - }, - "Verify CA" : { + "Welcome to TablePro" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "CA 확인" + "value" : "TablePro에 오신 것을 환영합니다" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Xác minh CA" + "value" : "Chào mừng đến TablePro" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "验证 CA" + "value" : "欢迎使用TablePro" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "驗證 CA" + "value" : "歡迎使用 TablePro" } } } }, - "Verify Identity" : { + "What's New" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "신원 확인" + "value" : "새로운 기능" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Xác minh danh tính" + "value" : "Có gì mới" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "验证身份" + "value" : "新功能" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "驗證身分" + "value" : "新功能" } } } }, - "Version" : { + "What's New in TablePro" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "버전" + "value" : "TablePro의 새로운 기능" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Phiên bản" + "value" : "Có gì mới trong TablePro" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "版本" + "value" : "TablePro 新功能" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "版本" + "value" : "TablePro 的新功能" } } } }, - "Version %@" : { - - }, - "View" : { + "When off, connections, groups, and tags stay on this device only. Existing iCloud data is not deleted." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "보기" + "value" : "끄면 연결, 그룹 및 태그가 이 기기에만 유지됩니다. 기존 iCloud 데이터는 삭제되지 않습니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "View" + "value" : "Khi tắt, các kết nối, nhóm và thẻ chỉ ở trên thiết bị này. Dữ liệu iCloud hiện có sẽ không bị xóa." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "视图" + "value" : "关闭后,连接、分组和标签将仅保留在此设备上。现有的 iCloud 数据不会被删除。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "檢視表" + "value" : "關閉時,連線、群組與標籤只會保留在此裝置上。現有的 iCloud 資料不會被刪除。" } } } }, - "Views" : { + "When off, connections, groups, and tags stay on this device only. Existing iCloud data is not deleted. Passwords stay on this device unless you turn on Sync Passwords." : { + "extractionState" : "stale", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "뷰" + "value" : "이 옵션을 끄면 연결, 그룹 및 태그가 이 기기에만 저장됩니다. 기존 iCloud 데이터는 삭제되지 않습니다. 암호 동기화를 켜지 않는 한 암호도 이 기기에만 저장됩니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "View" + "value" : "Khi tắt, kết nối, nhóm và thẻ chỉ nằm trên thiết bị này. Dữ liệu iCloud hiện có không bị xóa. Mật khẩu vẫn ở trên thiết bị này trừ khi bạn bật Đồng bộ mật khẩu." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "视图" + "value" : "关闭后,连接、分组和标签只保留在本设备上。已有的 iCloud 数据不会被删除。除非你开启“同步密码”,否则密码只保留在本设备。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "檢視表" + "value" : "關閉後,連線、群組和標籤只保留在本裝置上。已有的 iCloud 資料不會被刪除。除非你開啟「同步密碼」,否則密碼只保留在本裝置。" } } } }, - "Welcome to TablePro" : { + "When off, nothing is sent to iCloud and nothing already there is deleted. Changes you make meanwhile sync once you turn it back on." : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "TablePro에 오신 것을 환영합니다" + "value" : "끄면 iCloud로 아무것도 전송되지 않으며 이미 iCloud에 있는 데이터도 삭제되지 않습니다. 꺼져 있는 동안 변경한 내용은 다시 켜면 동기화됩니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Chào mừng đến TablePro" + "value" : "Khi tắt, không có gì được gửi lên iCloud và những gì đã có ở đó không bị xóa. Các thay đổi bạn thực hiện trong thời gian này sẽ đồng bộ khi bạn bật lại." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "欢迎使用TablePro" + "value" : "关闭后,不会向 iCloud 发送任何内容,也不会删除 iCloud 中已有的内容。在此期间所做的更改会在你重新开启后同步。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "歡迎使用 TablePro" + "value" : "關閉時,不會傳送任何內容到 iCloud,也不會刪除 iCloud 上已有的內容。期間所做的變更會在你重新開啟後同步。" } } } }, - "What's New" : { - - }, - "What's New in TablePro" : { - - }, - "When off, connections, groups, and tags stay on this device only. Existing iCloud data is not deleted." : { - "extractionState" : "stale", + "When on, the lock screen and Dynamic Island show \"Running query\" instead of the SQL preview." : { + "extractionState" : "manual", "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "끄면 연결, 그룹 및 태그가 이 기기에만 유지됩니다. 기존 iCloud 데이터는 삭제되지 않습니다." + "value" : "켜면 잠금 화면과 Dynamic Island에 SQL 미리 보기 대신 \"쿼리 실행 중\"이 표시됩니다." } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Khi tắt, các kết nối, nhóm và thẻ chỉ ở trên thiết bị này. Dữ liệu iCloud hiện có sẽ không bị xóa." + "value" : "Khi bật, màn hình khóa và Dynamic Island hiển thị \"Đang chạy truy vấn\" thay cho nội dung SQL." } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "关闭后,连接、分组和标签将仅保留在此设备上。现有的 iCloud 数据不会被删除。" + "value" : "开启后,锁定屏幕和灵动岛将显示“正在运行查询”而非 SQL 预览。" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "關閉時,連線、群組與標籤只會保留在此裝置上。現有的 iCloud 資料不會被刪除。" + "value" : "開啟時,鎖定畫面與動態島會顯示「正在執行查詢」,而非 SQL 預覽。" } } } }, - "When off, connections, groups, and tags stay on this device only. Existing iCloud data is not deleted. Passwords stay on this device unless you turn on Sync Passwords." : { - "extractionState" : "stale", + "When you first connected and first ran a query" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "이 옵션을 끄면 연결, 그룹 및 태그가 이 기기에만 저장됩니다. 기존 iCloud 데이터는 삭제되지 않습니다. 암호 동기화를 켜지 않는 한 암호도 이 기기에만 저장됩니다." + "value" : "처음 연결한 시점과 처음 쿼리를 실행한 시점" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Khi tắt, kết nối, nhóm và thẻ chỉ nằm trên thiết bị này. Dữ liệu iCloud hiện có không bị xóa. Mật khẩu vẫn ở trên thiết bị này trừ khi bạn bật Đồng bộ mật khẩu." + "value" : "Thời điểm bạn kết nối lần đầu và chạy truy vấn lần đầu" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "关闭后,连接、分组和标签只保留在本设备上。已有的 iCloud 数据不会被删除。除非你开启“同步密码”,否则密码只保留在本设备。" + "value" : "你首次连接和首次运行查询的时间" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "關閉後,連線、群組和標籤只保留在本裝置上。已有的 iCloud 資料不會被刪除。除非你開啟「同步密碼」,否則密碼只保留在本裝置。" + "value" : "你首次連線與首次執行查詢的時間" } } } }, - "When off, nothing is sent to iCloud and nothing already there is deleted. Changes you make meanwhile sync once you turn it back on." : { - - }, - "When on, the lock screen and Dynamic Island show \"Running query\" instead of the SQL preview." : { - "extractionState" : "manual", + "Which database types you connect to, and how many connections are open" : { "localizations" : { "ko" : { "stringUnit" : { "state" : "translated", - "value" : "켜면 잠금 화면과 Dynamic Island에 SQL 미리 보기 대신 \"쿼리 실행 중\"이 표시됩니다." + "value" : "연결하는 데이터베이스 유형 및 열려 있는 연결 수" } }, "vi" : { "stringUnit" : { "state" : "translated", - "value" : "Khi bật, màn hình khóa và Dynamic Island hiển thị \"Đang chạy truy vấn\" thay cho nội dung SQL." + "value" : "Các loại cơ sở dữ liệu bạn kết nối tới và số kết nối đang mở" } }, "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "开启后,锁定屏幕和灵动岛将显示“正在运行查询”而非 SQL 预览。" + "value" : "你连接的数据库类型,以及打开的连接数量" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "開啟時,鎖定畫面與動態島會顯示「正在執行查詢」,而非 SQL 預覽。" + "value" : "你連線的資料庫類型,以及開啟中的連線數量" } } } - }, - "When you first connected and first ran a query" : { - - }, - "Which database types you connect to, and how many connections are open" : { - }, "Windows Authentication (Kerberos) isn't supported on iOS yet. Use SQL Server Authentication, or connect from the Mac app." : { "localizations" : { @@ -15531,7 +18763,32 @@ } }, "Write and Run SQL" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "SQL 작성 및 실행" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Viết và chạy SQL" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "编写并运行 SQL" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "撰寫並執行 SQL" + } + } + } }, "Yellow" : { "localizations" : { @@ -15562,7 +18819,32 @@ } }, "Your connections could not be loaded, so nothing can be added right now." : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "연결을 불러올 수 없어 지금은 아무것도 추가할 수 없습니다." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Không tải được các kết nối của bạn nên hiện chưa thể thêm gì." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "无法加载你的连接,因此目前无法添加任何内容。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "無法載入你的連線,因此目前無法新增任何項目。" + } + } + } }, "auto-increment" : { "localizations" : { @@ -15789,7 +19071,32 @@ } }, "iCloud" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud" + } + } + } }, "iCloud Sync" : { "localizations" : { @@ -15820,7 +19127,32 @@ } }, "iCloud Unavailable" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud를 사용할 수 없음" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud không khả dụng" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud 不可用" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "iCloud 無法使用" + } + } + } }, "iCloud account is not available. Sign in to iCloud in System Settings." : { "extractionState" : "stale", @@ -16001,7 +19333,32 @@ } }, "in %@" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "그룹 %@" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "trong nhóm %@" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "位于 %@" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "位於 %@" + } + } + } }, "insert" : { "localizations" : { @@ -16424,7 +19781,32 @@ } }, "tags %@" : { - + "localizations" : { + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "태그 %@" + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "nhãn %@" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "标签 %@" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "標籤 %@" + } + } + } }, "≤" : { "localizations" : {