diff --git a/PureMac.xcodeproj/project.pbxproj b/PureMac.xcodeproj/project.pbxproj index 8387067..78d4267 100644 --- a/PureMac.xcodeproj/project.pbxproj +++ b/PureMac.xcodeproj/project.pbxproj @@ -205,6 +205,8 @@ F661A0F64CF93E482CB1728F /* DashboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardView.swift; sourceTree = ""; }; F77B9D7D5353CD42BD03ADBB /* ApplicationUpdaterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationUpdaterTests.swift; sourceTree = ""; }; F9DCBD97CC88D77AE8DB01A4 /* PermissionCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PermissionCoordinator.swift; sourceTree = ""; }; + A10FC6CEEEB75992ADCA4C01 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; + A10FC6CEEEB75992ADCA4C02 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/ServicesMenu.strings"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -683,6 +685,7 @@ 25D1CF5248C1D471BCBD212F /* fr */, 6ED5C9C10C69C3143B1F5CA6 /* ru */, 374A3BE46E71E54B6927E9EF /* uk */, + A10FC6CEEEB75992ADCA4C02 /* zh-Hans */, ); name = ServicesMenu.strings; sourceTree = ""; @@ -694,6 +697,7 @@ 0A544093C897FBCBA8E256F9 /* fr */, ED0C4D8912DA94F81B2AEF8F /* ru */, DFC4A1FD7DB92C82725B4314 /* uk */, + A10FC6CEEEB75992ADCA4C01 /* zh-Hans */, ); name = InfoPlist.strings; sourceTree = ""; diff --git a/PureMac/Services/ApplicationUpdater.swift b/PureMac/Services/ApplicationUpdater.swift index 8a31b81..0fe5e1a 100644 --- a/PureMac/Services/ApplicationUpdater.swift +++ b/PureMac/Services/ApplicationUpdater.swift @@ -34,19 +34,19 @@ enum ApplicationUpdaterError: LocalizedError, Equatable { var errorDescription: String? { switch self { case .homebrewNotInstalled: - return "Homebrew was not found in a standard installation location." + return String(localized: "Homebrew was not found in a standard installation location.") case .invalidResponse: - return "Homebrew returned update information PureMac could not read." + return String(localized: "Homebrew returned update information PureMac could not read.") case .invalidCaskIdentifier(let token): - return "Homebrew returned an invalid cask identifier: \(token)" + return String(localized: "Homebrew returned an invalid cask identifier: \(token)") case .noSelection: - return "Select at least one app to update." + return String(localized: "Select at least one app to update.") case .commandFailed(let message): return message case .timedOut: - return "Homebrew did not finish before the operation timed out." + return String(localized: "Homebrew did not finish before the operation timed out.") case .outputLimitExceeded: - return "Homebrew produced more output than PureMac could safely retain." + return String(localized: "Homebrew produced more output than PureMac could safely retain.") } } } @@ -152,17 +152,17 @@ final class ApplicationUpdater: ObservableObject { selectedTokens.formIntersection(Set(updates.filter { !$0.isPinned }.map(\.token))) if remaining.isEmpty { statusMessage = tokens.count == 1 - ? "Homebrew updated the selected app." - : "Homebrew updated the \(tokens.count) selected apps." + ? String(localized: "Homebrew updated the selected app.") + : String(localized: "Homebrew updated the \(tokens.count) selected apps.") } else { statusMessage = remaining.count == 1 - ? "Homebrew finished, but 1 selected app still reports an update." - : "Homebrew finished, but \(remaining.count) selected apps still report updates." + ? String(localized: "Homebrew finished, but 1 selected app still reports an update.") + : String(localized: "Homebrew finished, but \(remaining.count) selected apps still report updates.") } } catch is CancellationError { - statusMessage = "Homebrew finished. Check again to verify installed versions." + statusMessage = String(localized: "Homebrew finished. Check again to verify installed versions.") } catch { - statusMessage = "Homebrew finished. Check again to verify installed versions." + statusMessage = String(localized: "Homebrew finished. Check again to verify installed versions.") errorMessage = Self.displayMessage(for: error) } } catch is CancellationError { diff --git a/PureMac/Services/DuplicateFinder.swift b/PureMac/Services/DuplicateFinder.swift index 5f3bebb..2a8334c 100644 --- a/PureMac/Services/DuplicateFinder.swift +++ b/PureMac/Services/DuplicateFinder.swift @@ -55,13 +55,13 @@ enum DuplicateSkipReason: String, Hashable, Sendable { var label: String { switch self { - case .symbolicLink: return "Symbolic link" - case .package: return "Package contents" - case .cloudPlaceholder: return "Cloud-only file" - case .hardLink: return "Hard-linked copy" - case .inaccessible: return "Access denied" - case .changedDuringScan: return "Changed during scan" - case .unreadable: return "Could not read" + case .symbolicLink: return String(localized: "Symbolic link") + case .package: return String(localized: "Package contents") + case .cloudPlaceholder: return String(localized: "Cloud-only file") + case .hardLink: return String(localized: "Hard-linked copy") + case .inaccessible: return String(localized: "Access denied") + case .changedDuringScan: return String(localized: "Changed during scan") + case .unreadable: return String(localized: "Could not read") } } } @@ -128,15 +128,15 @@ enum DuplicateFinderError: LocalizedError, Equatable { var errorDescription: String? { switch self { case .invalidFolder(let path): - return "The selected folder cannot be scanned: \(path)" + return String(localized: "The selected folder cannot be scanned: \(path)") case .invalidSelection(let path): - return "The protected copy cannot be moved to Trash: \(path)" + return String(localized: "The protected copy cannot be moved to Trash: \(path)") case .keeperChanged(let path): - return "The copy marked Keep is missing or changed: \(path)" + return String(localized: "The copy marked Keep is missing or changed: \(path)") case .fileChanged(let path): - return "A selected file is missing or changed: \(path)" + return String(localized: "A selected file is missing or changed: \(path)") case .contentChanged(let path): - return "A selected file no longer matches its kept copy: \(path)" + return String(localized: "A selected file no longer matches its kept copy: \(path)") } } } @@ -241,7 +241,7 @@ actor DuplicateFinder { skipped.append(DuplicateSkippedFile( url: normalizedURL, reason: .hardLink, - detail: "Shares storage with \(firstURL.lastPathComponent)" + detail: String(localized: "Shares storage with \(firstURL.lastPathComponent)") )) } else { seenPhysicalFiles[identity.physicalID] = normalizedURL diff --git a/PureMac/Services/PerformanceInspector.swift b/PureMac/Services/PerformanceInspector.swift index 8fb6ee4..91ecfab 100644 --- a/PureMac/Services/PerformanceInspector.swift +++ b/PureMac/Services/PerformanceInspector.swift @@ -8,9 +8,9 @@ enum PerformanceStartupDomain: String, CaseIterable, Hashable, Sendable { var title: String { switch self { - case .userAgent: return "User agent" - case .systemAgent: return "System-wide agent" - case .systemDaemon: return "System daemon" + case .userAgent: return String(localized: "User agent") + case .systemAgent: return String(localized: "System-wide agent") + case .systemDaemon: return String(localized: "System daemon") } } } @@ -35,9 +35,9 @@ struct PerformanceSnapshot: Identifiable, Hashable, Sendable { var title: String { switch self { - case .timeMachine: return "Time Machine" - case .systemUpdate: return "System update" - case .local: return "Local snapshot" + case .timeMachine: return String(localized: "Time Machine") + case .systemUpdate: return String(localized: "System update") + case .local: return String(localized: "Local snapshot") } } } @@ -71,14 +71,14 @@ enum PerformanceInspectorError: LocalizedError, Equatable { var errorDescription: String? { switch self { case .invalidPropertyList: - return "The launch item is not a property-list dictionary." + return String(localized: "The launch item is not a property-list dictionary.") case .invalidSnapshotIdentifier: - return "This snapshot does not have a verified Time Machine timestamp." + return String(localized: "This snapshot does not have a verified Time Machine timestamp.") case .timedOut(let command): - return "\(command) did not finish within the allowed time." + return String(localized: "\(command) did not finish within the allowed time.") case .commandFailed(let command, let status, let detail): let suffix = detail.isEmpty ? "" : ": \(detail)" - return "\(command) exited with status \(status)\(suffix)" + return String(localized: "\(command) exited with status \(status)\(suffix)") } } } @@ -162,29 +162,29 @@ final class PerformanceInspector { var triggers: [String] = [] if bool(dictionary["RunAtLoad"]) == true { - triggers.append("At login") + triggers.append(String(localized: "At login")) } if let keepAlive = dictionary["KeepAlive"] { if bool(keepAlive) == true { - triggers.append("Keep alive") + triggers.append(String(localized: "Keep alive")) } else if let conditions = keepAlive as? [String: Any], !conditions.isEmpty { - triggers.append("Conditional keep alive") + triggers.append(String(localized: "Conditional keep alive")) } } if let interval = number(dictionary["StartInterval"]), interval.intValue > 0 { - triggers.append("Every \(interval.intValue) seconds") + triggers.append(String(localized: "Every \(interval.intValue) seconds")) } if dictionary["StartCalendarInterval"] != nil { - triggers.append("Scheduled") + triggers.append(String(localized: "Scheduled")) } if !stringArray(dictionary["WatchPaths"]).isEmpty { - triggers.append("Watches paths") + triggers.append(String(localized: "Watches paths")) } if !stringArray(dictionary["QueueDirectories"]).isEmpty { - triggers.append("Watches folders") + triggers.append(String(localized: "Watches folders")) } if bool(dictionary["NetworkState"]) == true { - triggers.append("Network state") + triggers.append(String(localized: "Network state")) } return PerformanceStartupItem( @@ -265,7 +265,7 @@ final class PerformanceInspector { } catch { issues.append( PerformanceInspectionIssue( - title: "Could not read \(directory.path)", + title: String(localized: "Could not read \(directory.path)"), detail: error.localizedDescription ) ) @@ -282,7 +282,7 @@ final class PerformanceInspector { } catch { issues.append( PerformanceInspectionIssue( - title: "Could not inspect \(file.lastPathComponent)", + title: String(localized: "Could not inspect \(file.lastPathComponent)"), detail: error.localizedDescription ) ) @@ -311,8 +311,8 @@ final class PerformanceInspector { return ( [], [PerformanceInspectionIssue( - title: "Time Machine snapshots are unavailable", - detail: "tmutil is not available on this Mac." + title: String(localized: "Time Machine snapshots are unavailable"), + detail: String(localized: "tmutil is not available on this Mac.") )] ) } @@ -337,7 +337,7 @@ final class PerformanceInspector { return ( [], [PerformanceInspectionIssue( - title: "Could not list Time Machine snapshots", + title: String(localized: "Could not list Time Machine snapshots"), detail: error.localizedDescription )] ) diff --git a/PureMac/Services/ProtectionAudit.swift b/PureMac/Services/ProtectionAudit.swift index a0e8948..fde1a5a 100644 --- a/PureMac/Services/ProtectionAudit.swift +++ b/PureMac/Services/ProtectionAudit.swift @@ -325,7 +325,7 @@ struct ProtectionAudit: Sendable { return ProtectionFinding( check: check, status: .unknown, - detail: result.timedOut ? "The check timed out." : "PureMac could not read this setting.", + detail: result.timedOut ? String(localized: "The check timed out.") : String(localized: "PureMac could not read this setting."), version: nil ) } @@ -334,31 +334,31 @@ struct ProtectionAudit: Sendable { switch check { case .gatekeeper: if output.contains("assessments enabled") { - return finding(check, .enabled, "App downloads are checked before opening.") + return finding(check, .enabled, String(localized: "App downloads are checked before opening.")) } if output.contains("assessments disabled") { - return finding(check, .disabled, "Downloaded apps are not being assessed by Gatekeeper.") + return finding(check, .disabled, String(localized: "Downloaded apps are not being assessed by Gatekeeper.")) } case .fileVault: if output.contains("filevault is on") { - return finding(check, .enabled, "The startup disk is encrypted with FileVault.") + return finding(check, .enabled, String(localized: "The startup disk is encrypted with FileVault.")) } if output.contains("filevault is off") { - return finding(check, .disabled, "The startup disk is not encrypted with FileVault.") + return finding(check, .disabled, String(localized: "The startup disk is not encrypted with FileVault.")) } case .firewall: if output.contains("firewall is enabled") || output.contains("state = 1") { - return finding(check, .enabled, "Incoming network connections are filtered.") + return finding(check, .enabled, String(localized: "Incoming network connections are filtered.")) } if output.contains("firewall is disabled") || output.contains("state = 0") { - return finding(check, .disabled, "The macOS application firewall is turned off.") + return finding(check, .disabled, String(localized: "The macOS application firewall is turned off.")) } case .systemIntegrityProtection: if output.contains("system integrity protection status: enabled") { - return finding(check, .enabled, "Protected system locations and processes are restricted.") + return finding(check, .enabled, String(localized: "Protected system locations and processes are restricted.")) } if output.contains("system integrity protection status: disabled") { - return finding(check, .disabled, "System Integrity Protection is turned off.") + return finding(check, .disabled, String(localized: "System Integrity Protection is turned off.")) } case .xProtect: break @@ -367,7 +367,7 @@ struct ProtectionAudit: Sendable { return ProtectionFinding( check: check, status: .unknown, - detail: "The system returned an unrecognized status.", + detail: String(localized: "The system returned an unrecognized status."), version: nil ) } @@ -380,20 +380,20 @@ struct ProtectionAudit: Sendable { return ProtectionFinding( check: .xProtect, status: .unknown, - detail: "PureMac could not confirm the local XProtect installation.", + detail: String(localized: "PureMac could not confirm the local XProtect installation."), version: nil ) } let parts = [ - engine.map { "engine \($0)" }, - definitions.map { "definitions \($0)" } + engine.map { String(localized: "engine \($0)") }, + definitions.map { String(localized: "definitions \($0)") } ].compactMap { $0 } - let version = parts.joined(separator: ", ") + let version = parts.joined(separator: String(localized: ", ")) return ProtectionFinding( check: .xProtect, status: .enabled, - detail: "Apple's built-in malware protection is installed. Update recency is managed by macOS.", + detail: String(localized: "Apple's built-in malware protection is installed. Update recency is managed by macOS."), version: version ) } diff --git a/PureMac/Services/SimilarPhotoFinder.swift b/PureMac/Services/SimilarPhotoFinder.swift index 1a869b2..8ee19d2 100644 --- a/PureMac/Services/SimilarPhotoFinder.swift +++ b/PureMac/Services/SimilarPhotoFinder.swift @@ -65,7 +65,7 @@ enum SimilarPhotoFinderError: LocalizedError, Equatable { var errorDescription: String? { switch self { case .invalidFolder(let path): - return "The selected folder cannot be scanned: \(path)" + return String(localized: "The selected folder cannot be scanned: \(path)") } } } diff --git a/PureMac/Services/StorageExplorer.swift b/PureMac/Services/StorageExplorer.swift index 74ff32e..124c371 100644 --- a/PureMac/Services/StorageExplorer.swift +++ b/PureMac/Services/StorageExplorer.swift @@ -56,15 +56,15 @@ enum StorageExplorerError: LocalizedError, Equatable { var errorDescription: String? { switch self { case .notDirectory(let path): - return "The selected item is not a folder: \(path)" + return String(localized: "The selected item is not a folder: \(path)") case .symbolicLink(let path): - return "Symbolic links cannot be scanned: \(path)" + return String(localized: "Symbolic links cannot be scanned: \(path)") case .package(let path): - return "App and document packages are excluded: \(path)" + return String(localized: "App and document packages are excluded: \(path)") case .cloudOnly(let path): - return "The selected folder is stored in the cloud and has not been downloaded: \(path)" + return String(localized: "The selected folder is stored in the cloud and has not been downloaded: \(path)") case .unavailable(let path): - return "The selected folder could not be read: \(path)" + return String(localized: "The selected folder could not be read: \(path)") } } } diff --git a/PureMac/ViewModels/AppState.swift b/PureMac/ViewModels/AppState.swift index 908e895..6604fc8 100644 --- a/PureMac/ViewModels/AppState.swift +++ b/PureMac/ViewModels/AppState.swift @@ -307,7 +307,7 @@ final class AppState: ObservableObject { } guard !urls.isEmpty else { if !blocked.isEmpty { - removalError = "Refused to delete \(blocked.count) protected item(s) (home credential directory or similar)." + removalError = String(localized: "Refused to delete \(blocked.count) protected item(s) (home credential directory or similar).") } return } @@ -462,19 +462,19 @@ final class AppState: ObservableObject { adminError: String? ) -> String? { if needsFullDiskAccess { - let prefix = failed.isEmpty ? "Some selected files" : "\(failed.count) file\(failed.count == 1 ? "" : "s")" - return "\(prefix) could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again." + let prefix = failed.isEmpty ? String(localized: "Some selected files") : String(localized: "\(failed.count) files") + return String(localized: "\(prefix) could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again.") } if !failed.isEmpty { if attemptedAdmin { - return "\(failed.count) file\(failed.count == 1 ? "" : "s") could not be removed with administrator privileges. The items may have changed or macOS denied access." + return String(localized: "\(failed.count) file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access.") } - return "\(failed.count) file\(failed.count == 1 ? "" : "s") could not be removed. Check that the items still exist and are not in use." + return String(localized: "\(failed.count) file(s) could not be removed. Check that the items still exist and are not in use.") } if let adminError, !adminError.isEmpty { - return "Administrator removal failed: \(adminError)" + return String(localized: "Administrator removal failed: \(adminError)") } return nil } diff --git a/PureMac/Views/CategoryDetailView.swift b/PureMac/Views/CategoryDetailView.swift index b1b9466..80de927 100644 --- a/PureMac/Views/CategoryDetailView.swift +++ b/PureMac/Views/CategoryDetailView.swift @@ -20,7 +20,7 @@ struct CategoryDetailView: View { if case .scanning = appState.scanState { HStack(spacing: 12) { ProgressView().controlSize(.small) - Text("Scanning \(appState.currentScanCategory)…") + Text("Scanning \(Text(LocalizedStringKey(appState.currentScanCategory)))…") .font(.callout) .foregroundStyle(.secondary) Spacer() @@ -116,16 +116,16 @@ struct CategoryDetailView: View { .background(Color.primary.opacity(0.045), in: RoundedRectangle(cornerRadius: 8)) HStack(spacing: 12) { Picker("Size", selection: $filter.size) { - ForEach(CleanupSizeFilter.allCases) { Text($0.rawValue).tag($0) } + ForEach(CleanupSizeFilter.allCases) { Text(LocalizedStringKey($0.rawValue)).tag($0) } } .frame(maxWidth: 180) Picker("Modified", selection: $filter.age) { - ForEach(CleanupAgeFilter.allCases) { Text($0.rawValue).tag($0) } + ForEach(CleanupAgeFilter.allCases) { Text(LocalizedStringKey($0.rawValue)).tag($0) } } .frame(maxWidth: 210) Spacer(minLength: 0) Picker("Sort", selection: $filter.order) { - ForEach(CleanupSortOrder.allCases) { Text($0.rawValue).tag($0) } + ForEach(CleanupSortOrder.allCases) { Text(LocalizedStringKey($0.rawValue)).tag($0) } } .frame(maxWidth: 185) } @@ -185,8 +185,8 @@ struct CategoryDetailView: View { private var confirmationMessage: String { let size = ByteCountFormatter.string(fromByteCount: pendingItems.reduce(0) { $0 + $1.size }, countStyle: .file) let names = pendingItems.prefix(5).map(\.name).joined(separator: "\n") - let more = pendingItems.count > 5 ? "\nAnd \(pendingItems.count - 5) more." : "" - return "\(size) selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone.\n\n\(names)\(more)" + let more = pendingItems.count > 5 ? String(localized: "\nAnd \(pendingItems.count - 5) more.") : "" + return String(localized: "\(size) selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone.") + "\n\n" + names + more } } @@ -210,7 +210,7 @@ private struct CleanupFileRow: View { .font(.system(size: 13, weight: .medium)) .lineLimit(1) .truncationMode(.middle) - Text(item.isActionItem ? "Managed cleanup action" : (item.path as NSString).abbreviatingWithTildeInPath) + Text(item.isActionItem ? String(localized: "Managed cleanup action") : (item.path as NSString).abbreviatingWithTildeInPath) .font(.system(size: 11)) .foregroundStyle(.secondary) .lineLimit(1) diff --git a/PureMac/Views/DashboardView.swift b/PureMac/Views/DashboardView.swift index 06758cb..1b5fa54 100644 --- a/PureMac/Views/DashboardView.swift +++ b/PureMac/Views/DashboardView.swift @@ -329,7 +329,7 @@ struct DashboardView: View { } } - private func diskLegendRow(id: String, color: Color, label: String, value: String) -> some View { + private func diskLegendRow(id: String, color: Color, label: LocalizedStringKey, value: String) -> some View { HStack(spacing: 8) { Circle() .fill(color) @@ -407,7 +407,7 @@ struct DashboardView: View { Text("Scanning your Mac") .font(.system(size: 25, weight: .semibold)) .tracking(-0.35) - Text(appState.currentScanCategory) + Text(LocalizedStringKey(appState.currentScanCategory)) .font(.system(size: 13, weight: .medium)) .foregroundStyle(Tint.accent) ScanPathTicker(ticker: appState.scanTicker) @@ -638,7 +638,7 @@ struct DashboardView: View { ) } - private func dashboardSection(_ title: LocalizedStringKey, detail: String? = nil) -> some View { + private func dashboardSection(_ title: LocalizedStringKey, detail: LocalizedStringKey? = nil) -> some View { HStack(alignment: .firstTextBaseline) { Text(title) .font(.system(size: 16, weight: .semibold)) diff --git a/PureMac/Views/Tools/AppUpdatesView.swift b/PureMac/Views/Tools/AppUpdatesView.swift index 5e71af0..51492ee 100644 --- a/PureMac/Views/Tools/AppUpdatesView.swift +++ b/PureMac/Views/Tools/AppUpdatesView.swift @@ -272,7 +272,7 @@ struct AppUpdatesView: View { .font(.system(size: 14, weight: .semibold)) .lineLimit(1) if update.isPinned { - StatusChip(label: "Pinned", systemImage: "pin.fill", tint: Tint.orange) + StatusChip(label: String(localized: "Pinned"), systemImage: "pin.fill", tint: Tint.orange) } } Text(updateDetail(update)) @@ -328,9 +328,9 @@ struct AppUpdatesView: View { } private func updateDetail(_ update: ManagedAppUpdate) -> String { - let installed = "Installed \(update.installedVersion)" + let installed = String(localized: "Installed \(update.installedVersion)") guard AppUpdateIdentityMatcher.shouldShowTokenDetail(update.token) else { return installed } - return "\(update.token) · \(installed)" + return String(localized: "\(update.token) · \(installed)") } private var unmanagedAppsCard: some View { @@ -353,7 +353,7 @@ struct AppUpdatesView: View { } } - private func stateCard(title: String, message: String, systemImage: String, tint: Color) -> some View { + private func stateCard(title: LocalizedStringKey, message: LocalizedStringKey, systemImage: String, tint: Color) -> some View { CardSurface(padding: 28, elevation: .standard, tint: tint) { VStack(spacing: 12) { IconTile(systemName: systemImage, tint: tint, size: 48, corner: 13) @@ -384,7 +384,7 @@ struct AppUpdatesView: View { private var upgradeBar: some View { HStack { - Text(updater.selectedCount == 0 ? "Select apps to update" : selectedCountTitle) + Text(updater.selectedCount == 0 ? String(localized: "Select apps to update") : selectedCountTitle) .font(.callout.weight(.medium)) .foregroundStyle(updater.selectedCount == 0 ? Color.secondary : Color.primary) Spacer() @@ -417,27 +417,27 @@ struct AppUpdatesView: View { } private var updateCountTitle: String { - updater.updates.count == 1 ? "1 update available" : "\(updater.updates.count) updates available" + updater.updates.count == 1 ? String(localized: "1 update available") : String(localized: "\(updater.updates.count) updates available") } private var selectedCountTitle: String { - updater.selectedCount == 1 ? "1 app selected" : "\(updater.selectedCount) apps selected" + updater.selectedCount == 1 ? String(localized: "1 app selected") : String(localized: "\(updater.selectedCount) apps selected") } private func upgradeConfirmationLabel(count: Int) -> String { - count == 1 ? "Upgrade 1 App" : "Upgrade \(count) Apps" + count == 1 ? String(localized: "Upgrade 1 App") : String(localized: "Upgrade \(count) Apps") } private var upgradeConfirmationMessage: String { let versions = confirmationSelection.map { - "\(displayName(for: $0.token)) \($0.installedVersion) to \($0.currentVersion)" + String(localized: "\(displayName(for: $0.token)) \($0.installedVersion) to \($0.currentVersion)") } let selectionSummary: String if versions.count <= 5 { selectionSummary = versions.joined(separator: ", ") } else { - selectionSummary = versions.prefix(5).joined(separator: ", ") + ", and \(versions.count - 5) more" + selectionSummary = versions.prefix(5).joined(separator: ", ") + String(localized: ", and \(versions.count - 5) more") } - return "Homebrew will upgrade \(selectionSummary). It may quit running apps and remove superseded cask versions as part of its normal upgrade process." + return String(localized: "Homebrew will upgrade \(selectionSummary). It may quit running apps and remove superseded cask versions as part of its normal upgrade process.") } } diff --git a/PureMac/Views/Tools/DuplicateFinderView.swift b/PureMac/Views/Tools/DuplicateFinderView.swift index ab2b76c..bc033ff 100644 --- a/PureMac/Views/Tools/DuplicateFinderView.swift +++ b/PureMac/Views/Tools/DuplicateFinderView.swift @@ -298,7 +298,7 @@ struct DuplicateFinderView: View { } } - private func summaryMetric(value: String, label: String, icon: String, tint: Color) -> some View { + private func summaryMetric(value: String, label: LocalizedStringKey, icon: String, tint: Color) -> some View { HStack(spacing: 9) { IconTile(systemName: icon, tint: tint, size: 30, corner: 8) VStack(alignment: .leading, spacing: 1) { @@ -327,7 +327,7 @@ struct DuplicateFinderView: View { .foregroundStyle(.secondary) } Spacer() - StatusChip(label: "\(format(group.reclaimableSize)) reviewable", systemImage: "arrow.down.circle", tint: Tint.green) + StatusChip(label: String(localized: "\(format(group.reclaimableSize)) reviewable"), systemImage: "arrow.down.circle", tint: Tint.green) Button(groupCandidatesSelected(group) ? "Clear" : "Select copies") { toggleGroupSelection(group) } @@ -386,7 +386,7 @@ struct DuplicateFinderView: View { .font(.system(size: 13, weight: keeper ? .semibold : .regular)) .lineLimit(1) if keeper { - StatusChip(label: "Keep", systemImage: "lock.fill", tint: Tint.green) + StatusChip(label: String(localized: "Keep"), systemImage: "lock.fill", tint: Tint.green) } } Text(file.url.deletingLastPathComponent().path) @@ -501,15 +501,15 @@ struct DuplicateFinderView: View { if state == .scanning, let current = progress.currentURL { return current.deletingLastPathComponent().path } - return selectedFolder?.path ?? "Exact-match cleanup with a protected copy in every group" + return selectedFolder?.path ?? String(localized: "Exact-match cleanup with a protected copy in every group") } private var progressSummary: String { switch progress.phase { case .discovering: - return "\(progress.filesInspected.formatted()) files inspected" + return String(localized: "\(progress.filesInspected.formatted()) files inspected") case .hashing: - return "\(progress.filesHashed.formatted()) of \(progress.filesToHash.formatted()) candidates · \(format(progress.bytesHashed)) verified" + return String(localized: "\(progress.filesHashed.formatted()) of \(progress.filesToHash.formatted()) candidates · \(format(progress.bytesHashed)) verified") } } @@ -560,9 +560,9 @@ struct DuplicateFinderView: View { private func chooseFolder() { guard !isMovingToTrash else { return } let panel = NSOpenPanel() - panel.title = "Choose a folder to check for duplicate files" - panel.prompt = "Scan Folder" - panel.message = "PureMac reads the selected folder and does not change anything during a scan." + panel.title = String(localized: "Choose a folder to check for duplicate files") + panel.prompt = String(localized: "Scan Folder") + panel.message = String(localized: "PureMac reads the selected folder and does not change anything during a scan.") panel.canChooseFiles = false panel.canChooseDirectories = true panel.allowsMultipleSelection = false @@ -662,12 +662,12 @@ struct DuplicateFinderView: View { applyTrashResult(movedFiles) if failures.isEmpty { actionMessage = ActionMessage( - title: "Moved to Trash", - detail: "\(movedFiles.count) files totaling \(format(movedFiles.reduce(0) { $0 + $1.size })) were moved. Every protected copy remains in place." + title: String(localized: "Moved to Trash"), + detail: String(localized: "\(movedFiles.count) files totaling \(format(movedFiles.reduce(0) { $0 + $1.size })) were moved. Every protected copy remains in place.") ) } else { actionMessage = ActionMessage( - title: movedFiles.isEmpty ? "Nothing was moved" : "Some files were not moved", + title: movedFiles.isEmpty ? String(localized: "Nothing was moved") : String(localized: "Some files were not moved"), detail: failures.joined(separator: "\n") ) } @@ -695,8 +695,8 @@ struct DuplicateFinderView: View { private func skippedSummary(_ skippedFiles: [DuplicateSkippedFile]) -> String { skippedFiles.isEmpty - ? "Every eligible file was checked." - : "\(skippedFiles.count) unsafe or unavailable items were skipped." + ? String(localized: "Every eligible file was checked.") + : String(localized: "\(skippedFiles.count) unsafe or unavailable items were skipped.") } private func format(_ bytes: Int64) -> String { diff --git a/PureMac/Views/Tools/PerformanceView.swift b/PureMac/Views/Tools/PerformanceView.swift index a93ebf9..53f6476 100644 --- a/PureMac/Views/Tools/PerformanceView.swift +++ b/PureMac/Views/Tools/PerformanceView.swift @@ -68,7 +68,7 @@ struct PerformanceView: View { deletionError = nil } } message: { - Text(deletionError ?? "Unknown error") + Text(deletionError ?? String(localized: "Unknown error")) } } @@ -97,7 +97,7 @@ struct PerformanceView: View { HStack { SectionHeader("Live resources") Spacer() - StatusChip(label: "Live", systemImage: "circle.fill", tint: Tint.green) + StatusChip(label: String(localized: "Live"), systemImage: "circle.fill", tint: Tint.green) } HStack(spacing: 26) { @@ -200,7 +200,7 @@ struct PerformanceView: View { .foregroundStyle(.secondary) } Spacer() - StatusChip(label: "\(items.count) found", tint: Tint.accent) + StatusChip(label: String(localized: "\(items.count) found"), tint: Tint.accent) Button("Login Items Settings") { openLoginItemsSettings() } @@ -247,7 +247,7 @@ struct PerformanceView: View { .foregroundStyle(.secondary) } Spacer() - StatusChip(label: "\(snapshots.count) found", tint: Tint.purple) + StatusChip(label: String(localized: "\(snapshots.count) found"), tint: Tint.purple) Button("Time Machine Settings") { openTimeMachineSettings() } @@ -304,7 +304,7 @@ struct PerformanceView: View { let formatter = ByteCountFormatter() formatter.countStyle = .memory formatter.allowedUnits = [.useGB, .useMB] - return "\(formatter.string(fromByteCount: monitor.memoryUsed)) of \(formatter.string(fromByteCount: monitor.memoryTotal))" + return String(localized: "\(formatter.string(fromByteCount: monitor.memoryUsed)) of \(formatter.string(fromByteCount: monitor.memoryTotal))") } private var deletionConfirmationPresented: Binding { @@ -316,9 +316,9 @@ struct PerformanceView: View { private var snapshotDeletionMessage: String { guard let snapshot = snapshotPendingDeletion else { - return "This permanently removes the selected Time Machine snapshot." + return String(localized: "This permanently removes the selected Time Machine snapshot.") } - return "This permanently removes \(snapshot.identifier). Its size is unknown, and the action cannot be undone." + return String(localized: "This permanently removes \(snapshot.identifier). Its size is unknown, and the action cannot be undone.") } private var deletionErrorPresented: Binding { @@ -380,7 +380,7 @@ struct PerformanceView: View { } private struct ResourceMeter: View { - let title: String + let title: LocalizedStringKey let value: Double let detail: String let tint: Color @@ -423,7 +423,7 @@ private struct StartupItemRow: View { .font(.system(size: 13, weight: .medium)) .lineLimit(1) StatusChip( - label: item.isDisabled ? "Disabled" : item.domain.title, + label: item.isDisabled ? String(localized: "Disabled") : item.domain.title, tint: item.isDisabled ? Color.secondary : Tint.accent ) ForEach(item.triggers.prefix(2), id: \.self) { trigger in @@ -431,7 +431,7 @@ private struct StartupItemRow: View { } } - Text(item.program ?? "Program not declared in this plist") + Text(item.program ?? String(localized: "Program not declared in this plist")) .font(.system(size: 11.5, design: .monospaced)) .foregroundStyle(item.program == nil ? Tint.orange : .secondary) .lineLimit(1) @@ -523,8 +523,8 @@ private struct SnapshotRow: View { private struct EmptyInspectionRow: View { let systemImage: String - let title: String - let detail: String + let title: LocalizedStringKey + let detail: LocalizedStringKey var body: some View { HStack(spacing: 12) { diff --git a/PureMac/Views/Tools/ProtectionView.swift b/PureMac/Views/Tools/ProtectionView.swift index b68831e..6bbc000 100644 --- a/PureMac/Views/Tools/ProtectionView.swift +++ b/PureMac/Views/Tools/ProtectionView.swift @@ -212,11 +212,11 @@ struct ProtectionView: View { private var auditButtonTitle: String { switch phase { case .idle: - return "Run audit" + return String(localized: "Run audit") case .running: - return "Checking" + return String(localized: "Checking") case .complete: - return "Check again" + return String(localized: "Check again") } } @@ -277,7 +277,7 @@ private struct ProtectionFindingRow: View { } private struct SettingsButton: View { - let title: String + let title: LocalizedStringKey let icon: String let action: () -> Void @@ -322,30 +322,30 @@ private extension ProtectionCheck { var title: String { switch self { case .gatekeeper: - return "Gatekeeper" + return String(localized: "Gatekeeper") case .fileVault: - return "FileVault" + return String(localized: "FileVault") case .firewall: - return "Application Firewall" + return String(localized: "Application Firewall") case .systemIntegrityProtection: - return "System Integrity Protection" + return String(localized: "System Integrity Protection") case .xProtect: - return "XProtect" + return String(localized: "XProtect") } } var actionTitle: String { switch self { case .gatekeeper: - return "Security Settings" + return String(localized: "Security Settings") case .fileVault: - return "FileVault Settings" + return String(localized: "FileVault Settings") case .firewall: - return "Firewall Settings" + return String(localized: "Firewall Settings") case .systemIntegrityProtection: - return "Apple Guide" + return String(localized: "Apple Guide") case .xProtect: - return "Software Update" + return String(localized: "Software Update") } } } @@ -387,13 +387,13 @@ private extension ProtectionStatus { func label(for check: ProtectionCheck) -> String { switch (self, check) { case (.enabled, .xProtect): - return "Installed" + return String(localized: "Installed") case (.enabled, _): - return "On" + return String(localized: "On") case (.disabled, _): - return "Off" + return String(localized: "Off") case (.unknown, _): - return "Unknown" + return String(localized: "Unknown") } } } diff --git a/PureMac/Views/Tools/SimilarPhotosView.swift b/PureMac/Views/Tools/SimilarPhotosView.swift index fbb35fc..0ac82b7 100644 --- a/PureMac/Views/Tools/SimilarPhotosView.swift +++ b/PureMac/Views/Tools/SimilarPhotosView.swift @@ -31,9 +31,9 @@ final class SimilarPhotosViewModel: ObservableObject { func chooseFolder() { let panel = NSOpenPanel() - panel.title = "Choose a photo folder" - panel.message = "PureMac compares local image thumbnails without changing your photos." - panel.prompt = "Scan Photos" + panel.title = String(localized: "Choose a photo folder") + panel.message = String(localized: "PureMac compares local image thumbnails without changing your photos.") + panel.prompt = String(localized: "Scan Photos") panel.canChooseFiles = false panel.canChooseDirectories = true panel.allowsMultipleSelection = false @@ -211,7 +211,7 @@ struct SimilarPhotosView: View { case .cancelled: messageState( title: "Scan stopped", - message: "No photos were changed. You can scan the folder again at any time.", + message: String(localized: "No photos were changed. You can scan the folder again at any time."), systemImage: "stop.circle", tint: .secondary ) @@ -230,9 +230,9 @@ struct SimilarPhotosView: View { .multilineTextAlignment(.center) .frame(maxWidth: 520) HStack(spacing: 8) { - StatusChip(label: "Review only", systemImage: "eye", tint: Tint.green) - StatusChip(label: "500 photo limit", systemImage: "photo.stack", tint: Tint.pink) - StatusChip(label: "Local files", systemImage: "lock.shield", tint: Tint.blue) + StatusChip(label: String(localized: "Review only"), systemImage: "eye", tint: Tint.green) + StatusChip(label: String(localized: "500 photo limit"), systemImage: "photo.stack", tint: Tint.pink) + StatusChip(label: String(localized: "Local files"), systemImage: "lock.shield", tint: Tint.blue) } Text("Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted.") .font(.system(size: 11.5)) @@ -252,7 +252,7 @@ struct SimilarPhotosView: View { VStack(alignment: .leading, spacing: 3) { Text(progressTitle) .font(.system(size: 16, weight: .semibold)) - Text(model.progress?.currentURL?.lastPathComponent ?? "Preparing visual comparison") + Text(model.progress?.currentURL?.lastPathComponent ?? String(localized: "Preparing visual comparison")) .font(.system(size: 12)) .foregroundStyle(.secondary) .lineLimit(1) @@ -271,18 +271,18 @@ struct SimilarPhotosView: View { HStack(spacing: 8) { StatusChip( - label: "\(model.progress?.entriesVisited ?? 0) items", + label: String(localized: "\(model.progress?.entriesVisited ?? 0) items"), systemImage: "doc.on.doc", tint: Tint.pink ) StatusChip( - label: "\(model.progress?.candidatesFound ?? 0) photos", + label: String(localized: "\(model.progress?.candidatesFound ?? 0) photos"), systemImage: "photo", tint: Tint.pink ) if let progress = model.progress, progress.photosAnalyzed > 0 { StatusChip( - label: "\(progress.photosAnalyzed) compared", + label: String(localized: "\(progress.photosAnalyzed) compared"), systemImage: "viewfinder", tint: Tint.blue ) @@ -295,11 +295,11 @@ struct SimilarPhotosView: View { private var progressTitle: String { switch model.progress?.phase { case .discovering, .none: - return "Finding local photos" + return String(localized: "Finding local photos") case .analyzing: - return "Building visual signatures" + return String(localized: "Building visual signatures") case .comparing: - return "Grouping similar shots" + return String(localized: "Grouping similar shots") } } @@ -360,13 +360,13 @@ struct SimilarPhotosView: View { VStack(alignment: .leading, spacing: 8) { HStack(spacing: 8) { - StatusChip(label: "\(result.photosAnalyzed) analyzed", systemImage: "viewfinder", tint: Tint.pink) - StatusChip(label: "\(result.matchedPhotoCount) matched", systemImage: "photo.stack", tint: Tint.blue) + StatusChip(label: String(localized: "\(result.photosAnalyzed) analyzed"), systemImage: "viewfinder", tint: Tint.pink) + StatusChip(label: String(localized: "\(result.matchedPhotoCount) matched"), systemImage: "photo.stack", tint: Tint.blue) } HStack(spacing: 8) { StatusChip(label: Self.format(result.matchedPhotoSize), systemImage: "internaldrive", tint: Tint.purple) if result.skippedItems > 0 { - StatusChip(label: "\(result.skippedItems) skipped", systemImage: "forward", tint: Tint.orange) + StatusChip(label: String(localized: "\(result.skippedItems) skipped"), systemImage: "forward", tint: Tint.orange) } } } @@ -374,7 +374,7 @@ struct SimilarPhotosView: View { Spacer() StatusChip( - label: result.isPartial ? "Sample limit reached" : "Scan complete", + label: result.isPartial ? String(localized: "Sample limit reached") : String(localized: "Scan complete"), systemImage: result.isPartial ? "exclamationmark.triangle" : "checkmark.circle", tint: result.isPartial ? Tint.orange : Tint.green ) @@ -382,7 +382,7 @@ struct SimilarPhotosView: View { } } - private func messageState(title: String, message: String, systemImage: String, tint: Color) -> some View { + private func messageState(title: LocalizedStringKey, message: String, systemImage: String, tint: Color) -> some View { CardSurface(padding: 30, elevation: .standard, tint: tint) { VStack(spacing: 13) { IconTile(systemName: systemImage, tint: tint, size: 54, corner: 15) @@ -431,7 +431,7 @@ private struct SimilarPhotoGroupCard: View { } Spacer() StatusChip( - label: "\(Int((group.similarity * 100).rounded()))% visual score", + label: String(localized: "\(Int((group.similarity * 100).rounded()))% visual score"), systemImage: "viewfinder", tint: Tint.pink ) diff --git a/PureMac/Views/Tools/SpaceExplorerView.swift b/PureMac/Views/Tools/SpaceExplorerView.swift index bdf8611..32eedd5 100644 --- a/PureMac/Views/Tools/SpaceExplorerView.swift +++ b/PureMac/Views/Tools/SpaceExplorerView.swift @@ -33,9 +33,9 @@ final class SpaceExplorerViewModel: ObservableObject { func chooseFolder() { let panel = NSOpenPanel() - panel.title = "Choose a folder to inspect" - panel.message = "PureMac measures allocated disk space without changing files." - panel.prompt = "Inspect" + panel.title = String(localized: "Choose a folder to inspect") + panel.message = String(localized: "PureMac measures allocated disk space without changing files.") + panel.prompt = String(localized: "Inspect") panel.canChooseFiles = false panel.canChooseDirectories = true panel.allowsMultipleSelection = false @@ -229,7 +229,7 @@ struct SpaceExplorerView: View { case .cancelled: messageState( title: "Scan stopped", - message: "No files were changed. Rescan this folder when you are ready.", + message: String(localized: "No files were changed. Rescan this folder when you are ready."), systemImage: "stop.circle", tint: .secondary ) @@ -264,7 +264,7 @@ struct SpaceExplorerView: View { VStack(alignment: .leading, spacing: 2) { Text("Measuring allocated space") .font(.system(size: 16, weight: .semibold)) - Text(model.progress?.currentURL.lastPathComponent ?? "Preparing scan") + Text(model.progress?.currentURL.lastPathComponent ?? String(localized: "Preparing scan")) .font(.system(size: 12)) .foregroundStyle(.secondary) .lineLimit(1) @@ -283,7 +283,7 @@ struct SpaceExplorerView: View { HStack(spacing: 8) { StatusChip( - label: "\(model.progress?.scannedItemCount ?? 0) items", + label: String(localized: "\(model.progress?.scannedItemCount ?? 0) items"), systemImage: "doc.on.doc", tint: Tint.accent ) @@ -293,10 +293,10 @@ struct SpaceExplorerView: View { tint: Tint.accent ) if let progress = model.progress, progress.skippedCount > 0 { - StatusChip(label: "\(progress.skippedCount) skipped", systemImage: "forward", tint: Tint.orange) + StatusChip(label: String(localized: "\(progress.skippedCount) skipped"), systemImage: "forward", tint: Tint.orange) } if let progress = model.progress, progress.inaccessibleCount > 0 { - StatusChip(label: "\(progress.inaccessibleCount) inaccessible", systemImage: "lock", tint: Tint.orange) + StatusChip(label: String(localized: "\(progress.inaccessibleCount) inaccessible"), systemImage: "lock", tint: Tint.orange) } } } @@ -357,17 +357,17 @@ struct SpaceExplorerView: View { VStack(alignment: .leading, spacing: 8) { HStack(spacing: 8) { - StatusChip(label: "\(result.fileCount) files", systemImage: "doc", tint: Tint.accent) - StatusChip(label: "\(result.directoryCount) folders", systemImage: "folder", tint: Tint.accent) + StatusChip(label: String(localized: "\(result.fileCount) files"), systemImage: "doc", tint: Tint.accent) + StatusChip(label: String(localized: "\(result.directoryCount) folders"), systemImage: "folder", tint: Tint.accent) } HStack(spacing: 8) { StatusChip( - label: "\(result.skippedCount) skipped", + label: String(localized: "\(result.skippedCount) skipped"), systemImage: "forward", tint: result.skippedCount == 0 ? Tint.green : Tint.orange ) StatusChip( - label: "\(result.inaccessibleCount) inaccessible", + label: String(localized: "\(result.inaccessibleCount) inaccessible"), systemImage: "lock", tint: result.inaccessibleCount == 0 ? Tint.green : Tint.orange ) @@ -377,7 +377,7 @@ struct SpaceExplorerView: View { Spacer() StatusChip( - label: result.isPartial ? "Partial result" : "Complete", + label: result.isPartial ? String(localized: "Partial result") : String(localized: "Complete"), systemImage: result.isPartial ? "exclamationmark.triangle" : "checkmark.circle", tint: result.isPartial ? Tint.orange : Tint.green ) @@ -385,7 +385,7 @@ struct SpaceExplorerView: View { } } - private func messageState(title: String, message: String, systemImage: String, tint: Color) -> some View { + private func messageState(title: LocalizedStringKey, message: String, systemImage: String, tint: Color) -> some View { CardSurface(padding: 28, elevation: .standard, tint: tint) { VStack(spacing: 12) { IconTile(systemName: systemImage, tint: tint, size: 54, corner: 15) @@ -510,17 +510,13 @@ private struct StorageEntryRow: View { private var detailText: String { if entry.isPackage { - return "Package · \(Self.countLabel(entry.fileCount, singular: "file"))" + return String(localized: "Package · \(entry.fileCount) files") } if entry.isDirectory { let childFolderCount = max(0, entry.directoryCount - 1) - return "\(Self.countLabel(entry.fileCount, singular: "file")) · \(Self.countLabel(childFolderCount, singular: "folder"))" + return String(localized: "\(entry.fileCount) files · \(childFolderCount) folders") } - return "File" - } - - private static func countLabel(_ count: Int, singular: String) -> String { - "\(count) \(singular)\(count == 1 ? "" : "s")" + return String(localized: "File") } private static func format(_ bytes: Int64) -> String { diff --git a/PureMac/ar.lproj/Localizable.strings b/PureMac/ar.lproj/Localizable.strings index 5c39871..124d01e 100644 --- a/PureMac/ar.lproj/Localizable.strings +++ b/PureMac/ar.lproj/Localizable.strings @@ -460,3 +460,410 @@ /* Simulator runtimes */ "Simulator runtime" = "وقت تشغيل المحاكي"; + +/* Current dashboard, tools, and cleanup review — English fallback until translated */ +"\nAnd %lld more." = "\nAnd %lld more."; +"%@ %@ to %@" = "%@ %@ to %@"; +"%@ available" = "%@ available"; +"%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again." = "%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again."; +"%@ did not finish within the allowed time." = "%@ did not finish within the allowed time."; +"%@ exited with status %d%@" = "%@ exited with status %d%@"; +"%@ files inspected" = "%@ files inspected"; +"%@ found across %lld categories." = "%@ found across %lld categories."; +"%@ found before the scan stopped. Results may be incomplete." = "%@ found before the scan stopped. Results may be incomplete."; +"%@ of %@" = "%@ of %@"; +"%@ of %@ candidates · %@ verified" = "%@ of %@ candidates · %@ verified"; +"%@ reviewable" = "%@ reviewable"; +"%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone." = "%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone."; +"%@ will move to Trash" = "%@ will move to Trash"; +"%lld analyzed" = "%lld analyzed"; +"%lld apps selected" = "%lld apps selected"; +"%lld areas" = "%lld areas"; +"%lld compared" = "%lld compared"; +"%lld exact copies · %@ each" = "%lld exact copies · %@ each"; +"%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access." = "%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access."; +"%lld file(s) could not be removed. Check that the items still exist and are not in use." = "%lld file(s) could not be removed. Check that the items still exist and are not in use."; +"%lld files totaling %@ were moved. Every protected copy remains in place." = "%lld files totaling %@ were moved. Every protected copy remains in place."; +"%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place." = "%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place."; +"%lld files · %lld folders" = "%lld files · %lld folders"; +"%lld folders" = "%lld folders"; +"%lld found" = "%lld found"; +"%lld inaccessible" = "%lld inaccessible"; +"%lld items · %@ found" = "%lld items · %@ found"; +"%lld matched" = "%lld matched"; +"%lld of %lld items shown" = "%lld of %lld items shown"; +"%lld percent" = "%lld percent"; +"%lld photos" = "%lld photos"; +"%lld photos · %@" = "%lld photos · %@"; +"%lld selected items will be permanently deleted. Review the list before continuing." = "%lld selected items will be permanently deleted. Review the list before continuing."; +"%lld selected · %@" = "%lld selected · %@"; +"%lld skipped" = "%lld skipped"; +"%lld unsafe or unavailable items were not scanned" = "%lld unsafe or unavailable items were not scanned"; +"%lld unsafe or unavailable items were skipped." = "%lld unsafe or unavailable items were skipped."; +"%lld updates available" = "%lld updates available"; +"%lld%% visual score" = "%lld%% visual score"; +", and %lld more" = ", and %lld more"; +"1 app selected" = "1 app selected"; +"1 update available" = "1 update available"; +"500 photo limit" = "500 photo limit"; +"A clear view of reclaimable storage and the tools that manage it." = "A clear view of reclaimable storage and the tools that manage it."; +"A selected file is missing or changed: %@" = "A selected file is missing or changed: %@"; +"A selected file no longer matches its kept copy: %@" = "A selected file no longer matches its kept copy: %@"; +"Access denied" = "Access denied"; +"Administrator removal failed: %@" = "Administrator removal failed: %@"; +"Always exclude from cleanup" = "Always exclude from cleanup"; +"Any age" = "Any age"; +"Any size" = "Any size"; +"App Updates" = "App Updates"; +"App and document packages are excluded: %@" = "App and document packages are excluded: %@"; +"App bundle missing" = "App bundle missing"; +"App downloads are checked before opening." = "App downloads are checked before opening."; +"App permissions" = "App permissions"; +"Apple Guide" = "Apple Guide"; +"Apple's built-in malware protection is installed. Update recency is managed by macOS." = "Apple's built-in malware protection is installed. Update recency is managed by macOS."; +"Application Firewall" = "Application Firewall"; +"Apps outside Homebrew" = "Apps outside Homebrew"; +"At login" = "At login"; +"Available" = "Available"; +"Available to review" = "Available to review"; +"Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions." = "Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions."; +"Browser privacy" = "Browser privacy"; +"Building visual signatures" = "Building visual signatures"; +"Camera" = "Camera"; +"Care" = "Care"; +"Changed during scan" = "Changed during scan"; +"Check Again" = "Check Again"; +"Check again" = "Check again"; +"Check built-in safeguards" = "Check built-in safeguards"; +"Check installed apps for new versions" = "Check installed apps for new versions"; +"Check installed cask apps" = "Check installed cask apps"; +"Checked %@. Unknown means the setting could not be confirmed." = "Checked %@. Unknown means the setting could not be confirmed."; +"Checking" = "Checking"; +"Checking Homebrew casks" = "Checking Homebrew casks"; +"Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation." = "Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation."; +"Checking your Mac. Nothing is removed during a scan." = "Checking your Mac. Nothing is removed during a scan."; +"Choose Another Folder" = "Choose Another Folder"; +"Choose Folder" = "Choose Folder"; +"Choose a Folder" = "Choose a Folder"; +"Choose a folder of photos" = "Choose a folder of photos"; +"Choose a folder to check for duplicate files" = "Choose a folder to check for duplicate files"; +"Choose a folder to inspect" = "Choose a folder to inspect"; +"Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically." = "Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically."; +"Choose a photo folder" = "Choose a photo folder"; +"Choose where to look" = "Choose where to look"; +"Chrome privacy guide" = "Chrome privacy guide"; +"Clean selected items" = "Clean selected items"; +"Cleaning selected items" = "Cleaning selected items"; +"Cleanup Exclusions" = "Cleanup Exclusions"; +"Cleanup finished and disk information is refreshing." = "Cleanup finished and disk information is refreshing."; +"Cleanup plan" = "Cleanup plan"; +"Clear Selection" = "Clear Selection"; +"Clear filters" = "Clear filters"; +"Clear search" = "Clear search"; +"Clear selection" = "Clear selection"; +"Cloud-only file" = "Cloud-only file"; +"Collapse duplicate group" = "Collapse duplicate group"; +"Compare visually similar photos" = "Compare visually similar photos"; +"Conditional keep alive" = "Conditional keep alive"; +"Copy path" = "Copy path"; +"Could not inspect %@" = "Could not inspect %@"; +"Could not list Time Machine snapshots" = "Could not list Time Machine snapshots"; +"Could not read" = "Could not read"; +"Could not read %@" = "Could not read %@"; +"Couldn't check for updates" = "Couldn't check for updates"; +"Current scan path" = "Current scan path"; +"Delete" = "Delete"; +"Delete Snapshot" = "Delete Snapshot"; +"Delete local snapshot?" = "Delete local snapshot?"; +"Deselect visible" = "Deselect visible"; +"Developer Cleanup" = "Developer Cleanup"; +"Disabled" = "Disabled"; +"Downloaded apps are not being assessed by Gatekeeper." = "Downloaded apps are not being assessed by Gatekeeper."; +"Drag to tilt" = "Drag to tilt"; +"Duplicate Finder" = "Duplicate Finder"; +"Duplicate groups" = "Duplicate groups"; +"Every %lld seconds" = "Every %lld seconds"; +"Every eligible file was checked." = "Every eligible file was checked."; +"Exact-match cleanup with a protected copy in every group" = "Exact-match cleanup with a protected copy in every group"; +"Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it." = "Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it."; +"Expand duplicate group" = "Expand duplicate group"; +"File" = "File"; +"FileVault" = "FileVault"; +"FileVault Settings" = "FileVault Settings"; +"Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them." = "Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them."; +"Filter cleanup files" = "Filter cleanup files"; +"Find a file or path" = "Find a file or path"; +"Find copies that are exactly the same" = "Find copies that are exactly the same"; +"Find space to reclaim." = "Find space to reclaim."; +"Find visually related shots in a folder and review them side by side." = "Find visually related shots in a folder and review them side by side."; +"Find what uses the most disk space" = "Find what uses the most disk space"; +"Finding local photos" = "Finding local photos"; +"Firewall Settings" = "Firewall Settings"; +"Focused utilities for storage, apps, and system maintenance" = "Focused utilities for storage, apps, and system maintenance"; +"Folder could not be inspected" = "Folder could not be inspected"; +"Full Disk Access is off" = "Full Disk Access is off"; +"Full access" = "Full access"; +"Gatekeeper" = "Gatekeeper"; +"Group %lld" = "Group %lld"; +"Grouping similar shots" = "Grouping similar shots"; +"Hard-linked copy" = "Hard-linked copy"; +"Homebrew apps are up to date" = "Homebrew apps are up to date"; +"Homebrew did not finish before the operation timed out." = "Homebrew did not finish before the operation timed out."; +"Homebrew finished, but %lld selected apps still report updates." = "Homebrew finished, but %lld selected apps still report updates."; +"Homebrew finished, but 1 selected app still reports an update." = "Homebrew finished, but 1 selected app still reports an update."; +"Homebrew finished. Check again to verify installed versions." = "Homebrew finished. Check again to verify installed versions."; +"Homebrew not found" = "Homebrew not found"; +"Homebrew produced more output than PureMac could safely retain." = "Homebrew produced more output than PureMac could safely retain."; +"Homebrew returned an invalid cask identifier: %@" = "Homebrew returned an invalid cask identifier: %@"; +"Homebrew returned update information PureMac could not read." = "Homebrew returned update information PureMac could not read."; +"Homebrew updated the %lld selected apps." = "Homebrew updated the %lld selected apps."; +"Homebrew updated the selected app." = "Homebrew updated the selected app."; +"Homebrew was not found in a standard installation location." = "Homebrew was not found in a standard installation location."; +"Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process." = "Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process."; +"Includes %lld selected items hidden by filters." = "Includes %lld selected items hidden by filters."; +"Incoming network connections are filtered." = "Incoming network connections are filtered."; +"Inspect" = "Inspect"; +"Inspect a folder by allocated disk space. Your files are never changed." = "Inspect a folder by allocated disk space. Your files are never changed."; +"Inspect memory and background activity" = "Inspect memory and background activity"; +"Inspect startup items and local snapshots again" = "Inspect startup items and local snapshots again"; +"Inspected %@ files in %@. %@" = "Inspected %@ files in %@. %@"; +"Inspecting startup items and local snapshots…" = "Inspecting startup items and local snapshots…"; +"Inspection stopped" = "Inspection stopped"; +"Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels." = "Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels."; +"Installed" = "Installed"; +"Installed %@" = "Installed %@"; +"Keep" = "Keep"; +"Keep PureMac open until this pass finishes." = "Keep PureMac open until this pass finishes."; +"Keep alive" = "Keep alive"; +"Largest first" = "Largest first"; +"Largest items" = "Largest items"; +"Last activity: %@" = "Last activity: %@"; +"Last checked" = "Last checked"; +"Launch agents and daemons installed outside macOS system folders" = "Launch agents and daemons installed outside macOS system folders"; +"Leftovers" = "Leftovers"; +"Live" = "Live"; +"Live resources" = "Live resources"; +"Local and private" = "Local and private"; +"Local files" = "Local files"; +"Local snapshot" = "Local snapshot"; +"Local snapshots" = "Local snapshots"; +"Location" = "Location"; +"Login Items Settings" = "Login Items Settings"; +"Looking through files" = "Looking through files"; +"Mac storage" = "Mac storage"; +"Managed cleanup action" = "Managed cleanup action"; +"Matching files" = "Matching files"; +"Measuring allocated space" = "Measuring allocated space"; +"Memory pressure use" = "Memory pressure use"; +"Microphone" = "Microphone"; +"Modified" = "Modified"; +"Move selected duplicates to Trash?" = "Move selected duplicates to Trash?"; +"Moved to Trash" = "Moved to Trash"; +"Name" = "Name"; +"Needs attention" = "Needs attention"; +"Network state" = "Network state"; +"No exact duplicates found" = "No exact duplicates found"; +"No excluded paths" = "No excluded paths"; +"No files found" = "No files found"; +"No files were changed. Rescan this folder when you are ready." = "No files were changed. Rescan this folder when you are ready."; +"No launchd items found" = "No launchd items found"; +"No local snapshots reported" = "No local snapshots reported"; +"No matching files" = "No matching files"; +"No measurable items" = "No measurable items"; +"No photos were changed. You can scan the folder again at any time." = "No photos were changed. You can scan the folder again at any time."; +"No reclaimable items were found before the scan stopped." = "No reclaimable items were found before the scan stopped."; +"No reclaimable items were found in the areas checked." = "No reclaimable items were found in the areas checked."; +"No results yet" = "No results yet"; +"No scan run yet" = "No scan run yet"; +"No similar groups found" = "No similar groups found"; +"No updates are currently available for the cask apps Homebrew manages." = "No updates are currently available for the cask apps Homebrew manages."; +"Nothing selected" = "Nothing selected"; +"Nothing to clean" = "Nothing to clean"; +"Nothing was moved" = "Nothing was moved"; +"Off" = "Off"; +"Older than 30 days" = "Older than 30 days"; +"Older than 6 months" = "Older than 6 months"; +"Older than a year" = "Older than a year"; +"Oldest first" = "Oldest first"; +"On" = "On"; +"Open Activity Monitor" = "Open Activity Monitor"; +"Open App Store Updates" = "Open App Store Updates"; +"Open Folder" = "Open Folder"; +"Open a category to review individual items" = "Open a category to review individual items"; +"Open folder" = "Open folder"; +"Open the App Store updates page. Direct-download apps may provide their own updater." = "Open the App Store updates page. Direct-download apps may provide their own updater."; +"Opens a folder picker" = "Opens a folder picker"; +"Over 1 GB" = "Over 1 GB"; +"Over 10 GB" = "Over 10 GB"; +"Over 100 MB" = "Over 100 MB"; +"Package" = "Package"; +"Package contents" = "Package contents"; +"Package · %lld files" = "Package · %lld files"; +"Partial result" = "Partial result"; +"Partial results" = "Partial results"; +"Performance" = "Performance"; +"Permanently delete %@?" = "Permanently delete %@?"; +"Permanently remove %lld items" = "Permanently remove %lld items"; +"Personal data or an optional cleanup action. Left unselected by default." = "Personal data or an optional cleanup action. Left unselected by default."; +"Photos could not be compared" = "Photos could not be compared"; +"Pinned" = "Pinned"; +"Preparing scan" = "Preparing scan"; +"Preparing the next area…" = "Preparing the next area…"; +"Preparing visual comparison" = "Preparing visual comparison"; +"Program not declared in this plist" = "Program not declared in this plist"; +"Protected caches and app containers will be skipped." = "Protected caches and app containers will be skipped."; +"Protected copy" = "Protected copy"; +"Protected system locations and processes are restricted." = "Protected system locations and processes are restricted."; +"Protection" = "Protection"; +"PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review." = "PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review."; +"PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed." = "PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed."; +"PureMac compares local image thumbnails without changing your photos." = "PureMac compares local image thumbnails without changing your photos."; +"PureMac could not confirm the local XProtect installation." = "PureMac could not confirm the local XProtect installation."; +"PureMac could not read this setting." = "PureMac could not read this setting."; +"PureMac did not find removable items in the selected scan areas." = "PureMac did not find removable items in the selected scan areas."; +"PureMac measures allocated disk space without changing files." = "PureMac measures allocated disk space without changing files."; +"PureMac reads the selected folder and does not change anything during a scan." = "PureMac reads the selected folder and does not change anything during a scan."; +"PureMac will ask Homebrew for available versions when you start the check." = "PureMac will ask Homebrew for available versions when you start the check."; +"PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing." = "PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing."; +"PureMac.app" = "PureMac.app"; +"Ready for protected locations" = "Ready for protected locations"; +"Refresh disk information" = "Refresh disk information"; +"Refreshing package data and comparing installed versions." = "Refreshing package data and comparing installed versions."; +"Refused to delete %lld protected item(s) (home credential directory or similar)." = "Refused to delete %lld protected item(s) (home credential directory or similar)."; +"Remove %lld files" = "Remove %lld files"; +"Remove %lld items" = "Remove %lld items"; +"Remove apps and their related files" = "Remove apps and their related files"; +"Remove selected app files?" = "Remove selected app files?"; +"Remove selected files?" = "Remove selected files?"; +"Remove selected leftovers?" = "Remove selected leftovers?"; +"Removing the items you selected." = "Removing the items you selected."; +"Reveal %@ in Finder" = "Reveal %@ in Finder"; +"Reveal plist in Finder" = "Reveal plist in Finder"; +"Reveal skipped item in Finder" = "Reveal skipped item in Finder"; +"Review and update apps installed as Homebrew casks." = "Review and update apps installed as Homebrew casks."; +"Review built-in privacy and safety checks" = "Review built-in privacy and safety checks"; +"Review matching files side by side" = "Review matching files side by side"; +"Review only" = "Review only"; +"Review removal" = "Review removal"; +"Review the groups before acting" = "Review the groups before acting"; +"Review the macOS safeguards that protect apps, disks, network access, and system files." = "Review the macOS safeguards that protect apps, disks, network access, and system files."; +"Review the results and choose exactly what to remove." = "Review the results and choose exactly what to remove."; +"Review which apps can access private data and hardware." = "Review which apps can access private data and hardware."; +"Run audit" = "Run audit"; +"Run the scan again when you are ready to check every area." = "Run the scan again when you are ready to check every area."; +"Safari privacy guide" = "Safari privacy guide"; +"Safari: Settings > Privacy" = "Safari: Settings > Privacy"; +"Sample limit reached" = "Sample limit reached"; +"Scan Another Folder" = "Scan Another Folder"; +"Scan Folder" = "Scan Folder"; +"Scan Photos" = "Scan Photos"; +"Scan again" = "Scan again"; +"Scan complete" = "Scan complete"; +"Scan could not finish" = "Scan could not finish"; +"Scan first, then review the exact files before removing anything." = "Scan first, then review the exact files before removing anything."; +"Scan stopped" = "Scan stopped"; +"Scan this Mac" = "Scan this Mac"; +"Scan this category" = "Scan this category"; +"Scanning %@…" = "Scanning %@…"; +"Scheduled" = "Scheduled"; +"Security Settings" = "Security Settings"; +"See current resource use and review what starts in the background." = "See current resource use and review what starts in the background."; +"See what is taking up space" = "See what is taking up space"; +"Select %@" = "Select %@"; +"Select a tool from the sidebar." = "Select a tool from the sidebar."; +"Select any folder to see which files and subfolders occupy the most disk space." = "Select any folder to see which files and subfolders occupy the most disk space."; +"Select apps to update" = "Select apps to update"; +"Select at least one app to update." = "Select at least one app to update."; +"Select copies" = "Select copies"; +"Select the apps Homebrew should upgrade." = "Select the apps Homebrew should upgrade."; +"Select the extra copies you want to review" = "Select the extra copies you want to review"; +"Select visible" = "Select visible"; +"Selected" = "Selected"; +"Selected cleanup items are permanently removed." = "Selected cleanup items are permanently removed."; +"Share of scanned space" = "Share of scanned space"; +"Shares storage with %@" = "Shares storage with %@"; +"Show %@ in Finder" = "Show %@ in Finder"; +"Show in Finder" = "Show in Finder"; +"Shows a confirmation before moving the selected copies" = "Shows a confirmation before moving the selected copies"; +"Similar Photos" = "Similar Photos"; +"Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality." = "Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality."; +"Size unavailable" = "Size unavailable"; +"Skipped items" = "Skipped items"; +"Smallest first" = "Smallest first"; +"Snapshot could not be deleted" = "Snapshot could not be deleted"; +"Software Update" = "Software Update"; +"Some contents were skipped or inaccessible" = "Some contents were skipped or inaccessible"; +"Some files were not moved" = "Some files were not moved"; +"Some information could not be read (%lld)" = "Some information could not be read (%lld)"; +"Some items need attention" = "Some items need attention"; +"Some locations are unavailable" = "Some locations are unavailable"; +"Some protected locations are unavailable. Full Disk Access allows a more complete scan." = "Some protected locations are unavailable. Full Disk Access allows a more complete scan."; +"Some selected files" = "Some selected files"; +"Sort" = "Sort"; +"Space Explorer" = "Space Explorer"; +"Startup and background items" = "Startup and background items"; +"Stop" = "Stop"; +"Stop scan" = "Stop scan"; +"Stopped" = "Stopped"; +"Stopping keeps the results found so far." = "Stopping keeps the results found so far."; +"Stops scanning without changing any files" = "Stops scanning without changing any files"; +"Suggested groups" = "Suggested groups"; +"Symbolic link" = "Symbolic link"; +"Symbolic links and cloud-only items are excluded." = "Symbolic links and cloud-only items are excluded."; +"Symbolic links cannot be scanned: %@" = "Symbolic links cannot be scanned: %@"; +"Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted." = "Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted."; +"System Integrity Protection" = "System Integrity Protection"; +"System Integrity Protection is turned off." = "System Integrity Protection is turned off."; +"System daemon" = "System daemon"; +"System update" = "System update"; +"System-wide agent" = "System-wide agent"; +"The analyzed photos did not meet PureMac's visual similarity threshold." = "The analyzed photos did not meet PureMac's visual similarity threshold."; +"The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan." = "The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan."; +"The check timed out." = "The check timed out."; +"The copy marked Keep is missing or changed: %@" = "The copy marked Keep is missing or changed: %@"; +"The inspected user and third-party launch folders are empty." = "The inspected user and third-party launch folders are empty."; +"The launch item is not a property-list dictionary." = "The launch item is not a property-list dictionary."; +"The macOS application firewall is turned off." = "The macOS application firewall is turned off."; +"The protected copy cannot be moved to Trash: %@" = "The protected copy cannot be moved to Trash: %@"; +"The scan stopped. Available results are ready to review." = "The scan stopped. Available results are ready to review."; +"The selected folder cannot be scanned: %@" = "The selected folder cannot be scanned: %@"; +"The selected folder could not be read: %@" = "The selected folder could not be read: %@"; +"The selected folder is stored in the cloud and has not been downloaded: %@" = "The selected folder is stored in the cloud and has not been downloaded: %@"; +"The selected item is not a folder: %@" = "The selected item is not a folder: %@"; +"The startup disk is encrypted with FileVault." = "The startup disk is encrypted with FileVault."; +"The startup disk is not encrypted with FileVault." = "The startup disk is not encrypted with FileVault."; +"The system returned an unrecognized status." = "The system returned an unrecognized status."; +"There are no cleanup items in this category." = "There are no cleanup items in this category."; +"This folder is empty or its contents were excluded from the scan." = "This folder is empty or its contents were excluded from the scan."; +"This permanently removes %@. Its size is unknown, and the action cannot be undone." = "This permanently removes %@. Its size is unknown, and the action cannot be undone."; +"This permanently removes the selected Time Machine snapshot." = "This permanently removes the selected Time Machine snapshot."; +"This snapshot does not have a verified Time Machine timestamp." = "This snapshot does not have a verified Time Machine timestamp."; +"Time Machine" = "Time Machine"; +"Time Machine Settings" = "Time Machine Settings"; +"Time Machine did not report any snapshots for the startup disk." = "Time Machine did not report any snapshots for the startup disk."; +"Time Machine snapshots are unavailable" = "Time Machine snapshots are unavailable"; +"Time Machine snapshots can be reviewed and removed individually" = "Time Machine snapshots can be reviewed and removed individually"; +"Tools" = "Tools"; +"Try Again" = "Try Again"; +"Try another name, size, or date range." = "Try another name, size, or date range."; +"Uninstaller" = "Uninstaller"; +"Unknown" = "Unknown"; +"Unknown error" = "Unknown error"; +"Updates from Homebrew" = "Updates from Homebrew"; +"Updating…" = "Updating…"; +"Upgrade %lld Apps" = "Upgrade %lld Apps"; +"Upgrade 1 App" = "Upgrade 1 App"; +"Upgrade selected apps?" = "Upgrade selected apps?"; +"User agent" = "User agent"; +"Verifying possible matches" = "Verifying possible matches"; +"Watches folders" = "Watches folders"; +"Watches paths" = "Watches paths"; +"XProtect" = "XProtect"; +"allocated in this folder" = "allocated in this folder"; +"definitions %@" = "definitions %@"; +"engine %@" = "engine %@"; +"macOS does not report reliable per-snapshot sizes in this listing." = "macOS does not report reliable per-snapshot sizes in this listing."; +"reclaimed" = "reclaimed"; +"similar group" = "similar group"; +"similar groups" = "similar groups"; +"tmutil is not available on this Mac." = "tmutil is not available on this Mac."; diff --git a/PureMac/en.lproj/Localizable.strings b/PureMac/en.lproj/Localizable.strings index 3943ba8..5937a89 100644 --- a/PureMac/en.lproj/Localizable.strings +++ b/PureMac/en.lproj/Localizable.strings @@ -460,3 +460,410 @@ /* Simulator runtimes */ "Simulator runtime" = "Simulator runtime"; + +/* Current dashboard, tools, and cleanup review */ +"\nAnd %lld more." = "\nAnd %lld more."; +"%@ %@ to %@" = "%@ %@ to %@"; +"%@ available" = "%@ available"; +"%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again." = "%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again."; +"%@ did not finish within the allowed time." = "%@ did not finish within the allowed time."; +"%@ exited with status %d%@" = "%@ exited with status %d%@"; +"%@ files inspected" = "%@ files inspected"; +"%@ found across %lld categories." = "%@ found across %lld categories."; +"%@ found before the scan stopped. Results may be incomplete." = "%@ found before the scan stopped. Results may be incomplete."; +"%@ of %@" = "%@ of %@"; +"%@ of %@ candidates · %@ verified" = "%@ of %@ candidates · %@ verified"; +"%@ reviewable" = "%@ reviewable"; +"%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone." = "%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone."; +"%@ will move to Trash" = "%@ will move to Trash"; +"%lld analyzed" = "%lld analyzed"; +"%lld apps selected" = "%lld apps selected"; +"%lld areas" = "%lld areas"; +"%lld compared" = "%lld compared"; +"%lld exact copies · %@ each" = "%lld exact copies · %@ each"; +"%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access." = "%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access."; +"%lld file(s) could not be removed. Check that the items still exist and are not in use." = "%lld file(s) could not be removed. Check that the items still exist and are not in use."; +"%lld files totaling %@ were moved. Every protected copy remains in place." = "%lld files totaling %@ were moved. Every protected copy remains in place."; +"%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place." = "%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place."; +"%lld files · %lld folders" = "%lld files · %lld folders"; +"%lld folders" = "%lld folders"; +"%lld found" = "%lld found"; +"%lld inaccessible" = "%lld inaccessible"; +"%lld items · %@ found" = "%lld items · %@ found"; +"%lld matched" = "%lld matched"; +"%lld of %lld items shown" = "%lld of %lld items shown"; +"%lld percent" = "%lld percent"; +"%lld photos" = "%lld photos"; +"%lld photos · %@" = "%lld photos · %@"; +"%lld selected items will be permanently deleted. Review the list before continuing." = "%lld selected items will be permanently deleted. Review the list before continuing."; +"%lld selected · %@" = "%lld selected · %@"; +"%lld skipped" = "%lld skipped"; +"%lld unsafe or unavailable items were not scanned" = "%lld unsafe or unavailable items were not scanned"; +"%lld unsafe or unavailable items were skipped." = "%lld unsafe or unavailable items were skipped."; +"%lld updates available" = "%lld updates available"; +"%lld%% visual score" = "%lld%% visual score"; +", and %lld more" = ", and %lld more"; +"1 app selected" = "1 app selected"; +"1 update available" = "1 update available"; +"500 photo limit" = "500 photo limit"; +"A clear view of reclaimable storage and the tools that manage it." = "A clear view of reclaimable storage and the tools that manage it."; +"A selected file is missing or changed: %@" = "A selected file is missing or changed: %@"; +"A selected file no longer matches its kept copy: %@" = "A selected file no longer matches its kept copy: %@"; +"Access denied" = "Access denied"; +"Administrator removal failed: %@" = "Administrator removal failed: %@"; +"Always exclude from cleanup" = "Always exclude from cleanup"; +"Any age" = "Any age"; +"Any size" = "Any size"; +"App Updates" = "App Updates"; +"App and document packages are excluded: %@" = "App and document packages are excluded: %@"; +"App bundle missing" = "App bundle missing"; +"App downloads are checked before opening." = "App downloads are checked before opening."; +"App permissions" = "App permissions"; +"Apple Guide" = "Apple Guide"; +"Apple's built-in malware protection is installed. Update recency is managed by macOS." = "Apple's built-in malware protection is installed. Update recency is managed by macOS."; +"Application Firewall" = "Application Firewall"; +"Apps outside Homebrew" = "Apps outside Homebrew"; +"At login" = "At login"; +"Available" = "Available"; +"Available to review" = "Available to review"; +"Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions." = "Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions."; +"Browser privacy" = "Browser privacy"; +"Building visual signatures" = "Building visual signatures"; +"Camera" = "Camera"; +"Care" = "Care"; +"Changed during scan" = "Changed during scan"; +"Check Again" = "Check Again"; +"Check again" = "Check again"; +"Check built-in safeguards" = "Check built-in safeguards"; +"Check installed apps for new versions" = "Check installed apps for new versions"; +"Check installed cask apps" = "Check installed cask apps"; +"Checked %@. Unknown means the setting could not be confirmed." = "Checked %@. Unknown means the setting could not be confirmed."; +"Checking" = "Checking"; +"Checking Homebrew casks" = "Checking Homebrew casks"; +"Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation." = "Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation."; +"Checking your Mac. Nothing is removed during a scan." = "Checking your Mac. Nothing is removed during a scan."; +"Choose Another Folder" = "Choose Another Folder"; +"Choose Folder" = "Choose Folder"; +"Choose a Folder" = "Choose a Folder"; +"Choose a folder of photos" = "Choose a folder of photos"; +"Choose a folder to check for duplicate files" = "Choose a folder to check for duplicate files"; +"Choose a folder to inspect" = "Choose a folder to inspect"; +"Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically." = "Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically."; +"Choose a photo folder" = "Choose a photo folder"; +"Choose where to look" = "Choose where to look"; +"Chrome privacy guide" = "Chrome privacy guide"; +"Clean selected items" = "Clean selected items"; +"Cleaning selected items" = "Cleaning selected items"; +"Cleanup Exclusions" = "Cleanup Exclusions"; +"Cleanup finished and disk information is refreshing." = "Cleanup finished and disk information is refreshing."; +"Cleanup plan" = "Cleanup plan"; +"Clear Selection" = "Clear Selection"; +"Clear filters" = "Clear filters"; +"Clear search" = "Clear search"; +"Clear selection" = "Clear selection"; +"Cloud-only file" = "Cloud-only file"; +"Collapse duplicate group" = "Collapse duplicate group"; +"Compare visually similar photos" = "Compare visually similar photos"; +"Conditional keep alive" = "Conditional keep alive"; +"Copy path" = "Copy path"; +"Could not inspect %@" = "Could not inspect %@"; +"Could not list Time Machine snapshots" = "Could not list Time Machine snapshots"; +"Could not read" = "Could not read"; +"Could not read %@" = "Could not read %@"; +"Couldn't check for updates" = "Couldn't check for updates"; +"Current scan path" = "Current scan path"; +"Delete" = "Delete"; +"Delete Snapshot" = "Delete Snapshot"; +"Delete local snapshot?" = "Delete local snapshot?"; +"Deselect visible" = "Deselect visible"; +"Developer Cleanup" = "Developer Cleanup"; +"Disabled" = "Disabled"; +"Downloaded apps are not being assessed by Gatekeeper." = "Downloaded apps are not being assessed by Gatekeeper."; +"Drag to tilt" = "Drag to tilt"; +"Duplicate Finder" = "Duplicate Finder"; +"Duplicate groups" = "Duplicate groups"; +"Every %lld seconds" = "Every %lld seconds"; +"Every eligible file was checked." = "Every eligible file was checked."; +"Exact-match cleanup with a protected copy in every group" = "Exact-match cleanup with a protected copy in every group"; +"Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it." = "Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it."; +"Expand duplicate group" = "Expand duplicate group"; +"File" = "File"; +"FileVault" = "FileVault"; +"FileVault Settings" = "FileVault Settings"; +"Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them." = "Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them."; +"Filter cleanup files" = "Filter cleanup files"; +"Find a file or path" = "Find a file or path"; +"Find copies that are exactly the same" = "Find copies that are exactly the same"; +"Find space to reclaim." = "Find space to reclaim."; +"Find visually related shots in a folder and review them side by side." = "Find visually related shots in a folder and review them side by side."; +"Find what uses the most disk space" = "Find what uses the most disk space"; +"Finding local photos" = "Finding local photos"; +"Firewall Settings" = "Firewall Settings"; +"Focused utilities for storage, apps, and system maintenance" = "Focused utilities for storage, apps, and system maintenance"; +"Folder could not be inspected" = "Folder could not be inspected"; +"Full Disk Access is off" = "Full Disk Access is off"; +"Full access" = "Full access"; +"Gatekeeper" = "Gatekeeper"; +"Group %lld" = "Group %lld"; +"Grouping similar shots" = "Grouping similar shots"; +"Hard-linked copy" = "Hard-linked copy"; +"Homebrew apps are up to date" = "Homebrew apps are up to date"; +"Homebrew did not finish before the operation timed out." = "Homebrew did not finish before the operation timed out."; +"Homebrew finished, but %lld selected apps still report updates." = "Homebrew finished, but %lld selected apps still report updates."; +"Homebrew finished, but 1 selected app still reports an update." = "Homebrew finished, but 1 selected app still reports an update."; +"Homebrew finished. Check again to verify installed versions." = "Homebrew finished. Check again to verify installed versions."; +"Homebrew not found" = "Homebrew not found"; +"Homebrew produced more output than PureMac could safely retain." = "Homebrew produced more output than PureMac could safely retain."; +"Homebrew returned an invalid cask identifier: %@" = "Homebrew returned an invalid cask identifier: %@"; +"Homebrew returned update information PureMac could not read." = "Homebrew returned update information PureMac could not read."; +"Homebrew updated the %lld selected apps." = "Homebrew updated the %lld selected apps."; +"Homebrew updated the selected app." = "Homebrew updated the selected app."; +"Homebrew was not found in a standard installation location." = "Homebrew was not found in a standard installation location."; +"Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process." = "Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process."; +"Includes %lld selected items hidden by filters." = "Includes %lld selected items hidden by filters."; +"Incoming network connections are filtered." = "Incoming network connections are filtered."; +"Inspect" = "Inspect"; +"Inspect a folder by allocated disk space. Your files are never changed." = "Inspect a folder by allocated disk space. Your files are never changed."; +"Inspect memory and background activity" = "Inspect memory and background activity"; +"Inspect startup items and local snapshots again" = "Inspect startup items and local snapshots again"; +"Inspected %@ files in %@. %@" = "Inspected %@ files in %@. %@"; +"Inspecting startup items and local snapshots…" = "Inspecting startup items and local snapshots…"; +"Inspection stopped" = "Inspection stopped"; +"Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels." = "Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels."; +"Installed" = "Installed"; +"Installed %@" = "Installed %@"; +"Keep" = "Keep"; +"Keep PureMac open until this pass finishes." = "Keep PureMac open until this pass finishes."; +"Keep alive" = "Keep alive"; +"Largest first" = "Largest first"; +"Largest items" = "Largest items"; +"Last activity: %@" = "Last activity: %@"; +"Last checked" = "Last checked"; +"Launch agents and daemons installed outside macOS system folders" = "Launch agents and daemons installed outside macOS system folders"; +"Leftovers" = "Leftovers"; +"Live" = "Live"; +"Live resources" = "Live resources"; +"Local and private" = "Local and private"; +"Local files" = "Local files"; +"Local snapshot" = "Local snapshot"; +"Local snapshots" = "Local snapshots"; +"Location" = "Location"; +"Login Items Settings" = "Login Items Settings"; +"Looking through files" = "Looking through files"; +"Mac storage" = "Mac storage"; +"Managed cleanup action" = "Managed cleanup action"; +"Matching files" = "Matching files"; +"Measuring allocated space" = "Measuring allocated space"; +"Memory pressure use" = "Memory pressure use"; +"Microphone" = "Microphone"; +"Modified" = "Modified"; +"Move selected duplicates to Trash?" = "Move selected duplicates to Trash?"; +"Moved to Trash" = "Moved to Trash"; +"Name" = "Name"; +"Needs attention" = "Needs attention"; +"Network state" = "Network state"; +"No exact duplicates found" = "No exact duplicates found"; +"No excluded paths" = "No excluded paths"; +"No files found" = "No files found"; +"No files were changed. Rescan this folder when you are ready." = "No files were changed. Rescan this folder when you are ready."; +"No launchd items found" = "No launchd items found"; +"No local snapshots reported" = "No local snapshots reported"; +"No matching files" = "No matching files"; +"No measurable items" = "No measurable items"; +"No photos were changed. You can scan the folder again at any time." = "No photos were changed. You can scan the folder again at any time."; +"No reclaimable items were found before the scan stopped." = "No reclaimable items were found before the scan stopped."; +"No reclaimable items were found in the areas checked." = "No reclaimable items were found in the areas checked."; +"No results yet" = "No results yet"; +"No scan run yet" = "No scan run yet"; +"No similar groups found" = "No similar groups found"; +"No updates are currently available for the cask apps Homebrew manages." = "No updates are currently available for the cask apps Homebrew manages."; +"Nothing selected" = "Nothing selected"; +"Nothing to clean" = "Nothing to clean"; +"Nothing was moved" = "Nothing was moved"; +"Off" = "Off"; +"Older than 30 days" = "Older than 30 days"; +"Older than 6 months" = "Older than 6 months"; +"Older than a year" = "Older than a year"; +"Oldest first" = "Oldest first"; +"On" = "On"; +"Open Activity Monitor" = "Open Activity Monitor"; +"Open App Store Updates" = "Open App Store Updates"; +"Open Folder" = "Open Folder"; +"Open a category to review individual items" = "Open a category to review individual items"; +"Open folder" = "Open folder"; +"Open the App Store updates page. Direct-download apps may provide their own updater." = "Open the App Store updates page. Direct-download apps may provide their own updater."; +"Opens a folder picker" = "Opens a folder picker"; +"Over 1 GB" = "Over 1 GB"; +"Over 10 GB" = "Over 10 GB"; +"Over 100 MB" = "Over 100 MB"; +"Package" = "Package"; +"Package contents" = "Package contents"; +"Package · %lld files" = "Package · %lld files"; +"Partial result" = "Partial result"; +"Partial results" = "Partial results"; +"Performance" = "Performance"; +"Permanently delete %@?" = "Permanently delete %@?"; +"Permanently remove %lld items" = "Permanently remove %lld items"; +"Personal data or an optional cleanup action. Left unselected by default." = "Personal data or an optional cleanup action. Left unselected by default."; +"Photos could not be compared" = "Photos could not be compared"; +"Pinned" = "Pinned"; +"Preparing scan" = "Preparing scan"; +"Preparing the next area…" = "Preparing the next area…"; +"Preparing visual comparison" = "Preparing visual comparison"; +"Program not declared in this plist" = "Program not declared in this plist"; +"Protected caches and app containers will be skipped." = "Protected caches and app containers will be skipped."; +"Protected copy" = "Protected copy"; +"Protected system locations and processes are restricted." = "Protected system locations and processes are restricted."; +"Protection" = "Protection"; +"PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review." = "PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review."; +"PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed." = "PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed."; +"PureMac compares local image thumbnails without changing your photos." = "PureMac compares local image thumbnails without changing your photos."; +"PureMac could not confirm the local XProtect installation." = "PureMac could not confirm the local XProtect installation."; +"PureMac could not read this setting." = "PureMac could not read this setting."; +"PureMac did not find removable items in the selected scan areas." = "PureMac did not find removable items in the selected scan areas."; +"PureMac measures allocated disk space without changing files." = "PureMac measures allocated disk space without changing files."; +"PureMac reads the selected folder and does not change anything during a scan." = "PureMac reads the selected folder and does not change anything during a scan."; +"PureMac will ask Homebrew for available versions when you start the check." = "PureMac will ask Homebrew for available versions when you start the check."; +"PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing." = "PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing."; +"PureMac.app" = "PureMac.app"; +"Ready for protected locations" = "Ready for protected locations"; +"Refresh disk information" = "Refresh disk information"; +"Refreshing package data and comparing installed versions." = "Refreshing package data and comparing installed versions."; +"Refused to delete %lld protected item(s) (home credential directory or similar)." = "Refused to delete %lld protected item(s) (home credential directory or similar)."; +"Remove %lld files" = "Remove %lld files"; +"Remove %lld items" = "Remove %lld items"; +"Remove apps and their related files" = "Remove apps and their related files"; +"Remove selected app files?" = "Remove selected app files?"; +"Remove selected files?" = "Remove selected files?"; +"Remove selected leftovers?" = "Remove selected leftovers?"; +"Removing the items you selected." = "Removing the items you selected."; +"Reveal %@ in Finder" = "Reveal %@ in Finder"; +"Reveal plist in Finder" = "Reveal plist in Finder"; +"Reveal skipped item in Finder" = "Reveal skipped item in Finder"; +"Review and update apps installed as Homebrew casks." = "Review and update apps installed as Homebrew casks."; +"Review built-in privacy and safety checks" = "Review built-in privacy and safety checks"; +"Review matching files side by side" = "Review matching files side by side"; +"Review only" = "Review only"; +"Review removal" = "Review removal"; +"Review the groups before acting" = "Review the groups before acting"; +"Review the macOS safeguards that protect apps, disks, network access, and system files." = "Review the macOS safeguards that protect apps, disks, network access, and system files."; +"Review the results and choose exactly what to remove." = "Review the results and choose exactly what to remove."; +"Review which apps can access private data and hardware." = "Review which apps can access private data and hardware."; +"Run audit" = "Run audit"; +"Run the scan again when you are ready to check every area." = "Run the scan again when you are ready to check every area."; +"Safari privacy guide" = "Safari privacy guide"; +"Safari: Settings > Privacy" = "Safari: Settings > Privacy"; +"Sample limit reached" = "Sample limit reached"; +"Scan Another Folder" = "Scan Another Folder"; +"Scan Folder" = "Scan Folder"; +"Scan Photos" = "Scan Photos"; +"Scan again" = "Scan again"; +"Scan complete" = "Scan complete"; +"Scan could not finish" = "Scan could not finish"; +"Scan first, then review the exact files before removing anything." = "Scan first, then review the exact files before removing anything."; +"Scan stopped" = "Scan stopped"; +"Scan this Mac" = "Scan this Mac"; +"Scan this category" = "Scan this category"; +"Scanning %@…" = "Scanning %@…"; +"Scheduled" = "Scheduled"; +"Security Settings" = "Security Settings"; +"See current resource use and review what starts in the background." = "See current resource use and review what starts in the background."; +"See what is taking up space" = "See what is taking up space"; +"Select %@" = "Select %@"; +"Select a tool from the sidebar." = "Select a tool from the sidebar."; +"Select any folder to see which files and subfolders occupy the most disk space." = "Select any folder to see which files and subfolders occupy the most disk space."; +"Select apps to update" = "Select apps to update"; +"Select at least one app to update." = "Select at least one app to update."; +"Select copies" = "Select copies"; +"Select the apps Homebrew should upgrade." = "Select the apps Homebrew should upgrade."; +"Select the extra copies you want to review" = "Select the extra copies you want to review"; +"Select visible" = "Select visible"; +"Selected" = "Selected"; +"Selected cleanup items are permanently removed." = "Selected cleanup items are permanently removed."; +"Share of scanned space" = "Share of scanned space"; +"Shares storage with %@" = "Shares storage with %@"; +"Show %@ in Finder" = "Show %@ in Finder"; +"Show in Finder" = "Show in Finder"; +"Shows a confirmation before moving the selected copies" = "Shows a confirmation before moving the selected copies"; +"Similar Photos" = "Similar Photos"; +"Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality." = "Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality."; +"Size unavailable" = "Size unavailable"; +"Skipped items" = "Skipped items"; +"Smallest first" = "Smallest first"; +"Snapshot could not be deleted" = "Snapshot could not be deleted"; +"Software Update" = "Software Update"; +"Some contents were skipped or inaccessible" = "Some contents were skipped or inaccessible"; +"Some files were not moved" = "Some files were not moved"; +"Some information could not be read (%lld)" = "Some information could not be read (%lld)"; +"Some items need attention" = "Some items need attention"; +"Some locations are unavailable" = "Some locations are unavailable"; +"Some protected locations are unavailable. Full Disk Access allows a more complete scan." = "Some protected locations are unavailable. Full Disk Access allows a more complete scan."; +"Some selected files" = "Some selected files"; +"Sort" = "Sort"; +"Space Explorer" = "Space Explorer"; +"Startup and background items" = "Startup and background items"; +"Stop" = "Stop"; +"Stop scan" = "Stop scan"; +"Stopped" = "Stopped"; +"Stopping keeps the results found so far." = "Stopping keeps the results found so far."; +"Stops scanning without changing any files" = "Stops scanning without changing any files"; +"Suggested groups" = "Suggested groups"; +"Symbolic link" = "Symbolic link"; +"Symbolic links and cloud-only items are excluded." = "Symbolic links and cloud-only items are excluded."; +"Symbolic links cannot be scanned: %@" = "Symbolic links cannot be scanned: %@"; +"Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted." = "Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted."; +"System Integrity Protection" = "System Integrity Protection"; +"System Integrity Protection is turned off." = "System Integrity Protection is turned off."; +"System daemon" = "System daemon"; +"System update" = "System update"; +"System-wide agent" = "System-wide agent"; +"The analyzed photos did not meet PureMac's visual similarity threshold." = "The analyzed photos did not meet PureMac's visual similarity threshold."; +"The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan." = "The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan."; +"The check timed out." = "The check timed out."; +"The copy marked Keep is missing or changed: %@" = "The copy marked Keep is missing or changed: %@"; +"The inspected user and third-party launch folders are empty." = "The inspected user and third-party launch folders are empty."; +"The launch item is not a property-list dictionary." = "The launch item is not a property-list dictionary."; +"The macOS application firewall is turned off." = "The macOS application firewall is turned off."; +"The protected copy cannot be moved to Trash: %@" = "The protected copy cannot be moved to Trash: %@"; +"The scan stopped. Available results are ready to review." = "The scan stopped. Available results are ready to review."; +"The selected folder cannot be scanned: %@" = "The selected folder cannot be scanned: %@"; +"The selected folder could not be read: %@" = "The selected folder could not be read: %@"; +"The selected folder is stored in the cloud and has not been downloaded: %@" = "The selected folder is stored in the cloud and has not been downloaded: %@"; +"The selected item is not a folder: %@" = "The selected item is not a folder: %@"; +"The startup disk is encrypted with FileVault." = "The startup disk is encrypted with FileVault."; +"The startup disk is not encrypted with FileVault." = "The startup disk is not encrypted with FileVault."; +"The system returned an unrecognized status." = "The system returned an unrecognized status."; +"There are no cleanup items in this category." = "There are no cleanup items in this category."; +"This folder is empty or its contents were excluded from the scan." = "This folder is empty or its contents were excluded from the scan."; +"This permanently removes %@. Its size is unknown, and the action cannot be undone." = "This permanently removes %@. Its size is unknown, and the action cannot be undone."; +"This permanently removes the selected Time Machine snapshot." = "This permanently removes the selected Time Machine snapshot."; +"This snapshot does not have a verified Time Machine timestamp." = "This snapshot does not have a verified Time Machine timestamp."; +"Time Machine" = "Time Machine"; +"Time Machine Settings" = "Time Machine Settings"; +"Time Machine did not report any snapshots for the startup disk." = "Time Machine did not report any snapshots for the startup disk."; +"Time Machine snapshots are unavailable" = "Time Machine snapshots are unavailable"; +"Time Machine snapshots can be reviewed and removed individually" = "Time Machine snapshots can be reviewed and removed individually"; +"Tools" = "Tools"; +"Try Again" = "Try Again"; +"Try another name, size, or date range." = "Try another name, size, or date range."; +"Uninstaller" = "Uninstaller"; +"Unknown" = "Unknown"; +"Unknown error" = "Unknown error"; +"Updates from Homebrew" = "Updates from Homebrew"; +"Updating…" = "Updating…"; +"Upgrade %lld Apps" = "Upgrade %lld Apps"; +"Upgrade 1 App" = "Upgrade 1 App"; +"Upgrade selected apps?" = "Upgrade selected apps?"; +"User agent" = "User agent"; +"Verifying possible matches" = "Verifying possible matches"; +"Watches folders" = "Watches folders"; +"Watches paths" = "Watches paths"; +"XProtect" = "XProtect"; +"allocated in this folder" = "allocated in this folder"; +"definitions %@" = "definitions %@"; +"engine %@" = "engine %@"; +"macOS does not report reliable per-snapshot sizes in this listing." = "macOS does not report reliable per-snapshot sizes in this listing."; +"reclaimed" = "reclaimed"; +"similar group" = "similar group"; +"similar groups" = "similar groups"; +"tmutil is not available on this Mac." = "tmutil is not available on this Mac."; diff --git a/PureMac/es.lproj/Localizable.strings b/PureMac/es.lproj/Localizable.strings index 3cefa18..a765e0f 100644 --- a/PureMac/es.lproj/Localizable.strings +++ b/PureMac/es.lproj/Localizable.strings @@ -460,3 +460,410 @@ /* Simulator runtimes */ "Simulator runtime" = "Runtime del simulador"; + +/* Current dashboard, tools, and cleanup review — English fallback until translated */ +"\nAnd %lld more." = "\nAnd %lld more."; +"%@ %@ to %@" = "%@ %@ to %@"; +"%@ available" = "%@ available"; +"%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again." = "%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again."; +"%@ did not finish within the allowed time." = "%@ did not finish within the allowed time."; +"%@ exited with status %d%@" = "%@ exited with status %d%@"; +"%@ files inspected" = "%@ files inspected"; +"%@ found across %lld categories." = "%@ found across %lld categories."; +"%@ found before the scan stopped. Results may be incomplete." = "%@ found before the scan stopped. Results may be incomplete."; +"%@ of %@" = "%@ of %@"; +"%@ of %@ candidates · %@ verified" = "%@ of %@ candidates · %@ verified"; +"%@ reviewable" = "%@ reviewable"; +"%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone." = "%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone."; +"%@ will move to Trash" = "%@ will move to Trash"; +"%lld analyzed" = "%lld analyzed"; +"%lld apps selected" = "%lld apps selected"; +"%lld areas" = "%lld areas"; +"%lld compared" = "%lld compared"; +"%lld exact copies · %@ each" = "%lld exact copies · %@ each"; +"%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access." = "%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access."; +"%lld file(s) could not be removed. Check that the items still exist and are not in use." = "%lld file(s) could not be removed. Check that the items still exist and are not in use."; +"%lld files totaling %@ were moved. Every protected copy remains in place." = "%lld files totaling %@ were moved. Every protected copy remains in place."; +"%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place." = "%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place."; +"%lld files · %lld folders" = "%lld files · %lld folders"; +"%lld folders" = "%lld folders"; +"%lld found" = "%lld found"; +"%lld inaccessible" = "%lld inaccessible"; +"%lld items · %@ found" = "%lld items · %@ found"; +"%lld matched" = "%lld matched"; +"%lld of %lld items shown" = "%lld of %lld items shown"; +"%lld percent" = "%lld percent"; +"%lld photos" = "%lld photos"; +"%lld photos · %@" = "%lld photos · %@"; +"%lld selected items will be permanently deleted. Review the list before continuing." = "%lld selected items will be permanently deleted. Review the list before continuing."; +"%lld selected · %@" = "%lld selected · %@"; +"%lld skipped" = "%lld skipped"; +"%lld unsafe or unavailable items were not scanned" = "%lld unsafe or unavailable items were not scanned"; +"%lld unsafe or unavailable items were skipped." = "%lld unsafe or unavailable items were skipped."; +"%lld updates available" = "%lld updates available"; +"%lld%% visual score" = "%lld%% visual score"; +", and %lld more" = ", and %lld more"; +"1 app selected" = "1 app selected"; +"1 update available" = "1 update available"; +"500 photo limit" = "500 photo limit"; +"A clear view of reclaimable storage and the tools that manage it." = "A clear view of reclaimable storage and the tools that manage it."; +"A selected file is missing or changed: %@" = "A selected file is missing or changed: %@"; +"A selected file no longer matches its kept copy: %@" = "A selected file no longer matches its kept copy: %@"; +"Access denied" = "Access denied"; +"Administrator removal failed: %@" = "Administrator removal failed: %@"; +"Always exclude from cleanup" = "Always exclude from cleanup"; +"Any age" = "Any age"; +"Any size" = "Any size"; +"App Updates" = "App Updates"; +"App and document packages are excluded: %@" = "App and document packages are excluded: %@"; +"App bundle missing" = "App bundle missing"; +"App downloads are checked before opening." = "App downloads are checked before opening."; +"App permissions" = "App permissions"; +"Apple Guide" = "Apple Guide"; +"Apple's built-in malware protection is installed. Update recency is managed by macOS." = "Apple's built-in malware protection is installed. Update recency is managed by macOS."; +"Application Firewall" = "Application Firewall"; +"Apps outside Homebrew" = "Apps outside Homebrew"; +"At login" = "At login"; +"Available" = "Available"; +"Available to review" = "Available to review"; +"Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions." = "Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions."; +"Browser privacy" = "Browser privacy"; +"Building visual signatures" = "Building visual signatures"; +"Camera" = "Camera"; +"Care" = "Care"; +"Changed during scan" = "Changed during scan"; +"Check Again" = "Check Again"; +"Check again" = "Check again"; +"Check built-in safeguards" = "Check built-in safeguards"; +"Check installed apps for new versions" = "Check installed apps for new versions"; +"Check installed cask apps" = "Check installed cask apps"; +"Checked %@. Unknown means the setting could not be confirmed." = "Checked %@. Unknown means the setting could not be confirmed."; +"Checking" = "Checking"; +"Checking Homebrew casks" = "Checking Homebrew casks"; +"Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation." = "Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation."; +"Checking your Mac. Nothing is removed during a scan." = "Checking your Mac. Nothing is removed during a scan."; +"Choose Another Folder" = "Choose Another Folder"; +"Choose Folder" = "Choose Folder"; +"Choose a Folder" = "Choose a Folder"; +"Choose a folder of photos" = "Choose a folder of photos"; +"Choose a folder to check for duplicate files" = "Choose a folder to check for duplicate files"; +"Choose a folder to inspect" = "Choose a folder to inspect"; +"Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically." = "Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically."; +"Choose a photo folder" = "Choose a photo folder"; +"Choose where to look" = "Choose where to look"; +"Chrome privacy guide" = "Chrome privacy guide"; +"Clean selected items" = "Clean selected items"; +"Cleaning selected items" = "Cleaning selected items"; +"Cleanup Exclusions" = "Cleanup Exclusions"; +"Cleanup finished and disk information is refreshing." = "Cleanup finished and disk information is refreshing."; +"Cleanup plan" = "Cleanup plan"; +"Clear Selection" = "Clear Selection"; +"Clear filters" = "Clear filters"; +"Clear search" = "Clear search"; +"Clear selection" = "Clear selection"; +"Cloud-only file" = "Cloud-only file"; +"Collapse duplicate group" = "Collapse duplicate group"; +"Compare visually similar photos" = "Compare visually similar photos"; +"Conditional keep alive" = "Conditional keep alive"; +"Copy path" = "Copy path"; +"Could not inspect %@" = "Could not inspect %@"; +"Could not list Time Machine snapshots" = "Could not list Time Machine snapshots"; +"Could not read" = "Could not read"; +"Could not read %@" = "Could not read %@"; +"Couldn't check for updates" = "Couldn't check for updates"; +"Current scan path" = "Current scan path"; +"Delete" = "Delete"; +"Delete Snapshot" = "Delete Snapshot"; +"Delete local snapshot?" = "Delete local snapshot?"; +"Deselect visible" = "Deselect visible"; +"Developer Cleanup" = "Developer Cleanup"; +"Disabled" = "Disabled"; +"Downloaded apps are not being assessed by Gatekeeper." = "Downloaded apps are not being assessed by Gatekeeper."; +"Drag to tilt" = "Drag to tilt"; +"Duplicate Finder" = "Duplicate Finder"; +"Duplicate groups" = "Duplicate groups"; +"Every %lld seconds" = "Every %lld seconds"; +"Every eligible file was checked." = "Every eligible file was checked."; +"Exact-match cleanup with a protected copy in every group" = "Exact-match cleanup with a protected copy in every group"; +"Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it." = "Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it."; +"Expand duplicate group" = "Expand duplicate group"; +"File" = "File"; +"FileVault" = "FileVault"; +"FileVault Settings" = "FileVault Settings"; +"Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them." = "Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them."; +"Filter cleanup files" = "Filter cleanup files"; +"Find a file or path" = "Find a file or path"; +"Find copies that are exactly the same" = "Find copies that are exactly the same"; +"Find space to reclaim." = "Find space to reclaim."; +"Find visually related shots in a folder and review them side by side." = "Find visually related shots in a folder and review them side by side."; +"Find what uses the most disk space" = "Find what uses the most disk space"; +"Finding local photos" = "Finding local photos"; +"Firewall Settings" = "Firewall Settings"; +"Focused utilities for storage, apps, and system maintenance" = "Focused utilities for storage, apps, and system maintenance"; +"Folder could not be inspected" = "Folder could not be inspected"; +"Full Disk Access is off" = "Full Disk Access is off"; +"Full access" = "Full access"; +"Gatekeeper" = "Gatekeeper"; +"Group %lld" = "Group %lld"; +"Grouping similar shots" = "Grouping similar shots"; +"Hard-linked copy" = "Hard-linked copy"; +"Homebrew apps are up to date" = "Homebrew apps are up to date"; +"Homebrew did not finish before the operation timed out." = "Homebrew did not finish before the operation timed out."; +"Homebrew finished, but %lld selected apps still report updates." = "Homebrew finished, but %lld selected apps still report updates."; +"Homebrew finished, but 1 selected app still reports an update." = "Homebrew finished, but 1 selected app still reports an update."; +"Homebrew finished. Check again to verify installed versions." = "Homebrew finished. Check again to verify installed versions."; +"Homebrew not found" = "Homebrew not found"; +"Homebrew produced more output than PureMac could safely retain." = "Homebrew produced more output than PureMac could safely retain."; +"Homebrew returned an invalid cask identifier: %@" = "Homebrew returned an invalid cask identifier: %@"; +"Homebrew returned update information PureMac could not read." = "Homebrew returned update information PureMac could not read."; +"Homebrew updated the %lld selected apps." = "Homebrew updated the %lld selected apps."; +"Homebrew updated the selected app." = "Homebrew updated the selected app."; +"Homebrew was not found in a standard installation location." = "Homebrew was not found in a standard installation location."; +"Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process." = "Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process."; +"Includes %lld selected items hidden by filters." = "Includes %lld selected items hidden by filters."; +"Incoming network connections are filtered." = "Incoming network connections are filtered."; +"Inspect" = "Inspect"; +"Inspect a folder by allocated disk space. Your files are never changed." = "Inspect a folder by allocated disk space. Your files are never changed."; +"Inspect memory and background activity" = "Inspect memory and background activity"; +"Inspect startup items and local snapshots again" = "Inspect startup items and local snapshots again"; +"Inspected %@ files in %@. %@" = "Inspected %@ files in %@. %@"; +"Inspecting startup items and local snapshots…" = "Inspecting startup items and local snapshots…"; +"Inspection stopped" = "Inspection stopped"; +"Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels." = "Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels."; +"Installed" = "Installed"; +"Installed %@" = "Installed %@"; +"Keep" = "Keep"; +"Keep PureMac open until this pass finishes." = "Keep PureMac open until this pass finishes."; +"Keep alive" = "Keep alive"; +"Largest first" = "Largest first"; +"Largest items" = "Largest items"; +"Last activity: %@" = "Last activity: %@"; +"Last checked" = "Last checked"; +"Launch agents and daemons installed outside macOS system folders" = "Launch agents and daemons installed outside macOS system folders"; +"Leftovers" = "Leftovers"; +"Live" = "Live"; +"Live resources" = "Live resources"; +"Local and private" = "Local and private"; +"Local files" = "Local files"; +"Local snapshot" = "Local snapshot"; +"Local snapshots" = "Local snapshots"; +"Location" = "Location"; +"Login Items Settings" = "Login Items Settings"; +"Looking through files" = "Looking through files"; +"Mac storage" = "Mac storage"; +"Managed cleanup action" = "Managed cleanup action"; +"Matching files" = "Matching files"; +"Measuring allocated space" = "Measuring allocated space"; +"Memory pressure use" = "Memory pressure use"; +"Microphone" = "Microphone"; +"Modified" = "Modified"; +"Move selected duplicates to Trash?" = "Move selected duplicates to Trash?"; +"Moved to Trash" = "Moved to Trash"; +"Name" = "Name"; +"Needs attention" = "Needs attention"; +"Network state" = "Network state"; +"No exact duplicates found" = "No exact duplicates found"; +"No excluded paths" = "No excluded paths"; +"No files found" = "No files found"; +"No files were changed. Rescan this folder when you are ready." = "No files were changed. Rescan this folder when you are ready."; +"No launchd items found" = "No launchd items found"; +"No local snapshots reported" = "No local snapshots reported"; +"No matching files" = "No matching files"; +"No measurable items" = "No measurable items"; +"No photos were changed. You can scan the folder again at any time." = "No photos were changed. You can scan the folder again at any time."; +"No reclaimable items were found before the scan stopped." = "No reclaimable items were found before the scan stopped."; +"No reclaimable items were found in the areas checked." = "No reclaimable items were found in the areas checked."; +"No results yet" = "No results yet"; +"No scan run yet" = "No scan run yet"; +"No similar groups found" = "No similar groups found"; +"No updates are currently available for the cask apps Homebrew manages." = "No updates are currently available for the cask apps Homebrew manages."; +"Nothing selected" = "Nothing selected"; +"Nothing to clean" = "Nothing to clean"; +"Nothing was moved" = "Nothing was moved"; +"Off" = "Off"; +"Older than 30 days" = "Older than 30 days"; +"Older than 6 months" = "Older than 6 months"; +"Older than a year" = "Older than a year"; +"Oldest first" = "Oldest first"; +"On" = "On"; +"Open Activity Monitor" = "Open Activity Monitor"; +"Open App Store Updates" = "Open App Store Updates"; +"Open Folder" = "Open Folder"; +"Open a category to review individual items" = "Open a category to review individual items"; +"Open folder" = "Open folder"; +"Open the App Store updates page. Direct-download apps may provide their own updater." = "Open the App Store updates page. Direct-download apps may provide their own updater."; +"Opens a folder picker" = "Opens a folder picker"; +"Over 1 GB" = "Over 1 GB"; +"Over 10 GB" = "Over 10 GB"; +"Over 100 MB" = "Over 100 MB"; +"Package" = "Package"; +"Package contents" = "Package contents"; +"Package · %lld files" = "Package · %lld files"; +"Partial result" = "Partial result"; +"Partial results" = "Partial results"; +"Performance" = "Performance"; +"Permanently delete %@?" = "Permanently delete %@?"; +"Permanently remove %lld items" = "Permanently remove %lld items"; +"Personal data or an optional cleanup action. Left unselected by default." = "Personal data or an optional cleanup action. Left unselected by default."; +"Photos could not be compared" = "Photos could not be compared"; +"Pinned" = "Pinned"; +"Preparing scan" = "Preparing scan"; +"Preparing the next area…" = "Preparing the next area…"; +"Preparing visual comparison" = "Preparing visual comparison"; +"Program not declared in this plist" = "Program not declared in this plist"; +"Protected caches and app containers will be skipped." = "Protected caches and app containers will be skipped."; +"Protected copy" = "Protected copy"; +"Protected system locations and processes are restricted." = "Protected system locations and processes are restricted."; +"Protection" = "Protection"; +"PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review." = "PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review."; +"PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed." = "PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed."; +"PureMac compares local image thumbnails without changing your photos." = "PureMac compares local image thumbnails without changing your photos."; +"PureMac could not confirm the local XProtect installation." = "PureMac could not confirm the local XProtect installation."; +"PureMac could not read this setting." = "PureMac could not read this setting."; +"PureMac did not find removable items in the selected scan areas." = "PureMac did not find removable items in the selected scan areas."; +"PureMac measures allocated disk space without changing files." = "PureMac measures allocated disk space without changing files."; +"PureMac reads the selected folder and does not change anything during a scan." = "PureMac reads the selected folder and does not change anything during a scan."; +"PureMac will ask Homebrew for available versions when you start the check." = "PureMac will ask Homebrew for available versions when you start the check."; +"PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing." = "PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing."; +"PureMac.app" = "PureMac.app"; +"Ready for protected locations" = "Ready for protected locations"; +"Refresh disk information" = "Refresh disk information"; +"Refreshing package data and comparing installed versions." = "Refreshing package data and comparing installed versions."; +"Refused to delete %lld protected item(s) (home credential directory or similar)." = "Refused to delete %lld protected item(s) (home credential directory or similar)."; +"Remove %lld files" = "Remove %lld files"; +"Remove %lld items" = "Remove %lld items"; +"Remove apps and their related files" = "Remove apps and their related files"; +"Remove selected app files?" = "Remove selected app files?"; +"Remove selected files?" = "Remove selected files?"; +"Remove selected leftovers?" = "Remove selected leftovers?"; +"Removing the items you selected." = "Removing the items you selected."; +"Reveal %@ in Finder" = "Reveal %@ in Finder"; +"Reveal plist in Finder" = "Reveal plist in Finder"; +"Reveal skipped item in Finder" = "Reveal skipped item in Finder"; +"Review and update apps installed as Homebrew casks." = "Review and update apps installed as Homebrew casks."; +"Review built-in privacy and safety checks" = "Review built-in privacy and safety checks"; +"Review matching files side by side" = "Review matching files side by side"; +"Review only" = "Review only"; +"Review removal" = "Review removal"; +"Review the groups before acting" = "Review the groups before acting"; +"Review the macOS safeguards that protect apps, disks, network access, and system files." = "Review the macOS safeguards that protect apps, disks, network access, and system files."; +"Review the results and choose exactly what to remove." = "Review the results and choose exactly what to remove."; +"Review which apps can access private data and hardware." = "Review which apps can access private data and hardware."; +"Run audit" = "Run audit"; +"Run the scan again when you are ready to check every area." = "Run the scan again when you are ready to check every area."; +"Safari privacy guide" = "Safari privacy guide"; +"Safari: Settings > Privacy" = "Safari: Settings > Privacy"; +"Sample limit reached" = "Sample limit reached"; +"Scan Another Folder" = "Scan Another Folder"; +"Scan Folder" = "Scan Folder"; +"Scan Photos" = "Scan Photos"; +"Scan again" = "Scan again"; +"Scan complete" = "Scan complete"; +"Scan could not finish" = "Scan could not finish"; +"Scan first, then review the exact files before removing anything." = "Scan first, then review the exact files before removing anything."; +"Scan stopped" = "Scan stopped"; +"Scan this Mac" = "Scan this Mac"; +"Scan this category" = "Scan this category"; +"Scanning %@…" = "Scanning %@…"; +"Scheduled" = "Scheduled"; +"Security Settings" = "Security Settings"; +"See current resource use and review what starts in the background." = "See current resource use and review what starts in the background."; +"See what is taking up space" = "See what is taking up space"; +"Select %@" = "Select %@"; +"Select a tool from the sidebar." = "Select a tool from the sidebar."; +"Select any folder to see which files and subfolders occupy the most disk space." = "Select any folder to see which files and subfolders occupy the most disk space."; +"Select apps to update" = "Select apps to update"; +"Select at least one app to update." = "Select at least one app to update."; +"Select copies" = "Select copies"; +"Select the apps Homebrew should upgrade." = "Select the apps Homebrew should upgrade."; +"Select the extra copies you want to review" = "Select the extra copies you want to review"; +"Select visible" = "Select visible"; +"Selected" = "Selected"; +"Selected cleanup items are permanently removed." = "Selected cleanup items are permanently removed."; +"Share of scanned space" = "Share of scanned space"; +"Shares storage with %@" = "Shares storage with %@"; +"Show %@ in Finder" = "Show %@ in Finder"; +"Show in Finder" = "Show in Finder"; +"Shows a confirmation before moving the selected copies" = "Shows a confirmation before moving the selected copies"; +"Similar Photos" = "Similar Photos"; +"Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality." = "Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality."; +"Size unavailable" = "Size unavailable"; +"Skipped items" = "Skipped items"; +"Smallest first" = "Smallest first"; +"Snapshot could not be deleted" = "Snapshot could not be deleted"; +"Software Update" = "Software Update"; +"Some contents were skipped or inaccessible" = "Some contents were skipped or inaccessible"; +"Some files were not moved" = "Some files were not moved"; +"Some information could not be read (%lld)" = "Some information could not be read (%lld)"; +"Some items need attention" = "Some items need attention"; +"Some locations are unavailable" = "Some locations are unavailable"; +"Some protected locations are unavailable. Full Disk Access allows a more complete scan." = "Some protected locations are unavailable. Full Disk Access allows a more complete scan."; +"Some selected files" = "Some selected files"; +"Sort" = "Sort"; +"Space Explorer" = "Space Explorer"; +"Startup and background items" = "Startup and background items"; +"Stop" = "Stop"; +"Stop scan" = "Stop scan"; +"Stopped" = "Stopped"; +"Stopping keeps the results found so far." = "Stopping keeps the results found so far."; +"Stops scanning without changing any files" = "Stops scanning without changing any files"; +"Suggested groups" = "Suggested groups"; +"Symbolic link" = "Symbolic link"; +"Symbolic links and cloud-only items are excluded." = "Symbolic links and cloud-only items are excluded."; +"Symbolic links cannot be scanned: %@" = "Symbolic links cannot be scanned: %@"; +"Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted." = "Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted."; +"System Integrity Protection" = "System Integrity Protection"; +"System Integrity Protection is turned off." = "System Integrity Protection is turned off."; +"System daemon" = "System daemon"; +"System update" = "System update"; +"System-wide agent" = "System-wide agent"; +"The analyzed photos did not meet PureMac's visual similarity threshold." = "The analyzed photos did not meet PureMac's visual similarity threshold."; +"The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan." = "The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan."; +"The check timed out." = "The check timed out."; +"The copy marked Keep is missing or changed: %@" = "The copy marked Keep is missing or changed: %@"; +"The inspected user and third-party launch folders are empty." = "The inspected user and third-party launch folders are empty."; +"The launch item is not a property-list dictionary." = "The launch item is not a property-list dictionary."; +"The macOS application firewall is turned off." = "The macOS application firewall is turned off."; +"The protected copy cannot be moved to Trash: %@" = "The protected copy cannot be moved to Trash: %@"; +"The scan stopped. Available results are ready to review." = "The scan stopped. Available results are ready to review."; +"The selected folder cannot be scanned: %@" = "The selected folder cannot be scanned: %@"; +"The selected folder could not be read: %@" = "The selected folder could not be read: %@"; +"The selected folder is stored in the cloud and has not been downloaded: %@" = "The selected folder is stored in the cloud and has not been downloaded: %@"; +"The selected item is not a folder: %@" = "The selected item is not a folder: %@"; +"The startup disk is encrypted with FileVault." = "The startup disk is encrypted with FileVault."; +"The startup disk is not encrypted with FileVault." = "The startup disk is not encrypted with FileVault."; +"The system returned an unrecognized status." = "The system returned an unrecognized status."; +"There are no cleanup items in this category." = "There are no cleanup items in this category."; +"This folder is empty or its contents were excluded from the scan." = "This folder is empty or its contents were excluded from the scan."; +"This permanently removes %@. Its size is unknown, and the action cannot be undone." = "This permanently removes %@. Its size is unknown, and the action cannot be undone."; +"This permanently removes the selected Time Machine snapshot." = "This permanently removes the selected Time Machine snapshot."; +"This snapshot does not have a verified Time Machine timestamp." = "This snapshot does not have a verified Time Machine timestamp."; +"Time Machine" = "Time Machine"; +"Time Machine Settings" = "Time Machine Settings"; +"Time Machine did not report any snapshots for the startup disk." = "Time Machine did not report any snapshots for the startup disk."; +"Time Machine snapshots are unavailable" = "Time Machine snapshots are unavailable"; +"Time Machine snapshots can be reviewed and removed individually" = "Time Machine snapshots can be reviewed and removed individually"; +"Tools" = "Tools"; +"Try Again" = "Try Again"; +"Try another name, size, or date range." = "Try another name, size, or date range."; +"Uninstaller" = "Uninstaller"; +"Unknown" = "Unknown"; +"Unknown error" = "Unknown error"; +"Updates from Homebrew" = "Updates from Homebrew"; +"Updating…" = "Updating…"; +"Upgrade %lld Apps" = "Upgrade %lld Apps"; +"Upgrade 1 App" = "Upgrade 1 App"; +"Upgrade selected apps?" = "Upgrade selected apps?"; +"User agent" = "User agent"; +"Verifying possible matches" = "Verifying possible matches"; +"Watches folders" = "Watches folders"; +"Watches paths" = "Watches paths"; +"XProtect" = "XProtect"; +"allocated in this folder" = "allocated in this folder"; +"definitions %@" = "definitions %@"; +"engine %@" = "engine %@"; +"macOS does not report reliable per-snapshot sizes in this listing." = "macOS does not report reliable per-snapshot sizes in this listing."; +"reclaimed" = "reclaimed"; +"similar group" = "similar group"; +"similar groups" = "similar groups"; +"tmutil is not available on this Mac." = "tmutil is not available on this Mac."; diff --git a/PureMac/fr.lproj/Localizable.strings b/PureMac/fr.lproj/Localizable.strings index c1f1ad5..7a86ab2 100644 --- a/PureMac/fr.lproj/Localizable.strings +++ b/PureMac/fr.lproj/Localizable.strings @@ -456,3 +456,410 @@ /* Simulator runtimes */ "Simulator runtime" = "Runtime de simulateur"; + +/* Current dashboard, tools, and cleanup review — English fallback until translated */ +"\nAnd %lld more." = "\nAnd %lld more."; +"%@ %@ to %@" = "%@ %@ to %@"; +"%@ available" = "%@ available"; +"%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again." = "%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again."; +"%@ did not finish within the allowed time." = "%@ did not finish within the allowed time."; +"%@ exited with status %d%@" = "%@ exited with status %d%@"; +"%@ files inspected" = "%@ files inspected"; +"%@ found across %lld categories." = "%@ found across %lld categories."; +"%@ found before the scan stopped. Results may be incomplete." = "%@ found before the scan stopped. Results may be incomplete."; +"%@ of %@" = "%@ of %@"; +"%@ of %@ candidates · %@ verified" = "%@ of %@ candidates · %@ verified"; +"%@ reviewable" = "%@ reviewable"; +"%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone." = "%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone."; +"%@ will move to Trash" = "%@ will move to Trash"; +"%lld analyzed" = "%lld analyzed"; +"%lld apps selected" = "%lld apps selected"; +"%lld areas" = "%lld areas"; +"%lld compared" = "%lld compared"; +"%lld exact copies · %@ each" = "%lld exact copies · %@ each"; +"%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access." = "%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access."; +"%lld file(s) could not be removed. Check that the items still exist and are not in use." = "%lld file(s) could not be removed. Check that the items still exist and are not in use."; +"%lld files totaling %@ were moved. Every protected copy remains in place." = "%lld files totaling %@ were moved. Every protected copy remains in place."; +"%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place." = "%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place."; +"%lld files · %lld folders" = "%lld files · %lld folders"; +"%lld folders" = "%lld folders"; +"%lld found" = "%lld found"; +"%lld inaccessible" = "%lld inaccessible"; +"%lld items · %@ found" = "%lld items · %@ found"; +"%lld matched" = "%lld matched"; +"%lld of %lld items shown" = "%lld of %lld items shown"; +"%lld percent" = "%lld percent"; +"%lld photos" = "%lld photos"; +"%lld photos · %@" = "%lld photos · %@"; +"%lld selected items will be permanently deleted. Review the list before continuing." = "%lld selected items will be permanently deleted. Review the list before continuing."; +"%lld selected · %@" = "%lld selected · %@"; +"%lld skipped" = "%lld skipped"; +"%lld unsafe or unavailable items were not scanned" = "%lld unsafe or unavailable items were not scanned"; +"%lld unsafe or unavailable items were skipped." = "%lld unsafe or unavailable items were skipped."; +"%lld updates available" = "%lld updates available"; +"%lld%% visual score" = "%lld%% visual score"; +", and %lld more" = ", and %lld more"; +"1 app selected" = "1 app selected"; +"1 update available" = "1 update available"; +"500 photo limit" = "500 photo limit"; +"A clear view of reclaimable storage and the tools that manage it." = "A clear view of reclaimable storage and the tools that manage it."; +"A selected file is missing or changed: %@" = "A selected file is missing or changed: %@"; +"A selected file no longer matches its kept copy: %@" = "A selected file no longer matches its kept copy: %@"; +"Access denied" = "Access denied"; +"Administrator removal failed: %@" = "Administrator removal failed: %@"; +"Always exclude from cleanup" = "Always exclude from cleanup"; +"Any age" = "Any age"; +"Any size" = "Any size"; +"App Updates" = "App Updates"; +"App and document packages are excluded: %@" = "App and document packages are excluded: %@"; +"App bundle missing" = "App bundle missing"; +"App downloads are checked before opening." = "App downloads are checked before opening."; +"App permissions" = "App permissions"; +"Apple Guide" = "Apple Guide"; +"Apple's built-in malware protection is installed. Update recency is managed by macOS." = "Apple's built-in malware protection is installed. Update recency is managed by macOS."; +"Application Firewall" = "Application Firewall"; +"Apps outside Homebrew" = "Apps outside Homebrew"; +"At login" = "At login"; +"Available" = "Available"; +"Available to review" = "Available to review"; +"Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions." = "Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions."; +"Browser privacy" = "Browser privacy"; +"Building visual signatures" = "Building visual signatures"; +"Camera" = "Camera"; +"Care" = "Care"; +"Changed during scan" = "Changed during scan"; +"Check Again" = "Check Again"; +"Check again" = "Check again"; +"Check built-in safeguards" = "Check built-in safeguards"; +"Check installed apps for new versions" = "Check installed apps for new versions"; +"Check installed cask apps" = "Check installed cask apps"; +"Checked %@. Unknown means the setting could not be confirmed." = "Checked %@. Unknown means the setting could not be confirmed."; +"Checking" = "Checking"; +"Checking Homebrew casks" = "Checking Homebrew casks"; +"Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation." = "Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation."; +"Checking your Mac. Nothing is removed during a scan." = "Checking your Mac. Nothing is removed during a scan."; +"Choose Another Folder" = "Choose Another Folder"; +"Choose Folder" = "Choose Folder"; +"Choose a Folder" = "Choose a Folder"; +"Choose a folder of photos" = "Choose a folder of photos"; +"Choose a folder to check for duplicate files" = "Choose a folder to check for duplicate files"; +"Choose a folder to inspect" = "Choose a folder to inspect"; +"Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically." = "Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically."; +"Choose a photo folder" = "Choose a photo folder"; +"Choose where to look" = "Choose where to look"; +"Chrome privacy guide" = "Chrome privacy guide"; +"Clean selected items" = "Clean selected items"; +"Cleaning selected items" = "Cleaning selected items"; +"Cleanup Exclusions" = "Cleanup Exclusions"; +"Cleanup finished and disk information is refreshing." = "Cleanup finished and disk information is refreshing."; +"Cleanup plan" = "Cleanup plan"; +"Clear Selection" = "Clear Selection"; +"Clear filters" = "Clear filters"; +"Clear search" = "Clear search"; +"Clear selection" = "Clear selection"; +"Cloud-only file" = "Cloud-only file"; +"Collapse duplicate group" = "Collapse duplicate group"; +"Compare visually similar photos" = "Compare visually similar photos"; +"Conditional keep alive" = "Conditional keep alive"; +"Copy path" = "Copy path"; +"Could not inspect %@" = "Could not inspect %@"; +"Could not list Time Machine snapshots" = "Could not list Time Machine snapshots"; +"Could not read" = "Could not read"; +"Could not read %@" = "Could not read %@"; +"Couldn't check for updates" = "Couldn't check for updates"; +"Current scan path" = "Current scan path"; +"Delete" = "Delete"; +"Delete Snapshot" = "Delete Snapshot"; +"Delete local snapshot?" = "Delete local snapshot?"; +"Deselect visible" = "Deselect visible"; +"Developer Cleanup" = "Developer Cleanup"; +"Disabled" = "Disabled"; +"Downloaded apps are not being assessed by Gatekeeper." = "Downloaded apps are not being assessed by Gatekeeper."; +"Drag to tilt" = "Drag to tilt"; +"Duplicate Finder" = "Duplicate Finder"; +"Duplicate groups" = "Duplicate groups"; +"Every %lld seconds" = "Every %lld seconds"; +"Every eligible file was checked." = "Every eligible file was checked."; +"Exact-match cleanup with a protected copy in every group" = "Exact-match cleanup with a protected copy in every group"; +"Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it." = "Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it."; +"Expand duplicate group" = "Expand duplicate group"; +"File" = "File"; +"FileVault" = "FileVault"; +"FileVault Settings" = "FileVault Settings"; +"Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them." = "Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them."; +"Filter cleanup files" = "Filter cleanup files"; +"Find a file or path" = "Find a file or path"; +"Find copies that are exactly the same" = "Find copies that are exactly the same"; +"Find space to reclaim." = "Find space to reclaim."; +"Find visually related shots in a folder and review them side by side." = "Find visually related shots in a folder and review them side by side."; +"Find what uses the most disk space" = "Find what uses the most disk space"; +"Finding local photos" = "Finding local photos"; +"Firewall Settings" = "Firewall Settings"; +"Focused utilities for storage, apps, and system maintenance" = "Focused utilities for storage, apps, and system maintenance"; +"Folder could not be inspected" = "Folder could not be inspected"; +"Full Disk Access is off" = "Full Disk Access is off"; +"Full access" = "Full access"; +"Gatekeeper" = "Gatekeeper"; +"Group %lld" = "Group %lld"; +"Grouping similar shots" = "Grouping similar shots"; +"Hard-linked copy" = "Hard-linked copy"; +"Homebrew apps are up to date" = "Homebrew apps are up to date"; +"Homebrew did not finish before the operation timed out." = "Homebrew did not finish before the operation timed out."; +"Homebrew finished, but %lld selected apps still report updates." = "Homebrew finished, but %lld selected apps still report updates."; +"Homebrew finished, but 1 selected app still reports an update." = "Homebrew finished, but 1 selected app still reports an update."; +"Homebrew finished. Check again to verify installed versions." = "Homebrew finished. Check again to verify installed versions."; +"Homebrew not found" = "Homebrew not found"; +"Homebrew produced more output than PureMac could safely retain." = "Homebrew produced more output than PureMac could safely retain."; +"Homebrew returned an invalid cask identifier: %@" = "Homebrew returned an invalid cask identifier: %@"; +"Homebrew returned update information PureMac could not read." = "Homebrew returned update information PureMac could not read."; +"Homebrew updated the %lld selected apps." = "Homebrew updated the %lld selected apps."; +"Homebrew updated the selected app." = "Homebrew updated the selected app."; +"Homebrew was not found in a standard installation location." = "Homebrew was not found in a standard installation location."; +"Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process." = "Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process."; +"Includes %lld selected items hidden by filters." = "Includes %lld selected items hidden by filters."; +"Incoming network connections are filtered." = "Incoming network connections are filtered."; +"Inspect" = "Inspect"; +"Inspect a folder by allocated disk space. Your files are never changed." = "Inspect a folder by allocated disk space. Your files are never changed."; +"Inspect memory and background activity" = "Inspect memory and background activity"; +"Inspect startup items and local snapshots again" = "Inspect startup items and local snapshots again"; +"Inspected %@ files in %@. %@" = "Inspected %@ files in %@. %@"; +"Inspecting startup items and local snapshots…" = "Inspecting startup items and local snapshots…"; +"Inspection stopped" = "Inspection stopped"; +"Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels." = "Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels."; +"Installed" = "Installed"; +"Installed %@" = "Installed %@"; +"Keep" = "Keep"; +"Keep PureMac open until this pass finishes." = "Keep PureMac open until this pass finishes."; +"Keep alive" = "Keep alive"; +"Largest first" = "Largest first"; +"Largest items" = "Largest items"; +"Last activity: %@" = "Last activity: %@"; +"Last checked" = "Last checked"; +"Launch agents and daemons installed outside macOS system folders" = "Launch agents and daemons installed outside macOS system folders"; +"Leftovers" = "Leftovers"; +"Live" = "Live"; +"Live resources" = "Live resources"; +"Local and private" = "Local and private"; +"Local files" = "Local files"; +"Local snapshot" = "Local snapshot"; +"Local snapshots" = "Local snapshots"; +"Location" = "Location"; +"Login Items Settings" = "Login Items Settings"; +"Looking through files" = "Looking through files"; +"Mac storage" = "Mac storage"; +"Managed cleanup action" = "Managed cleanup action"; +"Matching files" = "Matching files"; +"Measuring allocated space" = "Measuring allocated space"; +"Memory pressure use" = "Memory pressure use"; +"Microphone" = "Microphone"; +"Modified" = "Modified"; +"Move selected duplicates to Trash?" = "Move selected duplicates to Trash?"; +"Moved to Trash" = "Moved to Trash"; +"Name" = "Name"; +"Needs attention" = "Needs attention"; +"Network state" = "Network state"; +"No exact duplicates found" = "No exact duplicates found"; +"No excluded paths" = "No excluded paths"; +"No files found" = "No files found"; +"No files were changed. Rescan this folder when you are ready." = "No files were changed. Rescan this folder when you are ready."; +"No launchd items found" = "No launchd items found"; +"No local snapshots reported" = "No local snapshots reported"; +"No matching files" = "No matching files"; +"No measurable items" = "No measurable items"; +"No photos were changed. You can scan the folder again at any time." = "No photos were changed. You can scan the folder again at any time."; +"No reclaimable items were found before the scan stopped." = "No reclaimable items were found before the scan stopped."; +"No reclaimable items were found in the areas checked." = "No reclaimable items were found in the areas checked."; +"No results yet" = "No results yet"; +"No scan run yet" = "No scan run yet"; +"No similar groups found" = "No similar groups found"; +"No updates are currently available for the cask apps Homebrew manages." = "No updates are currently available for the cask apps Homebrew manages."; +"Nothing selected" = "Nothing selected"; +"Nothing to clean" = "Nothing to clean"; +"Nothing was moved" = "Nothing was moved"; +"Off" = "Off"; +"Older than 30 days" = "Older than 30 days"; +"Older than 6 months" = "Older than 6 months"; +"Older than a year" = "Older than a year"; +"Oldest first" = "Oldest first"; +"On" = "On"; +"Open Activity Monitor" = "Open Activity Monitor"; +"Open App Store Updates" = "Open App Store Updates"; +"Open Folder" = "Open Folder"; +"Open a category to review individual items" = "Open a category to review individual items"; +"Open folder" = "Open folder"; +"Open the App Store updates page. Direct-download apps may provide their own updater." = "Open the App Store updates page. Direct-download apps may provide their own updater."; +"Opens a folder picker" = "Opens a folder picker"; +"Over 1 GB" = "Over 1 GB"; +"Over 10 GB" = "Over 10 GB"; +"Over 100 MB" = "Over 100 MB"; +"Package" = "Package"; +"Package contents" = "Package contents"; +"Package · %lld files" = "Package · %lld files"; +"Partial result" = "Partial result"; +"Partial results" = "Partial results"; +"Performance" = "Performance"; +"Permanently delete %@?" = "Permanently delete %@?"; +"Permanently remove %lld items" = "Permanently remove %lld items"; +"Personal data or an optional cleanup action. Left unselected by default." = "Personal data or an optional cleanup action. Left unselected by default."; +"Photos could not be compared" = "Photos could not be compared"; +"Pinned" = "Pinned"; +"Preparing scan" = "Preparing scan"; +"Preparing the next area…" = "Preparing the next area…"; +"Preparing visual comparison" = "Preparing visual comparison"; +"Program not declared in this plist" = "Program not declared in this plist"; +"Protected caches and app containers will be skipped." = "Protected caches and app containers will be skipped."; +"Protected copy" = "Protected copy"; +"Protected system locations and processes are restricted." = "Protected system locations and processes are restricted."; +"Protection" = "Protection"; +"PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review." = "PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review."; +"PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed." = "PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed."; +"PureMac compares local image thumbnails without changing your photos." = "PureMac compares local image thumbnails without changing your photos."; +"PureMac could not confirm the local XProtect installation." = "PureMac could not confirm the local XProtect installation."; +"PureMac could not read this setting." = "PureMac could not read this setting."; +"PureMac did not find removable items in the selected scan areas." = "PureMac did not find removable items in the selected scan areas."; +"PureMac measures allocated disk space without changing files." = "PureMac measures allocated disk space without changing files."; +"PureMac reads the selected folder and does not change anything during a scan." = "PureMac reads the selected folder and does not change anything during a scan."; +"PureMac will ask Homebrew for available versions when you start the check." = "PureMac will ask Homebrew for available versions when you start the check."; +"PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing." = "PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing."; +"PureMac.app" = "PureMac.app"; +"Ready for protected locations" = "Ready for protected locations"; +"Refresh disk information" = "Refresh disk information"; +"Refreshing package data and comparing installed versions." = "Refreshing package data and comparing installed versions."; +"Refused to delete %lld protected item(s) (home credential directory or similar)." = "Refused to delete %lld protected item(s) (home credential directory or similar)."; +"Remove %lld files" = "Remove %lld files"; +"Remove %lld items" = "Remove %lld items"; +"Remove apps and their related files" = "Remove apps and their related files"; +"Remove selected app files?" = "Remove selected app files?"; +"Remove selected files?" = "Remove selected files?"; +"Remove selected leftovers?" = "Remove selected leftovers?"; +"Removing the items you selected." = "Removing the items you selected."; +"Reveal %@ in Finder" = "Reveal %@ in Finder"; +"Reveal plist in Finder" = "Reveal plist in Finder"; +"Reveal skipped item in Finder" = "Reveal skipped item in Finder"; +"Review and update apps installed as Homebrew casks." = "Review and update apps installed as Homebrew casks."; +"Review built-in privacy and safety checks" = "Review built-in privacy and safety checks"; +"Review matching files side by side" = "Review matching files side by side"; +"Review only" = "Review only"; +"Review removal" = "Review removal"; +"Review the groups before acting" = "Review the groups before acting"; +"Review the macOS safeguards that protect apps, disks, network access, and system files." = "Review the macOS safeguards that protect apps, disks, network access, and system files."; +"Review the results and choose exactly what to remove." = "Review the results and choose exactly what to remove."; +"Review which apps can access private data and hardware." = "Review which apps can access private data and hardware."; +"Run audit" = "Run audit"; +"Run the scan again when you are ready to check every area." = "Run the scan again when you are ready to check every area."; +"Safari privacy guide" = "Safari privacy guide"; +"Safari: Settings > Privacy" = "Safari: Settings > Privacy"; +"Sample limit reached" = "Sample limit reached"; +"Scan Another Folder" = "Scan Another Folder"; +"Scan Folder" = "Scan Folder"; +"Scan Photos" = "Scan Photos"; +"Scan again" = "Scan again"; +"Scan complete" = "Scan complete"; +"Scan could not finish" = "Scan could not finish"; +"Scan first, then review the exact files before removing anything." = "Scan first, then review the exact files before removing anything."; +"Scan stopped" = "Scan stopped"; +"Scan this Mac" = "Scan this Mac"; +"Scan this category" = "Scan this category"; +"Scanning %@…" = "Scanning %@…"; +"Scheduled" = "Scheduled"; +"Security Settings" = "Security Settings"; +"See current resource use and review what starts in the background." = "See current resource use and review what starts in the background."; +"See what is taking up space" = "See what is taking up space"; +"Select %@" = "Select %@"; +"Select a tool from the sidebar." = "Select a tool from the sidebar."; +"Select any folder to see which files and subfolders occupy the most disk space." = "Select any folder to see which files and subfolders occupy the most disk space."; +"Select apps to update" = "Select apps to update"; +"Select at least one app to update." = "Select at least one app to update."; +"Select copies" = "Select copies"; +"Select the apps Homebrew should upgrade." = "Select the apps Homebrew should upgrade."; +"Select the extra copies you want to review" = "Select the extra copies you want to review"; +"Select visible" = "Select visible"; +"Selected" = "Selected"; +"Selected cleanup items are permanently removed." = "Selected cleanup items are permanently removed."; +"Share of scanned space" = "Share of scanned space"; +"Shares storage with %@" = "Shares storage with %@"; +"Show %@ in Finder" = "Show %@ in Finder"; +"Show in Finder" = "Show in Finder"; +"Shows a confirmation before moving the selected copies" = "Shows a confirmation before moving the selected copies"; +"Similar Photos" = "Similar Photos"; +"Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality." = "Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality."; +"Size unavailable" = "Size unavailable"; +"Skipped items" = "Skipped items"; +"Smallest first" = "Smallest first"; +"Snapshot could not be deleted" = "Snapshot could not be deleted"; +"Software Update" = "Software Update"; +"Some contents were skipped or inaccessible" = "Some contents were skipped or inaccessible"; +"Some files were not moved" = "Some files were not moved"; +"Some information could not be read (%lld)" = "Some information could not be read (%lld)"; +"Some items need attention" = "Some items need attention"; +"Some locations are unavailable" = "Some locations are unavailable"; +"Some protected locations are unavailable. Full Disk Access allows a more complete scan." = "Some protected locations are unavailable. Full Disk Access allows a more complete scan."; +"Some selected files" = "Some selected files"; +"Sort" = "Sort"; +"Space Explorer" = "Space Explorer"; +"Startup and background items" = "Startup and background items"; +"Stop" = "Stop"; +"Stop scan" = "Stop scan"; +"Stopped" = "Stopped"; +"Stopping keeps the results found so far." = "Stopping keeps the results found so far."; +"Stops scanning without changing any files" = "Stops scanning without changing any files"; +"Suggested groups" = "Suggested groups"; +"Symbolic link" = "Symbolic link"; +"Symbolic links and cloud-only items are excluded." = "Symbolic links and cloud-only items are excluded."; +"Symbolic links cannot be scanned: %@" = "Symbolic links cannot be scanned: %@"; +"Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted." = "Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted."; +"System Integrity Protection" = "System Integrity Protection"; +"System Integrity Protection is turned off." = "System Integrity Protection is turned off."; +"System daemon" = "System daemon"; +"System update" = "System update"; +"System-wide agent" = "System-wide agent"; +"The analyzed photos did not meet PureMac's visual similarity threshold." = "The analyzed photos did not meet PureMac's visual similarity threshold."; +"The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan." = "The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan."; +"The check timed out." = "The check timed out."; +"The copy marked Keep is missing or changed: %@" = "The copy marked Keep is missing or changed: %@"; +"The inspected user and third-party launch folders are empty." = "The inspected user and third-party launch folders are empty."; +"The launch item is not a property-list dictionary." = "The launch item is not a property-list dictionary."; +"The macOS application firewall is turned off." = "The macOS application firewall is turned off."; +"The protected copy cannot be moved to Trash: %@" = "The protected copy cannot be moved to Trash: %@"; +"The scan stopped. Available results are ready to review." = "The scan stopped. Available results are ready to review."; +"The selected folder cannot be scanned: %@" = "The selected folder cannot be scanned: %@"; +"The selected folder could not be read: %@" = "The selected folder could not be read: %@"; +"The selected folder is stored in the cloud and has not been downloaded: %@" = "The selected folder is stored in the cloud and has not been downloaded: %@"; +"The selected item is not a folder: %@" = "The selected item is not a folder: %@"; +"The startup disk is encrypted with FileVault." = "The startup disk is encrypted with FileVault."; +"The startup disk is not encrypted with FileVault." = "The startup disk is not encrypted with FileVault."; +"The system returned an unrecognized status." = "The system returned an unrecognized status."; +"There are no cleanup items in this category." = "There are no cleanup items in this category."; +"This folder is empty or its contents were excluded from the scan." = "This folder is empty or its contents were excluded from the scan."; +"This permanently removes %@. Its size is unknown, and the action cannot be undone." = "This permanently removes %@. Its size is unknown, and the action cannot be undone."; +"This permanently removes the selected Time Machine snapshot." = "This permanently removes the selected Time Machine snapshot."; +"This snapshot does not have a verified Time Machine timestamp." = "This snapshot does not have a verified Time Machine timestamp."; +"Time Machine" = "Time Machine"; +"Time Machine Settings" = "Time Machine Settings"; +"Time Machine did not report any snapshots for the startup disk." = "Time Machine did not report any snapshots for the startup disk."; +"Time Machine snapshots are unavailable" = "Time Machine snapshots are unavailable"; +"Time Machine snapshots can be reviewed and removed individually" = "Time Machine snapshots can be reviewed and removed individually"; +"Tools" = "Tools"; +"Try Again" = "Try Again"; +"Try another name, size, or date range." = "Try another name, size, or date range."; +"Uninstaller" = "Uninstaller"; +"Unknown" = "Unknown"; +"Unknown error" = "Unknown error"; +"Updates from Homebrew" = "Updates from Homebrew"; +"Updating…" = "Updating…"; +"Upgrade %lld Apps" = "Upgrade %lld Apps"; +"Upgrade 1 App" = "Upgrade 1 App"; +"Upgrade selected apps?" = "Upgrade selected apps?"; +"User agent" = "User agent"; +"Verifying possible matches" = "Verifying possible matches"; +"Watches folders" = "Watches folders"; +"Watches paths" = "Watches paths"; +"XProtect" = "XProtect"; +"allocated in this folder" = "allocated in this folder"; +"definitions %@" = "definitions %@"; +"engine %@" = "engine %@"; +"macOS does not report reliable per-snapshot sizes in this listing." = "macOS does not report reliable per-snapshot sizes in this listing."; +"reclaimed" = "reclaimed"; +"similar group" = "similar group"; +"similar groups" = "similar groups"; +"tmutil is not available on this Mac." = "tmutil is not available on this Mac."; diff --git a/PureMac/ja.lproj/Localizable.strings b/PureMac/ja.lproj/Localizable.strings index 1cf5a3f..8f69462 100644 --- a/PureMac/ja.lproj/Localizable.strings +++ b/PureMac/ja.lproj/Localizable.strings @@ -460,3 +460,410 @@ /* Simulator runtimes */ "Simulator runtime" = "シミュレータランタイム"; + +/* Current dashboard, tools, and cleanup review — English fallback until translated */ +"\nAnd %lld more." = "\nAnd %lld more."; +"%@ %@ to %@" = "%@ %@ to %@"; +"%@ available" = "%@ available"; +"%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again." = "%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again."; +"%@ did not finish within the allowed time." = "%@ did not finish within the allowed time."; +"%@ exited with status %d%@" = "%@ exited with status %d%@"; +"%@ files inspected" = "%@ files inspected"; +"%@ found across %lld categories." = "%@ found across %lld categories."; +"%@ found before the scan stopped. Results may be incomplete." = "%@ found before the scan stopped. Results may be incomplete."; +"%@ of %@" = "%@ of %@"; +"%@ of %@ candidates · %@ verified" = "%@ of %@ candidates · %@ verified"; +"%@ reviewable" = "%@ reviewable"; +"%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone." = "%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone."; +"%@ will move to Trash" = "%@ will move to Trash"; +"%lld analyzed" = "%lld analyzed"; +"%lld apps selected" = "%lld apps selected"; +"%lld areas" = "%lld areas"; +"%lld compared" = "%lld compared"; +"%lld exact copies · %@ each" = "%lld exact copies · %@ each"; +"%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access." = "%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access."; +"%lld file(s) could not be removed. Check that the items still exist and are not in use." = "%lld file(s) could not be removed. Check that the items still exist and are not in use."; +"%lld files totaling %@ were moved. Every protected copy remains in place." = "%lld files totaling %@ were moved. Every protected copy remains in place."; +"%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place." = "%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place."; +"%lld files · %lld folders" = "%lld files · %lld folders"; +"%lld folders" = "%lld folders"; +"%lld found" = "%lld found"; +"%lld inaccessible" = "%lld inaccessible"; +"%lld items · %@ found" = "%lld items · %@ found"; +"%lld matched" = "%lld matched"; +"%lld of %lld items shown" = "%lld of %lld items shown"; +"%lld percent" = "%lld percent"; +"%lld photos" = "%lld photos"; +"%lld photos · %@" = "%lld photos · %@"; +"%lld selected items will be permanently deleted. Review the list before continuing." = "%lld selected items will be permanently deleted. Review the list before continuing."; +"%lld selected · %@" = "%lld selected · %@"; +"%lld skipped" = "%lld skipped"; +"%lld unsafe or unavailable items were not scanned" = "%lld unsafe or unavailable items were not scanned"; +"%lld unsafe or unavailable items were skipped." = "%lld unsafe or unavailable items were skipped."; +"%lld updates available" = "%lld updates available"; +"%lld%% visual score" = "%lld%% visual score"; +", and %lld more" = ", and %lld more"; +"1 app selected" = "1 app selected"; +"1 update available" = "1 update available"; +"500 photo limit" = "500 photo limit"; +"A clear view of reclaimable storage and the tools that manage it." = "A clear view of reclaimable storage and the tools that manage it."; +"A selected file is missing or changed: %@" = "A selected file is missing or changed: %@"; +"A selected file no longer matches its kept copy: %@" = "A selected file no longer matches its kept copy: %@"; +"Access denied" = "Access denied"; +"Administrator removal failed: %@" = "Administrator removal failed: %@"; +"Always exclude from cleanup" = "Always exclude from cleanup"; +"Any age" = "Any age"; +"Any size" = "Any size"; +"App Updates" = "App Updates"; +"App and document packages are excluded: %@" = "App and document packages are excluded: %@"; +"App bundle missing" = "App bundle missing"; +"App downloads are checked before opening." = "App downloads are checked before opening."; +"App permissions" = "App permissions"; +"Apple Guide" = "Apple Guide"; +"Apple's built-in malware protection is installed. Update recency is managed by macOS." = "Apple's built-in malware protection is installed. Update recency is managed by macOS."; +"Application Firewall" = "Application Firewall"; +"Apps outside Homebrew" = "Apps outside Homebrew"; +"At login" = "At login"; +"Available" = "Available"; +"Available to review" = "Available to review"; +"Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions." = "Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions."; +"Browser privacy" = "Browser privacy"; +"Building visual signatures" = "Building visual signatures"; +"Camera" = "Camera"; +"Care" = "Care"; +"Changed during scan" = "Changed during scan"; +"Check Again" = "Check Again"; +"Check again" = "Check again"; +"Check built-in safeguards" = "Check built-in safeguards"; +"Check installed apps for new versions" = "Check installed apps for new versions"; +"Check installed cask apps" = "Check installed cask apps"; +"Checked %@. Unknown means the setting could not be confirmed." = "Checked %@. Unknown means the setting could not be confirmed."; +"Checking" = "Checking"; +"Checking Homebrew casks" = "Checking Homebrew casks"; +"Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation." = "Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation."; +"Checking your Mac. Nothing is removed during a scan." = "Checking your Mac. Nothing is removed during a scan."; +"Choose Another Folder" = "Choose Another Folder"; +"Choose Folder" = "Choose Folder"; +"Choose a Folder" = "Choose a Folder"; +"Choose a folder of photos" = "Choose a folder of photos"; +"Choose a folder to check for duplicate files" = "Choose a folder to check for duplicate files"; +"Choose a folder to inspect" = "Choose a folder to inspect"; +"Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically." = "Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically."; +"Choose a photo folder" = "Choose a photo folder"; +"Choose where to look" = "Choose where to look"; +"Chrome privacy guide" = "Chrome privacy guide"; +"Clean selected items" = "Clean selected items"; +"Cleaning selected items" = "Cleaning selected items"; +"Cleanup Exclusions" = "Cleanup Exclusions"; +"Cleanup finished and disk information is refreshing." = "Cleanup finished and disk information is refreshing."; +"Cleanup plan" = "Cleanup plan"; +"Clear Selection" = "Clear Selection"; +"Clear filters" = "Clear filters"; +"Clear search" = "Clear search"; +"Clear selection" = "Clear selection"; +"Cloud-only file" = "Cloud-only file"; +"Collapse duplicate group" = "Collapse duplicate group"; +"Compare visually similar photos" = "Compare visually similar photos"; +"Conditional keep alive" = "Conditional keep alive"; +"Copy path" = "Copy path"; +"Could not inspect %@" = "Could not inspect %@"; +"Could not list Time Machine snapshots" = "Could not list Time Machine snapshots"; +"Could not read" = "Could not read"; +"Could not read %@" = "Could not read %@"; +"Couldn't check for updates" = "Couldn't check for updates"; +"Current scan path" = "Current scan path"; +"Delete" = "Delete"; +"Delete Snapshot" = "Delete Snapshot"; +"Delete local snapshot?" = "Delete local snapshot?"; +"Deselect visible" = "Deselect visible"; +"Developer Cleanup" = "Developer Cleanup"; +"Disabled" = "Disabled"; +"Downloaded apps are not being assessed by Gatekeeper." = "Downloaded apps are not being assessed by Gatekeeper."; +"Drag to tilt" = "Drag to tilt"; +"Duplicate Finder" = "Duplicate Finder"; +"Duplicate groups" = "Duplicate groups"; +"Every %lld seconds" = "Every %lld seconds"; +"Every eligible file was checked." = "Every eligible file was checked."; +"Exact-match cleanup with a protected copy in every group" = "Exact-match cleanup with a protected copy in every group"; +"Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it." = "Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it."; +"Expand duplicate group" = "Expand duplicate group"; +"File" = "File"; +"FileVault" = "FileVault"; +"FileVault Settings" = "FileVault Settings"; +"Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them." = "Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them."; +"Filter cleanup files" = "Filter cleanup files"; +"Find a file or path" = "Find a file or path"; +"Find copies that are exactly the same" = "Find copies that are exactly the same"; +"Find space to reclaim." = "Find space to reclaim."; +"Find visually related shots in a folder and review them side by side." = "Find visually related shots in a folder and review them side by side."; +"Find what uses the most disk space" = "Find what uses the most disk space"; +"Finding local photos" = "Finding local photos"; +"Firewall Settings" = "Firewall Settings"; +"Focused utilities for storage, apps, and system maintenance" = "Focused utilities for storage, apps, and system maintenance"; +"Folder could not be inspected" = "Folder could not be inspected"; +"Full Disk Access is off" = "Full Disk Access is off"; +"Full access" = "Full access"; +"Gatekeeper" = "Gatekeeper"; +"Group %lld" = "Group %lld"; +"Grouping similar shots" = "Grouping similar shots"; +"Hard-linked copy" = "Hard-linked copy"; +"Homebrew apps are up to date" = "Homebrew apps are up to date"; +"Homebrew did not finish before the operation timed out." = "Homebrew did not finish before the operation timed out."; +"Homebrew finished, but %lld selected apps still report updates." = "Homebrew finished, but %lld selected apps still report updates."; +"Homebrew finished, but 1 selected app still reports an update." = "Homebrew finished, but 1 selected app still reports an update."; +"Homebrew finished. Check again to verify installed versions." = "Homebrew finished. Check again to verify installed versions."; +"Homebrew not found" = "Homebrew not found"; +"Homebrew produced more output than PureMac could safely retain." = "Homebrew produced more output than PureMac could safely retain."; +"Homebrew returned an invalid cask identifier: %@" = "Homebrew returned an invalid cask identifier: %@"; +"Homebrew returned update information PureMac could not read." = "Homebrew returned update information PureMac could not read."; +"Homebrew updated the %lld selected apps." = "Homebrew updated the %lld selected apps."; +"Homebrew updated the selected app." = "Homebrew updated the selected app."; +"Homebrew was not found in a standard installation location." = "Homebrew was not found in a standard installation location."; +"Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process." = "Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process."; +"Includes %lld selected items hidden by filters." = "Includes %lld selected items hidden by filters."; +"Incoming network connections are filtered." = "Incoming network connections are filtered."; +"Inspect" = "Inspect"; +"Inspect a folder by allocated disk space. Your files are never changed." = "Inspect a folder by allocated disk space. Your files are never changed."; +"Inspect memory and background activity" = "Inspect memory and background activity"; +"Inspect startup items and local snapshots again" = "Inspect startup items and local snapshots again"; +"Inspected %@ files in %@. %@" = "Inspected %@ files in %@. %@"; +"Inspecting startup items and local snapshots…" = "Inspecting startup items and local snapshots…"; +"Inspection stopped" = "Inspection stopped"; +"Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels." = "Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels."; +"Installed" = "Installed"; +"Installed %@" = "Installed %@"; +"Keep" = "Keep"; +"Keep PureMac open until this pass finishes." = "Keep PureMac open until this pass finishes."; +"Keep alive" = "Keep alive"; +"Largest first" = "Largest first"; +"Largest items" = "Largest items"; +"Last activity: %@" = "Last activity: %@"; +"Last checked" = "Last checked"; +"Launch agents and daemons installed outside macOS system folders" = "Launch agents and daemons installed outside macOS system folders"; +"Leftovers" = "Leftovers"; +"Live" = "Live"; +"Live resources" = "Live resources"; +"Local and private" = "Local and private"; +"Local files" = "Local files"; +"Local snapshot" = "Local snapshot"; +"Local snapshots" = "Local snapshots"; +"Location" = "Location"; +"Login Items Settings" = "Login Items Settings"; +"Looking through files" = "Looking through files"; +"Mac storage" = "Mac storage"; +"Managed cleanup action" = "Managed cleanup action"; +"Matching files" = "Matching files"; +"Measuring allocated space" = "Measuring allocated space"; +"Memory pressure use" = "Memory pressure use"; +"Microphone" = "Microphone"; +"Modified" = "Modified"; +"Move selected duplicates to Trash?" = "Move selected duplicates to Trash?"; +"Moved to Trash" = "Moved to Trash"; +"Name" = "Name"; +"Needs attention" = "Needs attention"; +"Network state" = "Network state"; +"No exact duplicates found" = "No exact duplicates found"; +"No excluded paths" = "No excluded paths"; +"No files found" = "No files found"; +"No files were changed. Rescan this folder when you are ready." = "No files were changed. Rescan this folder when you are ready."; +"No launchd items found" = "No launchd items found"; +"No local snapshots reported" = "No local snapshots reported"; +"No matching files" = "No matching files"; +"No measurable items" = "No measurable items"; +"No photos were changed. You can scan the folder again at any time." = "No photos were changed. You can scan the folder again at any time."; +"No reclaimable items were found before the scan stopped." = "No reclaimable items were found before the scan stopped."; +"No reclaimable items were found in the areas checked." = "No reclaimable items were found in the areas checked."; +"No results yet" = "No results yet"; +"No scan run yet" = "No scan run yet"; +"No similar groups found" = "No similar groups found"; +"No updates are currently available for the cask apps Homebrew manages." = "No updates are currently available for the cask apps Homebrew manages."; +"Nothing selected" = "Nothing selected"; +"Nothing to clean" = "Nothing to clean"; +"Nothing was moved" = "Nothing was moved"; +"Off" = "Off"; +"Older than 30 days" = "Older than 30 days"; +"Older than 6 months" = "Older than 6 months"; +"Older than a year" = "Older than a year"; +"Oldest first" = "Oldest first"; +"On" = "On"; +"Open Activity Monitor" = "Open Activity Monitor"; +"Open App Store Updates" = "Open App Store Updates"; +"Open Folder" = "Open Folder"; +"Open a category to review individual items" = "Open a category to review individual items"; +"Open folder" = "Open folder"; +"Open the App Store updates page. Direct-download apps may provide their own updater." = "Open the App Store updates page. Direct-download apps may provide their own updater."; +"Opens a folder picker" = "Opens a folder picker"; +"Over 1 GB" = "Over 1 GB"; +"Over 10 GB" = "Over 10 GB"; +"Over 100 MB" = "Over 100 MB"; +"Package" = "Package"; +"Package contents" = "Package contents"; +"Package · %lld files" = "Package · %lld files"; +"Partial result" = "Partial result"; +"Partial results" = "Partial results"; +"Performance" = "Performance"; +"Permanently delete %@?" = "Permanently delete %@?"; +"Permanently remove %lld items" = "Permanently remove %lld items"; +"Personal data or an optional cleanup action. Left unselected by default." = "Personal data or an optional cleanup action. Left unselected by default."; +"Photos could not be compared" = "Photos could not be compared"; +"Pinned" = "Pinned"; +"Preparing scan" = "Preparing scan"; +"Preparing the next area…" = "Preparing the next area…"; +"Preparing visual comparison" = "Preparing visual comparison"; +"Program not declared in this plist" = "Program not declared in this plist"; +"Protected caches and app containers will be skipped." = "Protected caches and app containers will be skipped."; +"Protected copy" = "Protected copy"; +"Protected system locations and processes are restricted." = "Protected system locations and processes are restricted."; +"Protection" = "Protection"; +"PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review." = "PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review."; +"PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed." = "PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed."; +"PureMac compares local image thumbnails without changing your photos." = "PureMac compares local image thumbnails without changing your photos."; +"PureMac could not confirm the local XProtect installation." = "PureMac could not confirm the local XProtect installation."; +"PureMac could not read this setting." = "PureMac could not read this setting."; +"PureMac did not find removable items in the selected scan areas." = "PureMac did not find removable items in the selected scan areas."; +"PureMac measures allocated disk space without changing files." = "PureMac measures allocated disk space without changing files."; +"PureMac reads the selected folder and does not change anything during a scan." = "PureMac reads the selected folder and does not change anything during a scan."; +"PureMac will ask Homebrew for available versions when you start the check." = "PureMac will ask Homebrew for available versions when you start the check."; +"PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing." = "PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing."; +"PureMac.app" = "PureMac.app"; +"Ready for protected locations" = "Ready for protected locations"; +"Refresh disk information" = "Refresh disk information"; +"Refreshing package data and comparing installed versions." = "Refreshing package data and comparing installed versions."; +"Refused to delete %lld protected item(s) (home credential directory or similar)." = "Refused to delete %lld protected item(s) (home credential directory or similar)."; +"Remove %lld files" = "Remove %lld files"; +"Remove %lld items" = "Remove %lld items"; +"Remove apps and their related files" = "Remove apps and their related files"; +"Remove selected app files?" = "Remove selected app files?"; +"Remove selected files?" = "Remove selected files?"; +"Remove selected leftovers?" = "Remove selected leftovers?"; +"Removing the items you selected." = "Removing the items you selected."; +"Reveal %@ in Finder" = "Reveal %@ in Finder"; +"Reveal plist in Finder" = "Reveal plist in Finder"; +"Reveal skipped item in Finder" = "Reveal skipped item in Finder"; +"Review and update apps installed as Homebrew casks." = "Review and update apps installed as Homebrew casks."; +"Review built-in privacy and safety checks" = "Review built-in privacy and safety checks"; +"Review matching files side by side" = "Review matching files side by side"; +"Review only" = "Review only"; +"Review removal" = "Review removal"; +"Review the groups before acting" = "Review the groups before acting"; +"Review the macOS safeguards that protect apps, disks, network access, and system files." = "Review the macOS safeguards that protect apps, disks, network access, and system files."; +"Review the results and choose exactly what to remove." = "Review the results and choose exactly what to remove."; +"Review which apps can access private data and hardware." = "Review which apps can access private data and hardware."; +"Run audit" = "Run audit"; +"Run the scan again when you are ready to check every area." = "Run the scan again when you are ready to check every area."; +"Safari privacy guide" = "Safari privacy guide"; +"Safari: Settings > Privacy" = "Safari: Settings > Privacy"; +"Sample limit reached" = "Sample limit reached"; +"Scan Another Folder" = "Scan Another Folder"; +"Scan Folder" = "Scan Folder"; +"Scan Photos" = "Scan Photos"; +"Scan again" = "Scan again"; +"Scan complete" = "Scan complete"; +"Scan could not finish" = "Scan could not finish"; +"Scan first, then review the exact files before removing anything." = "Scan first, then review the exact files before removing anything."; +"Scan stopped" = "Scan stopped"; +"Scan this Mac" = "Scan this Mac"; +"Scan this category" = "Scan this category"; +"Scanning %@…" = "Scanning %@…"; +"Scheduled" = "Scheduled"; +"Security Settings" = "Security Settings"; +"See current resource use and review what starts in the background." = "See current resource use and review what starts in the background."; +"See what is taking up space" = "See what is taking up space"; +"Select %@" = "Select %@"; +"Select a tool from the sidebar." = "Select a tool from the sidebar."; +"Select any folder to see which files and subfolders occupy the most disk space." = "Select any folder to see which files and subfolders occupy the most disk space."; +"Select apps to update" = "Select apps to update"; +"Select at least one app to update." = "Select at least one app to update."; +"Select copies" = "Select copies"; +"Select the apps Homebrew should upgrade." = "Select the apps Homebrew should upgrade."; +"Select the extra copies you want to review" = "Select the extra copies you want to review"; +"Select visible" = "Select visible"; +"Selected" = "Selected"; +"Selected cleanup items are permanently removed." = "Selected cleanup items are permanently removed."; +"Share of scanned space" = "Share of scanned space"; +"Shares storage with %@" = "Shares storage with %@"; +"Show %@ in Finder" = "Show %@ in Finder"; +"Show in Finder" = "Show in Finder"; +"Shows a confirmation before moving the selected copies" = "Shows a confirmation before moving the selected copies"; +"Similar Photos" = "Similar Photos"; +"Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality." = "Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality."; +"Size unavailable" = "Size unavailable"; +"Skipped items" = "Skipped items"; +"Smallest first" = "Smallest first"; +"Snapshot could not be deleted" = "Snapshot could not be deleted"; +"Software Update" = "Software Update"; +"Some contents were skipped or inaccessible" = "Some contents were skipped or inaccessible"; +"Some files were not moved" = "Some files were not moved"; +"Some information could not be read (%lld)" = "Some information could not be read (%lld)"; +"Some items need attention" = "Some items need attention"; +"Some locations are unavailable" = "Some locations are unavailable"; +"Some protected locations are unavailable. Full Disk Access allows a more complete scan." = "Some protected locations are unavailable. Full Disk Access allows a more complete scan."; +"Some selected files" = "Some selected files"; +"Sort" = "Sort"; +"Space Explorer" = "Space Explorer"; +"Startup and background items" = "Startup and background items"; +"Stop" = "Stop"; +"Stop scan" = "Stop scan"; +"Stopped" = "Stopped"; +"Stopping keeps the results found so far." = "Stopping keeps the results found so far."; +"Stops scanning without changing any files" = "Stops scanning without changing any files"; +"Suggested groups" = "Suggested groups"; +"Symbolic link" = "Symbolic link"; +"Symbolic links and cloud-only items are excluded." = "Symbolic links and cloud-only items are excluded."; +"Symbolic links cannot be scanned: %@" = "Symbolic links cannot be scanned: %@"; +"Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted." = "Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted."; +"System Integrity Protection" = "System Integrity Protection"; +"System Integrity Protection is turned off." = "System Integrity Protection is turned off."; +"System daemon" = "System daemon"; +"System update" = "System update"; +"System-wide agent" = "System-wide agent"; +"The analyzed photos did not meet PureMac's visual similarity threshold." = "The analyzed photos did not meet PureMac's visual similarity threshold."; +"The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan." = "The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan."; +"The check timed out." = "The check timed out."; +"The copy marked Keep is missing or changed: %@" = "The copy marked Keep is missing or changed: %@"; +"The inspected user and third-party launch folders are empty." = "The inspected user and third-party launch folders are empty."; +"The launch item is not a property-list dictionary." = "The launch item is not a property-list dictionary."; +"The macOS application firewall is turned off." = "The macOS application firewall is turned off."; +"The protected copy cannot be moved to Trash: %@" = "The protected copy cannot be moved to Trash: %@"; +"The scan stopped. Available results are ready to review." = "The scan stopped. Available results are ready to review."; +"The selected folder cannot be scanned: %@" = "The selected folder cannot be scanned: %@"; +"The selected folder could not be read: %@" = "The selected folder could not be read: %@"; +"The selected folder is stored in the cloud and has not been downloaded: %@" = "The selected folder is stored in the cloud and has not been downloaded: %@"; +"The selected item is not a folder: %@" = "The selected item is not a folder: %@"; +"The startup disk is encrypted with FileVault." = "The startup disk is encrypted with FileVault."; +"The startup disk is not encrypted with FileVault." = "The startup disk is not encrypted with FileVault."; +"The system returned an unrecognized status." = "The system returned an unrecognized status."; +"There are no cleanup items in this category." = "There are no cleanup items in this category."; +"This folder is empty or its contents were excluded from the scan." = "This folder is empty or its contents were excluded from the scan."; +"This permanently removes %@. Its size is unknown, and the action cannot be undone." = "This permanently removes %@. Its size is unknown, and the action cannot be undone."; +"This permanently removes the selected Time Machine snapshot." = "This permanently removes the selected Time Machine snapshot."; +"This snapshot does not have a verified Time Machine timestamp." = "This snapshot does not have a verified Time Machine timestamp."; +"Time Machine" = "Time Machine"; +"Time Machine Settings" = "Time Machine Settings"; +"Time Machine did not report any snapshots for the startup disk." = "Time Machine did not report any snapshots for the startup disk."; +"Time Machine snapshots are unavailable" = "Time Machine snapshots are unavailable"; +"Time Machine snapshots can be reviewed and removed individually" = "Time Machine snapshots can be reviewed and removed individually"; +"Tools" = "Tools"; +"Try Again" = "Try Again"; +"Try another name, size, or date range." = "Try another name, size, or date range."; +"Uninstaller" = "Uninstaller"; +"Unknown" = "Unknown"; +"Unknown error" = "Unknown error"; +"Updates from Homebrew" = "Updates from Homebrew"; +"Updating…" = "Updating…"; +"Upgrade %lld Apps" = "Upgrade %lld Apps"; +"Upgrade 1 App" = "Upgrade 1 App"; +"Upgrade selected apps?" = "Upgrade selected apps?"; +"User agent" = "User agent"; +"Verifying possible matches" = "Verifying possible matches"; +"Watches folders" = "Watches folders"; +"Watches paths" = "Watches paths"; +"XProtect" = "XProtect"; +"allocated in this folder" = "allocated in this folder"; +"definitions %@" = "definitions %@"; +"engine %@" = "engine %@"; +"macOS does not report reliable per-snapshot sizes in this listing." = "macOS does not report reliable per-snapshot sizes in this listing."; +"reclaimed" = "reclaimed"; +"similar group" = "similar group"; +"similar groups" = "similar groups"; +"tmutil is not available on this Mac." = "tmutil is not available on this Mac."; diff --git a/PureMac/pl.lproj/Localizable.strings b/PureMac/pl.lproj/Localizable.strings index 376acd2..4795b4c 100644 --- a/PureMac/pl.lproj/Localizable.strings +++ b/PureMac/pl.lproj/Localizable.strings @@ -460,3 +460,410 @@ /* Simulator runtimes */ "Simulator runtime" = "Środowisko uruchomieniowe symulatora"; + +/* Current dashboard, tools, and cleanup review — English fallback until translated */ +"\nAnd %lld more." = "\nAnd %lld more."; +"%@ %@ to %@" = "%@ %@ to %@"; +"%@ available" = "%@ available"; +"%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again." = "%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again."; +"%@ did not finish within the allowed time." = "%@ did not finish within the allowed time."; +"%@ exited with status %d%@" = "%@ exited with status %d%@"; +"%@ files inspected" = "%@ files inspected"; +"%@ found across %lld categories." = "%@ found across %lld categories."; +"%@ found before the scan stopped. Results may be incomplete." = "%@ found before the scan stopped. Results may be incomplete."; +"%@ of %@" = "%@ of %@"; +"%@ of %@ candidates · %@ verified" = "%@ of %@ candidates · %@ verified"; +"%@ reviewable" = "%@ reviewable"; +"%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone." = "%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone."; +"%@ will move to Trash" = "%@ will move to Trash"; +"%lld analyzed" = "%lld analyzed"; +"%lld apps selected" = "%lld apps selected"; +"%lld areas" = "%lld areas"; +"%lld compared" = "%lld compared"; +"%lld exact copies · %@ each" = "%lld exact copies · %@ each"; +"%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access." = "%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access."; +"%lld file(s) could not be removed. Check that the items still exist and are not in use." = "%lld file(s) could not be removed. Check that the items still exist and are not in use."; +"%lld files totaling %@ were moved. Every protected copy remains in place." = "%lld files totaling %@ were moved. Every protected copy remains in place."; +"%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place." = "%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place."; +"%lld files · %lld folders" = "%lld files · %lld folders"; +"%lld folders" = "%lld folders"; +"%lld found" = "%lld found"; +"%lld inaccessible" = "%lld inaccessible"; +"%lld items · %@ found" = "%lld items · %@ found"; +"%lld matched" = "%lld matched"; +"%lld of %lld items shown" = "%lld of %lld items shown"; +"%lld percent" = "%lld percent"; +"%lld photos" = "%lld photos"; +"%lld photos · %@" = "%lld photos · %@"; +"%lld selected items will be permanently deleted. Review the list before continuing." = "%lld selected items will be permanently deleted. Review the list before continuing."; +"%lld selected · %@" = "%lld selected · %@"; +"%lld skipped" = "%lld skipped"; +"%lld unsafe or unavailable items were not scanned" = "%lld unsafe or unavailable items were not scanned"; +"%lld unsafe or unavailable items were skipped." = "%lld unsafe or unavailable items were skipped."; +"%lld updates available" = "%lld updates available"; +"%lld%% visual score" = "%lld%% visual score"; +", and %lld more" = ", and %lld more"; +"1 app selected" = "1 app selected"; +"1 update available" = "1 update available"; +"500 photo limit" = "500 photo limit"; +"A clear view of reclaimable storage and the tools that manage it." = "A clear view of reclaimable storage and the tools that manage it."; +"A selected file is missing or changed: %@" = "A selected file is missing or changed: %@"; +"A selected file no longer matches its kept copy: %@" = "A selected file no longer matches its kept copy: %@"; +"Access denied" = "Access denied"; +"Administrator removal failed: %@" = "Administrator removal failed: %@"; +"Always exclude from cleanup" = "Always exclude from cleanup"; +"Any age" = "Any age"; +"Any size" = "Any size"; +"App Updates" = "App Updates"; +"App and document packages are excluded: %@" = "App and document packages are excluded: %@"; +"App bundle missing" = "App bundle missing"; +"App downloads are checked before opening." = "App downloads are checked before opening."; +"App permissions" = "App permissions"; +"Apple Guide" = "Apple Guide"; +"Apple's built-in malware protection is installed. Update recency is managed by macOS." = "Apple's built-in malware protection is installed. Update recency is managed by macOS."; +"Application Firewall" = "Application Firewall"; +"Apps outside Homebrew" = "Apps outside Homebrew"; +"At login" = "At login"; +"Available" = "Available"; +"Available to review" = "Available to review"; +"Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions." = "Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions."; +"Browser privacy" = "Browser privacy"; +"Building visual signatures" = "Building visual signatures"; +"Camera" = "Camera"; +"Care" = "Care"; +"Changed during scan" = "Changed during scan"; +"Check Again" = "Check Again"; +"Check again" = "Check again"; +"Check built-in safeguards" = "Check built-in safeguards"; +"Check installed apps for new versions" = "Check installed apps for new versions"; +"Check installed cask apps" = "Check installed cask apps"; +"Checked %@. Unknown means the setting could not be confirmed." = "Checked %@. Unknown means the setting could not be confirmed."; +"Checking" = "Checking"; +"Checking Homebrew casks" = "Checking Homebrew casks"; +"Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation." = "Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation."; +"Checking your Mac. Nothing is removed during a scan." = "Checking your Mac. Nothing is removed during a scan."; +"Choose Another Folder" = "Choose Another Folder"; +"Choose Folder" = "Choose Folder"; +"Choose a Folder" = "Choose a Folder"; +"Choose a folder of photos" = "Choose a folder of photos"; +"Choose a folder to check for duplicate files" = "Choose a folder to check for duplicate files"; +"Choose a folder to inspect" = "Choose a folder to inspect"; +"Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically." = "Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically."; +"Choose a photo folder" = "Choose a photo folder"; +"Choose where to look" = "Choose where to look"; +"Chrome privacy guide" = "Chrome privacy guide"; +"Clean selected items" = "Clean selected items"; +"Cleaning selected items" = "Cleaning selected items"; +"Cleanup Exclusions" = "Cleanup Exclusions"; +"Cleanup finished and disk information is refreshing." = "Cleanup finished and disk information is refreshing."; +"Cleanup plan" = "Cleanup plan"; +"Clear Selection" = "Clear Selection"; +"Clear filters" = "Clear filters"; +"Clear search" = "Clear search"; +"Clear selection" = "Clear selection"; +"Cloud-only file" = "Cloud-only file"; +"Collapse duplicate group" = "Collapse duplicate group"; +"Compare visually similar photos" = "Compare visually similar photos"; +"Conditional keep alive" = "Conditional keep alive"; +"Copy path" = "Copy path"; +"Could not inspect %@" = "Could not inspect %@"; +"Could not list Time Machine snapshots" = "Could not list Time Machine snapshots"; +"Could not read" = "Could not read"; +"Could not read %@" = "Could not read %@"; +"Couldn't check for updates" = "Couldn't check for updates"; +"Current scan path" = "Current scan path"; +"Delete" = "Delete"; +"Delete Snapshot" = "Delete Snapshot"; +"Delete local snapshot?" = "Delete local snapshot?"; +"Deselect visible" = "Deselect visible"; +"Developer Cleanup" = "Developer Cleanup"; +"Disabled" = "Disabled"; +"Downloaded apps are not being assessed by Gatekeeper." = "Downloaded apps are not being assessed by Gatekeeper."; +"Drag to tilt" = "Drag to tilt"; +"Duplicate Finder" = "Duplicate Finder"; +"Duplicate groups" = "Duplicate groups"; +"Every %lld seconds" = "Every %lld seconds"; +"Every eligible file was checked." = "Every eligible file was checked."; +"Exact-match cleanup with a protected copy in every group" = "Exact-match cleanup with a protected copy in every group"; +"Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it." = "Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it."; +"Expand duplicate group" = "Expand duplicate group"; +"File" = "File"; +"FileVault" = "FileVault"; +"FileVault Settings" = "FileVault Settings"; +"Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them." = "Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them."; +"Filter cleanup files" = "Filter cleanup files"; +"Find a file or path" = "Find a file or path"; +"Find copies that are exactly the same" = "Find copies that are exactly the same"; +"Find space to reclaim." = "Find space to reclaim."; +"Find visually related shots in a folder and review them side by side." = "Find visually related shots in a folder and review them side by side."; +"Find what uses the most disk space" = "Find what uses the most disk space"; +"Finding local photos" = "Finding local photos"; +"Firewall Settings" = "Firewall Settings"; +"Focused utilities for storage, apps, and system maintenance" = "Focused utilities for storage, apps, and system maintenance"; +"Folder could not be inspected" = "Folder could not be inspected"; +"Full Disk Access is off" = "Full Disk Access is off"; +"Full access" = "Full access"; +"Gatekeeper" = "Gatekeeper"; +"Group %lld" = "Group %lld"; +"Grouping similar shots" = "Grouping similar shots"; +"Hard-linked copy" = "Hard-linked copy"; +"Homebrew apps are up to date" = "Homebrew apps are up to date"; +"Homebrew did not finish before the operation timed out." = "Homebrew did not finish before the operation timed out."; +"Homebrew finished, but %lld selected apps still report updates." = "Homebrew finished, but %lld selected apps still report updates."; +"Homebrew finished, but 1 selected app still reports an update." = "Homebrew finished, but 1 selected app still reports an update."; +"Homebrew finished. Check again to verify installed versions." = "Homebrew finished. Check again to verify installed versions."; +"Homebrew not found" = "Homebrew not found"; +"Homebrew produced more output than PureMac could safely retain." = "Homebrew produced more output than PureMac could safely retain."; +"Homebrew returned an invalid cask identifier: %@" = "Homebrew returned an invalid cask identifier: %@"; +"Homebrew returned update information PureMac could not read." = "Homebrew returned update information PureMac could not read."; +"Homebrew updated the %lld selected apps." = "Homebrew updated the %lld selected apps."; +"Homebrew updated the selected app." = "Homebrew updated the selected app."; +"Homebrew was not found in a standard installation location." = "Homebrew was not found in a standard installation location."; +"Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process." = "Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process."; +"Includes %lld selected items hidden by filters." = "Includes %lld selected items hidden by filters."; +"Incoming network connections are filtered." = "Incoming network connections are filtered."; +"Inspect" = "Inspect"; +"Inspect a folder by allocated disk space. Your files are never changed." = "Inspect a folder by allocated disk space. Your files are never changed."; +"Inspect memory and background activity" = "Inspect memory and background activity"; +"Inspect startup items and local snapshots again" = "Inspect startup items and local snapshots again"; +"Inspected %@ files in %@. %@" = "Inspected %@ files in %@. %@"; +"Inspecting startup items and local snapshots…" = "Inspecting startup items and local snapshots…"; +"Inspection stopped" = "Inspection stopped"; +"Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels." = "Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels."; +"Installed" = "Installed"; +"Installed %@" = "Installed %@"; +"Keep" = "Keep"; +"Keep PureMac open until this pass finishes." = "Keep PureMac open until this pass finishes."; +"Keep alive" = "Keep alive"; +"Largest first" = "Largest first"; +"Largest items" = "Largest items"; +"Last activity: %@" = "Last activity: %@"; +"Last checked" = "Last checked"; +"Launch agents and daemons installed outside macOS system folders" = "Launch agents and daemons installed outside macOS system folders"; +"Leftovers" = "Leftovers"; +"Live" = "Live"; +"Live resources" = "Live resources"; +"Local and private" = "Local and private"; +"Local files" = "Local files"; +"Local snapshot" = "Local snapshot"; +"Local snapshots" = "Local snapshots"; +"Location" = "Location"; +"Login Items Settings" = "Login Items Settings"; +"Looking through files" = "Looking through files"; +"Mac storage" = "Mac storage"; +"Managed cleanup action" = "Managed cleanup action"; +"Matching files" = "Matching files"; +"Measuring allocated space" = "Measuring allocated space"; +"Memory pressure use" = "Memory pressure use"; +"Microphone" = "Microphone"; +"Modified" = "Modified"; +"Move selected duplicates to Trash?" = "Move selected duplicates to Trash?"; +"Moved to Trash" = "Moved to Trash"; +"Name" = "Name"; +"Needs attention" = "Needs attention"; +"Network state" = "Network state"; +"No exact duplicates found" = "No exact duplicates found"; +"No excluded paths" = "No excluded paths"; +"No files found" = "No files found"; +"No files were changed. Rescan this folder when you are ready." = "No files were changed. Rescan this folder when you are ready."; +"No launchd items found" = "No launchd items found"; +"No local snapshots reported" = "No local snapshots reported"; +"No matching files" = "No matching files"; +"No measurable items" = "No measurable items"; +"No photos were changed. You can scan the folder again at any time." = "No photos were changed. You can scan the folder again at any time."; +"No reclaimable items were found before the scan stopped." = "No reclaimable items were found before the scan stopped."; +"No reclaimable items were found in the areas checked." = "No reclaimable items were found in the areas checked."; +"No results yet" = "No results yet"; +"No scan run yet" = "No scan run yet"; +"No similar groups found" = "No similar groups found"; +"No updates are currently available for the cask apps Homebrew manages." = "No updates are currently available for the cask apps Homebrew manages."; +"Nothing selected" = "Nothing selected"; +"Nothing to clean" = "Nothing to clean"; +"Nothing was moved" = "Nothing was moved"; +"Off" = "Off"; +"Older than 30 days" = "Older than 30 days"; +"Older than 6 months" = "Older than 6 months"; +"Older than a year" = "Older than a year"; +"Oldest first" = "Oldest first"; +"On" = "On"; +"Open Activity Monitor" = "Open Activity Monitor"; +"Open App Store Updates" = "Open App Store Updates"; +"Open Folder" = "Open Folder"; +"Open a category to review individual items" = "Open a category to review individual items"; +"Open folder" = "Open folder"; +"Open the App Store updates page. Direct-download apps may provide their own updater." = "Open the App Store updates page. Direct-download apps may provide their own updater."; +"Opens a folder picker" = "Opens a folder picker"; +"Over 1 GB" = "Over 1 GB"; +"Over 10 GB" = "Over 10 GB"; +"Over 100 MB" = "Over 100 MB"; +"Package" = "Package"; +"Package contents" = "Package contents"; +"Package · %lld files" = "Package · %lld files"; +"Partial result" = "Partial result"; +"Partial results" = "Partial results"; +"Performance" = "Performance"; +"Permanently delete %@?" = "Permanently delete %@?"; +"Permanently remove %lld items" = "Permanently remove %lld items"; +"Personal data or an optional cleanup action. Left unselected by default." = "Personal data or an optional cleanup action. Left unselected by default."; +"Photos could not be compared" = "Photos could not be compared"; +"Pinned" = "Pinned"; +"Preparing scan" = "Preparing scan"; +"Preparing the next area…" = "Preparing the next area…"; +"Preparing visual comparison" = "Preparing visual comparison"; +"Program not declared in this plist" = "Program not declared in this plist"; +"Protected caches and app containers will be skipped." = "Protected caches and app containers will be skipped."; +"Protected copy" = "Protected copy"; +"Protected system locations and processes are restricted." = "Protected system locations and processes are restricted."; +"Protection" = "Protection"; +"PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review." = "PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review."; +"PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed." = "PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed."; +"PureMac compares local image thumbnails without changing your photos." = "PureMac compares local image thumbnails without changing your photos."; +"PureMac could not confirm the local XProtect installation." = "PureMac could not confirm the local XProtect installation."; +"PureMac could not read this setting." = "PureMac could not read this setting."; +"PureMac did not find removable items in the selected scan areas." = "PureMac did not find removable items in the selected scan areas."; +"PureMac measures allocated disk space without changing files." = "PureMac measures allocated disk space without changing files."; +"PureMac reads the selected folder and does not change anything during a scan." = "PureMac reads the selected folder and does not change anything during a scan."; +"PureMac will ask Homebrew for available versions when you start the check." = "PureMac will ask Homebrew for available versions when you start the check."; +"PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing." = "PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing."; +"PureMac.app" = "PureMac.app"; +"Ready for protected locations" = "Ready for protected locations"; +"Refresh disk information" = "Refresh disk information"; +"Refreshing package data and comparing installed versions." = "Refreshing package data and comparing installed versions."; +"Refused to delete %lld protected item(s) (home credential directory or similar)." = "Refused to delete %lld protected item(s) (home credential directory or similar)."; +"Remove %lld files" = "Remove %lld files"; +"Remove %lld items" = "Remove %lld items"; +"Remove apps and their related files" = "Remove apps and their related files"; +"Remove selected app files?" = "Remove selected app files?"; +"Remove selected files?" = "Remove selected files?"; +"Remove selected leftovers?" = "Remove selected leftovers?"; +"Removing the items you selected." = "Removing the items you selected."; +"Reveal %@ in Finder" = "Reveal %@ in Finder"; +"Reveal plist in Finder" = "Reveal plist in Finder"; +"Reveal skipped item in Finder" = "Reveal skipped item in Finder"; +"Review and update apps installed as Homebrew casks." = "Review and update apps installed as Homebrew casks."; +"Review built-in privacy and safety checks" = "Review built-in privacy and safety checks"; +"Review matching files side by side" = "Review matching files side by side"; +"Review only" = "Review only"; +"Review removal" = "Review removal"; +"Review the groups before acting" = "Review the groups before acting"; +"Review the macOS safeguards that protect apps, disks, network access, and system files." = "Review the macOS safeguards that protect apps, disks, network access, and system files."; +"Review the results and choose exactly what to remove." = "Review the results and choose exactly what to remove."; +"Review which apps can access private data and hardware." = "Review which apps can access private data and hardware."; +"Run audit" = "Run audit"; +"Run the scan again when you are ready to check every area." = "Run the scan again when you are ready to check every area."; +"Safari privacy guide" = "Safari privacy guide"; +"Safari: Settings > Privacy" = "Safari: Settings > Privacy"; +"Sample limit reached" = "Sample limit reached"; +"Scan Another Folder" = "Scan Another Folder"; +"Scan Folder" = "Scan Folder"; +"Scan Photos" = "Scan Photos"; +"Scan again" = "Scan again"; +"Scan complete" = "Scan complete"; +"Scan could not finish" = "Scan could not finish"; +"Scan first, then review the exact files before removing anything." = "Scan first, then review the exact files before removing anything."; +"Scan stopped" = "Scan stopped"; +"Scan this Mac" = "Scan this Mac"; +"Scan this category" = "Scan this category"; +"Scanning %@…" = "Scanning %@…"; +"Scheduled" = "Scheduled"; +"Security Settings" = "Security Settings"; +"See current resource use and review what starts in the background." = "See current resource use and review what starts in the background."; +"See what is taking up space" = "See what is taking up space"; +"Select %@" = "Select %@"; +"Select a tool from the sidebar." = "Select a tool from the sidebar."; +"Select any folder to see which files and subfolders occupy the most disk space." = "Select any folder to see which files and subfolders occupy the most disk space."; +"Select apps to update" = "Select apps to update"; +"Select at least one app to update." = "Select at least one app to update."; +"Select copies" = "Select copies"; +"Select the apps Homebrew should upgrade." = "Select the apps Homebrew should upgrade."; +"Select the extra copies you want to review" = "Select the extra copies you want to review"; +"Select visible" = "Select visible"; +"Selected" = "Selected"; +"Selected cleanup items are permanently removed." = "Selected cleanup items are permanently removed."; +"Share of scanned space" = "Share of scanned space"; +"Shares storage with %@" = "Shares storage with %@"; +"Show %@ in Finder" = "Show %@ in Finder"; +"Show in Finder" = "Show in Finder"; +"Shows a confirmation before moving the selected copies" = "Shows a confirmation before moving the selected copies"; +"Similar Photos" = "Similar Photos"; +"Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality." = "Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality."; +"Size unavailable" = "Size unavailable"; +"Skipped items" = "Skipped items"; +"Smallest first" = "Smallest first"; +"Snapshot could not be deleted" = "Snapshot could not be deleted"; +"Software Update" = "Software Update"; +"Some contents were skipped or inaccessible" = "Some contents were skipped or inaccessible"; +"Some files were not moved" = "Some files were not moved"; +"Some information could not be read (%lld)" = "Some information could not be read (%lld)"; +"Some items need attention" = "Some items need attention"; +"Some locations are unavailable" = "Some locations are unavailable"; +"Some protected locations are unavailable. Full Disk Access allows a more complete scan." = "Some protected locations are unavailable. Full Disk Access allows a more complete scan."; +"Some selected files" = "Some selected files"; +"Sort" = "Sort"; +"Space Explorer" = "Space Explorer"; +"Startup and background items" = "Startup and background items"; +"Stop" = "Stop"; +"Stop scan" = "Stop scan"; +"Stopped" = "Stopped"; +"Stopping keeps the results found so far." = "Stopping keeps the results found so far."; +"Stops scanning without changing any files" = "Stops scanning without changing any files"; +"Suggested groups" = "Suggested groups"; +"Symbolic link" = "Symbolic link"; +"Symbolic links and cloud-only items are excluded." = "Symbolic links and cloud-only items are excluded."; +"Symbolic links cannot be scanned: %@" = "Symbolic links cannot be scanned: %@"; +"Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted." = "Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted."; +"System Integrity Protection" = "System Integrity Protection"; +"System Integrity Protection is turned off." = "System Integrity Protection is turned off."; +"System daemon" = "System daemon"; +"System update" = "System update"; +"System-wide agent" = "System-wide agent"; +"The analyzed photos did not meet PureMac's visual similarity threshold." = "The analyzed photos did not meet PureMac's visual similarity threshold."; +"The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan." = "The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan."; +"The check timed out." = "The check timed out."; +"The copy marked Keep is missing or changed: %@" = "The copy marked Keep is missing or changed: %@"; +"The inspected user and third-party launch folders are empty." = "The inspected user and third-party launch folders are empty."; +"The launch item is not a property-list dictionary." = "The launch item is not a property-list dictionary."; +"The macOS application firewall is turned off." = "The macOS application firewall is turned off."; +"The protected copy cannot be moved to Trash: %@" = "The protected copy cannot be moved to Trash: %@"; +"The scan stopped. Available results are ready to review." = "The scan stopped. Available results are ready to review."; +"The selected folder cannot be scanned: %@" = "The selected folder cannot be scanned: %@"; +"The selected folder could not be read: %@" = "The selected folder could not be read: %@"; +"The selected folder is stored in the cloud and has not been downloaded: %@" = "The selected folder is stored in the cloud and has not been downloaded: %@"; +"The selected item is not a folder: %@" = "The selected item is not a folder: %@"; +"The startup disk is encrypted with FileVault." = "The startup disk is encrypted with FileVault."; +"The startup disk is not encrypted with FileVault." = "The startup disk is not encrypted with FileVault."; +"The system returned an unrecognized status." = "The system returned an unrecognized status."; +"There are no cleanup items in this category." = "There are no cleanup items in this category."; +"This folder is empty or its contents were excluded from the scan." = "This folder is empty or its contents were excluded from the scan."; +"This permanently removes %@. Its size is unknown, and the action cannot be undone." = "This permanently removes %@. Its size is unknown, and the action cannot be undone."; +"This permanently removes the selected Time Machine snapshot." = "This permanently removes the selected Time Machine snapshot."; +"This snapshot does not have a verified Time Machine timestamp." = "This snapshot does not have a verified Time Machine timestamp."; +"Time Machine" = "Time Machine"; +"Time Machine Settings" = "Time Machine Settings"; +"Time Machine did not report any snapshots for the startup disk." = "Time Machine did not report any snapshots for the startup disk."; +"Time Machine snapshots are unavailable" = "Time Machine snapshots are unavailable"; +"Time Machine snapshots can be reviewed and removed individually" = "Time Machine snapshots can be reviewed and removed individually"; +"Tools" = "Tools"; +"Try Again" = "Try Again"; +"Try another name, size, or date range." = "Try another name, size, or date range."; +"Uninstaller" = "Uninstaller"; +"Unknown" = "Unknown"; +"Unknown error" = "Unknown error"; +"Updates from Homebrew" = "Updates from Homebrew"; +"Updating…" = "Updating…"; +"Upgrade %lld Apps" = "Upgrade %lld Apps"; +"Upgrade 1 App" = "Upgrade 1 App"; +"Upgrade selected apps?" = "Upgrade selected apps?"; +"User agent" = "User agent"; +"Verifying possible matches" = "Verifying possible matches"; +"Watches folders" = "Watches folders"; +"Watches paths" = "Watches paths"; +"XProtect" = "XProtect"; +"allocated in this folder" = "allocated in this folder"; +"definitions %@" = "definitions %@"; +"engine %@" = "engine %@"; +"macOS does not report reliable per-snapshot sizes in this listing." = "macOS does not report reliable per-snapshot sizes in this listing."; +"reclaimed" = "reclaimed"; +"similar group" = "similar group"; +"similar groups" = "similar groups"; +"tmutil is not available on this Mac." = "tmutil is not available on this Mac."; diff --git a/PureMac/pt-BR.lproj/Localizable.strings b/PureMac/pt-BR.lproj/Localizable.strings index 2efda7d..ab73796 100644 --- a/PureMac/pt-BR.lproj/Localizable.strings +++ b/PureMac/pt-BR.lproj/Localizable.strings @@ -460,3 +460,410 @@ /* Simulator runtimes */ "Simulator runtime" = "Runtime do simulador"; + +/* Current dashboard, tools, and cleanup review — English fallback until translated */ +"\nAnd %lld more." = "\nAnd %lld more."; +"%@ %@ to %@" = "%@ %@ to %@"; +"%@ available" = "%@ available"; +"%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again." = "%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again."; +"%@ did not finish within the allowed time." = "%@ did not finish within the allowed time."; +"%@ exited with status %d%@" = "%@ exited with status %d%@"; +"%@ files inspected" = "%@ files inspected"; +"%@ found across %lld categories." = "%@ found across %lld categories."; +"%@ found before the scan stopped. Results may be incomplete." = "%@ found before the scan stopped. Results may be incomplete."; +"%@ of %@" = "%@ of %@"; +"%@ of %@ candidates · %@ verified" = "%@ of %@ candidates · %@ verified"; +"%@ reviewable" = "%@ reviewable"; +"%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone." = "%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone."; +"%@ will move to Trash" = "%@ will move to Trash"; +"%lld analyzed" = "%lld analyzed"; +"%lld apps selected" = "%lld apps selected"; +"%lld areas" = "%lld areas"; +"%lld compared" = "%lld compared"; +"%lld exact copies · %@ each" = "%lld exact copies · %@ each"; +"%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access." = "%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access."; +"%lld file(s) could not be removed. Check that the items still exist and are not in use." = "%lld file(s) could not be removed. Check that the items still exist and are not in use."; +"%lld files totaling %@ were moved. Every protected copy remains in place." = "%lld files totaling %@ were moved. Every protected copy remains in place."; +"%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place." = "%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place."; +"%lld files · %lld folders" = "%lld files · %lld folders"; +"%lld folders" = "%lld folders"; +"%lld found" = "%lld found"; +"%lld inaccessible" = "%lld inaccessible"; +"%lld items · %@ found" = "%lld items · %@ found"; +"%lld matched" = "%lld matched"; +"%lld of %lld items shown" = "%lld of %lld items shown"; +"%lld percent" = "%lld percent"; +"%lld photos" = "%lld photos"; +"%lld photos · %@" = "%lld photos · %@"; +"%lld selected items will be permanently deleted. Review the list before continuing." = "%lld selected items will be permanently deleted. Review the list before continuing."; +"%lld selected · %@" = "%lld selected · %@"; +"%lld skipped" = "%lld skipped"; +"%lld unsafe or unavailable items were not scanned" = "%lld unsafe or unavailable items were not scanned"; +"%lld unsafe or unavailable items were skipped." = "%lld unsafe or unavailable items were skipped."; +"%lld updates available" = "%lld updates available"; +"%lld%% visual score" = "%lld%% visual score"; +", and %lld more" = ", and %lld more"; +"1 app selected" = "1 app selected"; +"1 update available" = "1 update available"; +"500 photo limit" = "500 photo limit"; +"A clear view of reclaimable storage and the tools that manage it." = "A clear view of reclaimable storage and the tools that manage it."; +"A selected file is missing or changed: %@" = "A selected file is missing or changed: %@"; +"A selected file no longer matches its kept copy: %@" = "A selected file no longer matches its kept copy: %@"; +"Access denied" = "Access denied"; +"Administrator removal failed: %@" = "Administrator removal failed: %@"; +"Always exclude from cleanup" = "Always exclude from cleanup"; +"Any age" = "Any age"; +"Any size" = "Any size"; +"App Updates" = "App Updates"; +"App and document packages are excluded: %@" = "App and document packages are excluded: %@"; +"App bundle missing" = "App bundle missing"; +"App downloads are checked before opening." = "App downloads are checked before opening."; +"App permissions" = "App permissions"; +"Apple Guide" = "Apple Guide"; +"Apple's built-in malware protection is installed. Update recency is managed by macOS." = "Apple's built-in malware protection is installed. Update recency is managed by macOS."; +"Application Firewall" = "Application Firewall"; +"Apps outside Homebrew" = "Apps outside Homebrew"; +"At login" = "At login"; +"Available" = "Available"; +"Available to review" = "Available to review"; +"Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions." = "Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions."; +"Browser privacy" = "Browser privacy"; +"Building visual signatures" = "Building visual signatures"; +"Camera" = "Camera"; +"Care" = "Care"; +"Changed during scan" = "Changed during scan"; +"Check Again" = "Check Again"; +"Check again" = "Check again"; +"Check built-in safeguards" = "Check built-in safeguards"; +"Check installed apps for new versions" = "Check installed apps for new versions"; +"Check installed cask apps" = "Check installed cask apps"; +"Checked %@. Unknown means the setting could not be confirmed." = "Checked %@. Unknown means the setting could not be confirmed."; +"Checking" = "Checking"; +"Checking Homebrew casks" = "Checking Homebrew casks"; +"Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation." = "Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation."; +"Checking your Mac. Nothing is removed during a scan." = "Checking your Mac. Nothing is removed during a scan."; +"Choose Another Folder" = "Choose Another Folder"; +"Choose Folder" = "Choose Folder"; +"Choose a Folder" = "Choose a Folder"; +"Choose a folder of photos" = "Choose a folder of photos"; +"Choose a folder to check for duplicate files" = "Choose a folder to check for duplicate files"; +"Choose a folder to inspect" = "Choose a folder to inspect"; +"Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically." = "Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically."; +"Choose a photo folder" = "Choose a photo folder"; +"Choose where to look" = "Choose where to look"; +"Chrome privacy guide" = "Chrome privacy guide"; +"Clean selected items" = "Clean selected items"; +"Cleaning selected items" = "Cleaning selected items"; +"Cleanup Exclusions" = "Cleanup Exclusions"; +"Cleanup finished and disk information is refreshing." = "Cleanup finished and disk information is refreshing."; +"Cleanup plan" = "Cleanup plan"; +"Clear Selection" = "Clear Selection"; +"Clear filters" = "Clear filters"; +"Clear search" = "Clear search"; +"Clear selection" = "Clear selection"; +"Cloud-only file" = "Cloud-only file"; +"Collapse duplicate group" = "Collapse duplicate group"; +"Compare visually similar photos" = "Compare visually similar photos"; +"Conditional keep alive" = "Conditional keep alive"; +"Copy path" = "Copy path"; +"Could not inspect %@" = "Could not inspect %@"; +"Could not list Time Machine snapshots" = "Could not list Time Machine snapshots"; +"Could not read" = "Could not read"; +"Could not read %@" = "Could not read %@"; +"Couldn't check for updates" = "Couldn't check for updates"; +"Current scan path" = "Current scan path"; +"Delete" = "Delete"; +"Delete Snapshot" = "Delete Snapshot"; +"Delete local snapshot?" = "Delete local snapshot?"; +"Deselect visible" = "Deselect visible"; +"Developer Cleanup" = "Developer Cleanup"; +"Disabled" = "Disabled"; +"Downloaded apps are not being assessed by Gatekeeper." = "Downloaded apps are not being assessed by Gatekeeper."; +"Drag to tilt" = "Drag to tilt"; +"Duplicate Finder" = "Duplicate Finder"; +"Duplicate groups" = "Duplicate groups"; +"Every %lld seconds" = "Every %lld seconds"; +"Every eligible file was checked." = "Every eligible file was checked."; +"Exact-match cleanup with a protected copy in every group" = "Exact-match cleanup with a protected copy in every group"; +"Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it." = "Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it."; +"Expand duplicate group" = "Expand duplicate group"; +"File" = "File"; +"FileVault" = "FileVault"; +"FileVault Settings" = "FileVault Settings"; +"Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them." = "Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them."; +"Filter cleanup files" = "Filter cleanup files"; +"Find a file or path" = "Find a file or path"; +"Find copies that are exactly the same" = "Find copies that are exactly the same"; +"Find space to reclaim." = "Find space to reclaim."; +"Find visually related shots in a folder and review them side by side." = "Find visually related shots in a folder and review them side by side."; +"Find what uses the most disk space" = "Find what uses the most disk space"; +"Finding local photos" = "Finding local photos"; +"Firewall Settings" = "Firewall Settings"; +"Focused utilities for storage, apps, and system maintenance" = "Focused utilities for storage, apps, and system maintenance"; +"Folder could not be inspected" = "Folder could not be inspected"; +"Full Disk Access is off" = "Full Disk Access is off"; +"Full access" = "Full access"; +"Gatekeeper" = "Gatekeeper"; +"Group %lld" = "Group %lld"; +"Grouping similar shots" = "Grouping similar shots"; +"Hard-linked copy" = "Hard-linked copy"; +"Homebrew apps are up to date" = "Homebrew apps are up to date"; +"Homebrew did not finish before the operation timed out." = "Homebrew did not finish before the operation timed out."; +"Homebrew finished, but %lld selected apps still report updates." = "Homebrew finished, but %lld selected apps still report updates."; +"Homebrew finished, but 1 selected app still reports an update." = "Homebrew finished, but 1 selected app still reports an update."; +"Homebrew finished. Check again to verify installed versions." = "Homebrew finished. Check again to verify installed versions."; +"Homebrew not found" = "Homebrew not found"; +"Homebrew produced more output than PureMac could safely retain." = "Homebrew produced more output than PureMac could safely retain."; +"Homebrew returned an invalid cask identifier: %@" = "Homebrew returned an invalid cask identifier: %@"; +"Homebrew returned update information PureMac could not read." = "Homebrew returned update information PureMac could not read."; +"Homebrew updated the %lld selected apps." = "Homebrew updated the %lld selected apps."; +"Homebrew updated the selected app." = "Homebrew updated the selected app."; +"Homebrew was not found in a standard installation location." = "Homebrew was not found in a standard installation location."; +"Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process." = "Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process."; +"Includes %lld selected items hidden by filters." = "Includes %lld selected items hidden by filters."; +"Incoming network connections are filtered." = "Incoming network connections are filtered."; +"Inspect" = "Inspect"; +"Inspect a folder by allocated disk space. Your files are never changed." = "Inspect a folder by allocated disk space. Your files are never changed."; +"Inspect memory and background activity" = "Inspect memory and background activity"; +"Inspect startup items and local snapshots again" = "Inspect startup items and local snapshots again"; +"Inspected %@ files in %@. %@" = "Inspected %@ files in %@. %@"; +"Inspecting startup items and local snapshots…" = "Inspecting startup items and local snapshots…"; +"Inspection stopped" = "Inspection stopped"; +"Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels." = "Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels."; +"Installed" = "Installed"; +"Installed %@" = "Installed %@"; +"Keep" = "Keep"; +"Keep PureMac open until this pass finishes." = "Keep PureMac open until this pass finishes."; +"Keep alive" = "Keep alive"; +"Largest first" = "Largest first"; +"Largest items" = "Largest items"; +"Last activity: %@" = "Last activity: %@"; +"Last checked" = "Last checked"; +"Launch agents and daemons installed outside macOS system folders" = "Launch agents and daemons installed outside macOS system folders"; +"Leftovers" = "Leftovers"; +"Live" = "Live"; +"Live resources" = "Live resources"; +"Local and private" = "Local and private"; +"Local files" = "Local files"; +"Local snapshot" = "Local snapshot"; +"Local snapshots" = "Local snapshots"; +"Location" = "Location"; +"Login Items Settings" = "Login Items Settings"; +"Looking through files" = "Looking through files"; +"Mac storage" = "Mac storage"; +"Managed cleanup action" = "Managed cleanup action"; +"Matching files" = "Matching files"; +"Measuring allocated space" = "Measuring allocated space"; +"Memory pressure use" = "Memory pressure use"; +"Microphone" = "Microphone"; +"Modified" = "Modified"; +"Move selected duplicates to Trash?" = "Move selected duplicates to Trash?"; +"Moved to Trash" = "Moved to Trash"; +"Name" = "Name"; +"Needs attention" = "Needs attention"; +"Network state" = "Network state"; +"No exact duplicates found" = "No exact duplicates found"; +"No excluded paths" = "No excluded paths"; +"No files found" = "No files found"; +"No files were changed. Rescan this folder when you are ready." = "No files were changed. Rescan this folder when you are ready."; +"No launchd items found" = "No launchd items found"; +"No local snapshots reported" = "No local snapshots reported"; +"No matching files" = "No matching files"; +"No measurable items" = "No measurable items"; +"No photos were changed. You can scan the folder again at any time." = "No photos were changed. You can scan the folder again at any time."; +"No reclaimable items were found before the scan stopped." = "No reclaimable items were found before the scan stopped."; +"No reclaimable items were found in the areas checked." = "No reclaimable items were found in the areas checked."; +"No results yet" = "No results yet"; +"No scan run yet" = "No scan run yet"; +"No similar groups found" = "No similar groups found"; +"No updates are currently available for the cask apps Homebrew manages." = "No updates are currently available for the cask apps Homebrew manages."; +"Nothing selected" = "Nothing selected"; +"Nothing to clean" = "Nothing to clean"; +"Nothing was moved" = "Nothing was moved"; +"Off" = "Off"; +"Older than 30 days" = "Older than 30 days"; +"Older than 6 months" = "Older than 6 months"; +"Older than a year" = "Older than a year"; +"Oldest first" = "Oldest first"; +"On" = "On"; +"Open Activity Monitor" = "Open Activity Monitor"; +"Open App Store Updates" = "Open App Store Updates"; +"Open Folder" = "Open Folder"; +"Open a category to review individual items" = "Open a category to review individual items"; +"Open folder" = "Open folder"; +"Open the App Store updates page. Direct-download apps may provide their own updater." = "Open the App Store updates page. Direct-download apps may provide their own updater."; +"Opens a folder picker" = "Opens a folder picker"; +"Over 1 GB" = "Over 1 GB"; +"Over 10 GB" = "Over 10 GB"; +"Over 100 MB" = "Over 100 MB"; +"Package" = "Package"; +"Package contents" = "Package contents"; +"Package · %lld files" = "Package · %lld files"; +"Partial result" = "Partial result"; +"Partial results" = "Partial results"; +"Performance" = "Performance"; +"Permanently delete %@?" = "Permanently delete %@?"; +"Permanently remove %lld items" = "Permanently remove %lld items"; +"Personal data or an optional cleanup action. Left unselected by default." = "Personal data or an optional cleanup action. Left unselected by default."; +"Photos could not be compared" = "Photos could not be compared"; +"Pinned" = "Pinned"; +"Preparing scan" = "Preparing scan"; +"Preparing the next area…" = "Preparing the next area…"; +"Preparing visual comparison" = "Preparing visual comparison"; +"Program not declared in this plist" = "Program not declared in this plist"; +"Protected caches and app containers will be skipped." = "Protected caches and app containers will be skipped."; +"Protected copy" = "Protected copy"; +"Protected system locations and processes are restricted." = "Protected system locations and processes are restricted."; +"Protection" = "Protection"; +"PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review." = "PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review."; +"PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed." = "PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed."; +"PureMac compares local image thumbnails without changing your photos." = "PureMac compares local image thumbnails without changing your photos."; +"PureMac could not confirm the local XProtect installation." = "PureMac could not confirm the local XProtect installation."; +"PureMac could not read this setting." = "PureMac could not read this setting."; +"PureMac did not find removable items in the selected scan areas." = "PureMac did not find removable items in the selected scan areas."; +"PureMac measures allocated disk space without changing files." = "PureMac measures allocated disk space without changing files."; +"PureMac reads the selected folder and does not change anything during a scan." = "PureMac reads the selected folder and does not change anything during a scan."; +"PureMac will ask Homebrew for available versions when you start the check." = "PureMac will ask Homebrew for available versions when you start the check."; +"PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing." = "PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing."; +"PureMac.app" = "PureMac.app"; +"Ready for protected locations" = "Ready for protected locations"; +"Refresh disk information" = "Refresh disk information"; +"Refreshing package data and comparing installed versions." = "Refreshing package data and comparing installed versions."; +"Refused to delete %lld protected item(s) (home credential directory or similar)." = "Refused to delete %lld protected item(s) (home credential directory or similar)."; +"Remove %lld files" = "Remove %lld files"; +"Remove %lld items" = "Remove %lld items"; +"Remove apps and their related files" = "Remove apps and their related files"; +"Remove selected app files?" = "Remove selected app files?"; +"Remove selected files?" = "Remove selected files?"; +"Remove selected leftovers?" = "Remove selected leftovers?"; +"Removing the items you selected." = "Removing the items you selected."; +"Reveal %@ in Finder" = "Reveal %@ in Finder"; +"Reveal plist in Finder" = "Reveal plist in Finder"; +"Reveal skipped item in Finder" = "Reveal skipped item in Finder"; +"Review and update apps installed as Homebrew casks." = "Review and update apps installed as Homebrew casks."; +"Review built-in privacy and safety checks" = "Review built-in privacy and safety checks"; +"Review matching files side by side" = "Review matching files side by side"; +"Review only" = "Review only"; +"Review removal" = "Review removal"; +"Review the groups before acting" = "Review the groups before acting"; +"Review the macOS safeguards that protect apps, disks, network access, and system files." = "Review the macOS safeguards that protect apps, disks, network access, and system files."; +"Review the results and choose exactly what to remove." = "Review the results and choose exactly what to remove."; +"Review which apps can access private data and hardware." = "Review which apps can access private data and hardware."; +"Run audit" = "Run audit"; +"Run the scan again when you are ready to check every area." = "Run the scan again when you are ready to check every area."; +"Safari privacy guide" = "Safari privacy guide"; +"Safari: Settings > Privacy" = "Safari: Settings > Privacy"; +"Sample limit reached" = "Sample limit reached"; +"Scan Another Folder" = "Scan Another Folder"; +"Scan Folder" = "Scan Folder"; +"Scan Photos" = "Scan Photos"; +"Scan again" = "Scan again"; +"Scan complete" = "Scan complete"; +"Scan could not finish" = "Scan could not finish"; +"Scan first, then review the exact files before removing anything." = "Scan first, then review the exact files before removing anything."; +"Scan stopped" = "Scan stopped"; +"Scan this Mac" = "Scan this Mac"; +"Scan this category" = "Scan this category"; +"Scanning %@…" = "Scanning %@…"; +"Scheduled" = "Scheduled"; +"Security Settings" = "Security Settings"; +"See current resource use and review what starts in the background." = "See current resource use and review what starts in the background."; +"See what is taking up space" = "See what is taking up space"; +"Select %@" = "Select %@"; +"Select a tool from the sidebar." = "Select a tool from the sidebar."; +"Select any folder to see which files and subfolders occupy the most disk space." = "Select any folder to see which files and subfolders occupy the most disk space."; +"Select apps to update" = "Select apps to update"; +"Select at least one app to update." = "Select at least one app to update."; +"Select copies" = "Select copies"; +"Select the apps Homebrew should upgrade." = "Select the apps Homebrew should upgrade."; +"Select the extra copies you want to review" = "Select the extra copies you want to review"; +"Select visible" = "Select visible"; +"Selected" = "Selected"; +"Selected cleanup items are permanently removed." = "Selected cleanup items are permanently removed."; +"Share of scanned space" = "Share of scanned space"; +"Shares storage with %@" = "Shares storage with %@"; +"Show %@ in Finder" = "Show %@ in Finder"; +"Show in Finder" = "Show in Finder"; +"Shows a confirmation before moving the selected copies" = "Shows a confirmation before moving the selected copies"; +"Similar Photos" = "Similar Photos"; +"Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality." = "Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality."; +"Size unavailable" = "Size unavailable"; +"Skipped items" = "Skipped items"; +"Smallest first" = "Smallest first"; +"Snapshot could not be deleted" = "Snapshot could not be deleted"; +"Software Update" = "Software Update"; +"Some contents were skipped or inaccessible" = "Some contents were skipped or inaccessible"; +"Some files were not moved" = "Some files were not moved"; +"Some information could not be read (%lld)" = "Some information could not be read (%lld)"; +"Some items need attention" = "Some items need attention"; +"Some locations are unavailable" = "Some locations are unavailable"; +"Some protected locations are unavailable. Full Disk Access allows a more complete scan." = "Some protected locations are unavailable. Full Disk Access allows a more complete scan."; +"Some selected files" = "Some selected files"; +"Sort" = "Sort"; +"Space Explorer" = "Space Explorer"; +"Startup and background items" = "Startup and background items"; +"Stop" = "Stop"; +"Stop scan" = "Stop scan"; +"Stopped" = "Stopped"; +"Stopping keeps the results found so far." = "Stopping keeps the results found so far."; +"Stops scanning without changing any files" = "Stops scanning without changing any files"; +"Suggested groups" = "Suggested groups"; +"Symbolic link" = "Symbolic link"; +"Symbolic links and cloud-only items are excluded." = "Symbolic links and cloud-only items are excluded."; +"Symbolic links cannot be scanned: %@" = "Symbolic links cannot be scanned: %@"; +"Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted." = "Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted."; +"System Integrity Protection" = "System Integrity Protection"; +"System Integrity Protection is turned off." = "System Integrity Protection is turned off."; +"System daemon" = "System daemon"; +"System update" = "System update"; +"System-wide agent" = "System-wide agent"; +"The analyzed photos did not meet PureMac's visual similarity threshold." = "The analyzed photos did not meet PureMac's visual similarity threshold."; +"The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan." = "The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan."; +"The check timed out." = "The check timed out."; +"The copy marked Keep is missing or changed: %@" = "The copy marked Keep is missing or changed: %@"; +"The inspected user and third-party launch folders are empty." = "The inspected user and third-party launch folders are empty."; +"The launch item is not a property-list dictionary." = "The launch item is not a property-list dictionary."; +"The macOS application firewall is turned off." = "The macOS application firewall is turned off."; +"The protected copy cannot be moved to Trash: %@" = "The protected copy cannot be moved to Trash: %@"; +"The scan stopped. Available results are ready to review." = "The scan stopped. Available results are ready to review."; +"The selected folder cannot be scanned: %@" = "The selected folder cannot be scanned: %@"; +"The selected folder could not be read: %@" = "The selected folder could not be read: %@"; +"The selected folder is stored in the cloud and has not been downloaded: %@" = "The selected folder is stored in the cloud and has not been downloaded: %@"; +"The selected item is not a folder: %@" = "The selected item is not a folder: %@"; +"The startup disk is encrypted with FileVault." = "The startup disk is encrypted with FileVault."; +"The startup disk is not encrypted with FileVault." = "The startup disk is not encrypted with FileVault."; +"The system returned an unrecognized status." = "The system returned an unrecognized status."; +"There are no cleanup items in this category." = "There are no cleanup items in this category."; +"This folder is empty or its contents were excluded from the scan." = "This folder is empty or its contents were excluded from the scan."; +"This permanently removes %@. Its size is unknown, and the action cannot be undone." = "This permanently removes %@. Its size is unknown, and the action cannot be undone."; +"This permanently removes the selected Time Machine snapshot." = "This permanently removes the selected Time Machine snapshot."; +"This snapshot does not have a verified Time Machine timestamp." = "This snapshot does not have a verified Time Machine timestamp."; +"Time Machine" = "Time Machine"; +"Time Machine Settings" = "Time Machine Settings"; +"Time Machine did not report any snapshots for the startup disk." = "Time Machine did not report any snapshots for the startup disk."; +"Time Machine snapshots are unavailable" = "Time Machine snapshots are unavailable"; +"Time Machine snapshots can be reviewed and removed individually" = "Time Machine snapshots can be reviewed and removed individually"; +"Tools" = "Tools"; +"Try Again" = "Try Again"; +"Try another name, size, or date range." = "Try another name, size, or date range."; +"Uninstaller" = "Uninstaller"; +"Unknown" = "Unknown"; +"Unknown error" = "Unknown error"; +"Updates from Homebrew" = "Updates from Homebrew"; +"Updating…" = "Updating…"; +"Upgrade %lld Apps" = "Upgrade %lld Apps"; +"Upgrade 1 App" = "Upgrade 1 App"; +"Upgrade selected apps?" = "Upgrade selected apps?"; +"User agent" = "User agent"; +"Verifying possible matches" = "Verifying possible matches"; +"Watches folders" = "Watches folders"; +"Watches paths" = "Watches paths"; +"XProtect" = "XProtect"; +"allocated in this folder" = "allocated in this folder"; +"definitions %@" = "definitions %@"; +"engine %@" = "engine %@"; +"macOS does not report reliable per-snapshot sizes in this listing." = "macOS does not report reliable per-snapshot sizes in this listing."; +"reclaimed" = "reclaimed"; +"similar group" = "similar group"; +"similar groups" = "similar groups"; +"tmutil is not available on this Mac." = "tmutil is not available on this Mac."; diff --git a/PureMac/ru.lproj/Localizable.strings b/PureMac/ru.lproj/Localizable.strings index e51435a..ea8df3e 100644 --- a/PureMac/ru.lproj/Localizable.strings +++ b/PureMac/ru.lproj/Localizable.strings @@ -460,3 +460,410 @@ /* Simulator runtimes */ "Simulator runtime" = "Среда выполнения симулятора"; + +/* Current dashboard, tools, and cleanup review — English fallback until translated */ +"\nAnd %lld more." = "\nAnd %lld more."; +"%@ %@ to %@" = "%@ %@ to %@"; +"%@ available" = "%@ available"; +"%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again." = "%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again."; +"%@ did not finish within the allowed time." = "%@ did not finish within the allowed time."; +"%@ exited with status %d%@" = "%@ exited with status %d%@"; +"%@ files inspected" = "%@ files inspected"; +"%@ found across %lld categories." = "%@ found across %lld categories."; +"%@ found before the scan stopped. Results may be incomplete." = "%@ found before the scan stopped. Results may be incomplete."; +"%@ of %@" = "%@ of %@"; +"%@ of %@ candidates · %@ verified" = "%@ of %@ candidates · %@ verified"; +"%@ reviewable" = "%@ reviewable"; +"%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone." = "%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone."; +"%@ will move to Trash" = "%@ will move to Trash"; +"%lld analyzed" = "%lld analyzed"; +"%lld apps selected" = "%lld apps selected"; +"%lld areas" = "%lld areas"; +"%lld compared" = "%lld compared"; +"%lld exact copies · %@ each" = "%lld exact copies · %@ each"; +"%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access." = "%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access."; +"%lld file(s) could not be removed. Check that the items still exist and are not in use." = "%lld file(s) could not be removed. Check that the items still exist and are not in use."; +"%lld files totaling %@ were moved. Every protected copy remains in place." = "%lld files totaling %@ were moved. Every protected copy remains in place."; +"%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place." = "%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place."; +"%lld files · %lld folders" = "%lld files · %lld folders"; +"%lld folders" = "%lld folders"; +"%lld found" = "%lld found"; +"%lld inaccessible" = "%lld inaccessible"; +"%lld items · %@ found" = "%lld items · %@ found"; +"%lld matched" = "%lld matched"; +"%lld of %lld items shown" = "%lld of %lld items shown"; +"%lld percent" = "%lld percent"; +"%lld photos" = "%lld photos"; +"%lld photos · %@" = "%lld photos · %@"; +"%lld selected items will be permanently deleted. Review the list before continuing." = "%lld selected items will be permanently deleted. Review the list before continuing."; +"%lld selected · %@" = "%lld selected · %@"; +"%lld skipped" = "%lld skipped"; +"%lld unsafe or unavailable items were not scanned" = "%lld unsafe or unavailable items were not scanned"; +"%lld unsafe or unavailable items were skipped." = "%lld unsafe or unavailable items were skipped."; +"%lld updates available" = "%lld updates available"; +"%lld%% visual score" = "%lld%% visual score"; +", and %lld more" = ", and %lld more"; +"1 app selected" = "1 app selected"; +"1 update available" = "1 update available"; +"500 photo limit" = "500 photo limit"; +"A clear view of reclaimable storage and the tools that manage it." = "A clear view of reclaimable storage and the tools that manage it."; +"A selected file is missing or changed: %@" = "A selected file is missing or changed: %@"; +"A selected file no longer matches its kept copy: %@" = "A selected file no longer matches its kept copy: %@"; +"Access denied" = "Access denied"; +"Administrator removal failed: %@" = "Administrator removal failed: %@"; +"Always exclude from cleanup" = "Always exclude from cleanup"; +"Any age" = "Any age"; +"Any size" = "Any size"; +"App Updates" = "App Updates"; +"App and document packages are excluded: %@" = "App and document packages are excluded: %@"; +"App bundle missing" = "App bundle missing"; +"App downloads are checked before opening." = "App downloads are checked before opening."; +"App permissions" = "App permissions"; +"Apple Guide" = "Apple Guide"; +"Apple's built-in malware protection is installed. Update recency is managed by macOS." = "Apple's built-in malware protection is installed. Update recency is managed by macOS."; +"Application Firewall" = "Application Firewall"; +"Apps outside Homebrew" = "Apps outside Homebrew"; +"At login" = "At login"; +"Available" = "Available"; +"Available to review" = "Available to review"; +"Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions." = "Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions."; +"Browser privacy" = "Browser privacy"; +"Building visual signatures" = "Building visual signatures"; +"Camera" = "Camera"; +"Care" = "Care"; +"Changed during scan" = "Changed during scan"; +"Check Again" = "Check Again"; +"Check again" = "Check again"; +"Check built-in safeguards" = "Check built-in safeguards"; +"Check installed apps for new versions" = "Check installed apps for new versions"; +"Check installed cask apps" = "Check installed cask apps"; +"Checked %@. Unknown means the setting could not be confirmed." = "Checked %@. Unknown means the setting could not be confirmed."; +"Checking" = "Checking"; +"Checking Homebrew casks" = "Checking Homebrew casks"; +"Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation." = "Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation."; +"Checking your Mac. Nothing is removed during a scan." = "Checking your Mac. Nothing is removed during a scan."; +"Choose Another Folder" = "Choose Another Folder"; +"Choose Folder" = "Choose Folder"; +"Choose a Folder" = "Choose a Folder"; +"Choose a folder of photos" = "Choose a folder of photos"; +"Choose a folder to check for duplicate files" = "Choose a folder to check for duplicate files"; +"Choose a folder to inspect" = "Choose a folder to inspect"; +"Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically." = "Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically."; +"Choose a photo folder" = "Choose a photo folder"; +"Choose where to look" = "Choose where to look"; +"Chrome privacy guide" = "Chrome privacy guide"; +"Clean selected items" = "Clean selected items"; +"Cleaning selected items" = "Cleaning selected items"; +"Cleanup Exclusions" = "Cleanup Exclusions"; +"Cleanup finished and disk information is refreshing." = "Cleanup finished and disk information is refreshing."; +"Cleanup plan" = "Cleanup plan"; +"Clear Selection" = "Clear Selection"; +"Clear filters" = "Clear filters"; +"Clear search" = "Clear search"; +"Clear selection" = "Clear selection"; +"Cloud-only file" = "Cloud-only file"; +"Collapse duplicate group" = "Collapse duplicate group"; +"Compare visually similar photos" = "Compare visually similar photos"; +"Conditional keep alive" = "Conditional keep alive"; +"Copy path" = "Copy path"; +"Could not inspect %@" = "Could not inspect %@"; +"Could not list Time Machine snapshots" = "Could not list Time Machine snapshots"; +"Could not read" = "Could not read"; +"Could not read %@" = "Could not read %@"; +"Couldn't check for updates" = "Couldn't check for updates"; +"Current scan path" = "Current scan path"; +"Delete" = "Delete"; +"Delete Snapshot" = "Delete Snapshot"; +"Delete local snapshot?" = "Delete local snapshot?"; +"Deselect visible" = "Deselect visible"; +"Developer Cleanup" = "Developer Cleanup"; +"Disabled" = "Disabled"; +"Downloaded apps are not being assessed by Gatekeeper." = "Downloaded apps are not being assessed by Gatekeeper."; +"Drag to tilt" = "Drag to tilt"; +"Duplicate Finder" = "Duplicate Finder"; +"Duplicate groups" = "Duplicate groups"; +"Every %lld seconds" = "Every %lld seconds"; +"Every eligible file was checked." = "Every eligible file was checked."; +"Exact-match cleanup with a protected copy in every group" = "Exact-match cleanup with a protected copy in every group"; +"Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it." = "Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it."; +"Expand duplicate group" = "Expand duplicate group"; +"File" = "File"; +"FileVault" = "FileVault"; +"FileVault Settings" = "FileVault Settings"; +"Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them." = "Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them."; +"Filter cleanup files" = "Filter cleanup files"; +"Find a file or path" = "Find a file or path"; +"Find copies that are exactly the same" = "Find copies that are exactly the same"; +"Find space to reclaim." = "Find space to reclaim."; +"Find visually related shots in a folder and review them side by side." = "Find visually related shots in a folder and review them side by side."; +"Find what uses the most disk space" = "Find what uses the most disk space"; +"Finding local photos" = "Finding local photos"; +"Firewall Settings" = "Firewall Settings"; +"Focused utilities for storage, apps, and system maintenance" = "Focused utilities for storage, apps, and system maintenance"; +"Folder could not be inspected" = "Folder could not be inspected"; +"Full Disk Access is off" = "Full Disk Access is off"; +"Full access" = "Full access"; +"Gatekeeper" = "Gatekeeper"; +"Group %lld" = "Group %lld"; +"Grouping similar shots" = "Grouping similar shots"; +"Hard-linked copy" = "Hard-linked copy"; +"Homebrew apps are up to date" = "Homebrew apps are up to date"; +"Homebrew did not finish before the operation timed out." = "Homebrew did not finish before the operation timed out."; +"Homebrew finished, but %lld selected apps still report updates." = "Homebrew finished, but %lld selected apps still report updates."; +"Homebrew finished, but 1 selected app still reports an update." = "Homebrew finished, but 1 selected app still reports an update."; +"Homebrew finished. Check again to verify installed versions." = "Homebrew finished. Check again to verify installed versions."; +"Homebrew not found" = "Homebrew not found"; +"Homebrew produced more output than PureMac could safely retain." = "Homebrew produced more output than PureMac could safely retain."; +"Homebrew returned an invalid cask identifier: %@" = "Homebrew returned an invalid cask identifier: %@"; +"Homebrew returned update information PureMac could not read." = "Homebrew returned update information PureMac could not read."; +"Homebrew updated the %lld selected apps." = "Homebrew updated the %lld selected apps."; +"Homebrew updated the selected app." = "Homebrew updated the selected app."; +"Homebrew was not found in a standard installation location." = "Homebrew was not found in a standard installation location."; +"Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process." = "Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process."; +"Includes %lld selected items hidden by filters." = "Includes %lld selected items hidden by filters."; +"Incoming network connections are filtered." = "Incoming network connections are filtered."; +"Inspect" = "Inspect"; +"Inspect a folder by allocated disk space. Your files are never changed." = "Inspect a folder by allocated disk space. Your files are never changed."; +"Inspect memory and background activity" = "Inspect memory and background activity"; +"Inspect startup items and local snapshots again" = "Inspect startup items and local snapshots again"; +"Inspected %@ files in %@. %@" = "Inspected %@ files in %@. %@"; +"Inspecting startup items and local snapshots…" = "Inspecting startup items and local snapshots…"; +"Inspection stopped" = "Inspection stopped"; +"Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels." = "Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels."; +"Installed" = "Installed"; +"Installed %@" = "Installed %@"; +"Keep" = "Keep"; +"Keep PureMac open until this pass finishes." = "Keep PureMac open until this pass finishes."; +"Keep alive" = "Keep alive"; +"Largest first" = "Largest first"; +"Largest items" = "Largest items"; +"Last activity: %@" = "Last activity: %@"; +"Last checked" = "Last checked"; +"Launch agents and daemons installed outside macOS system folders" = "Launch agents and daemons installed outside macOS system folders"; +"Leftovers" = "Leftovers"; +"Live" = "Live"; +"Live resources" = "Live resources"; +"Local and private" = "Local and private"; +"Local files" = "Local files"; +"Local snapshot" = "Local snapshot"; +"Local snapshots" = "Local snapshots"; +"Location" = "Location"; +"Login Items Settings" = "Login Items Settings"; +"Looking through files" = "Looking through files"; +"Mac storage" = "Mac storage"; +"Managed cleanup action" = "Managed cleanup action"; +"Matching files" = "Matching files"; +"Measuring allocated space" = "Measuring allocated space"; +"Memory pressure use" = "Memory pressure use"; +"Microphone" = "Microphone"; +"Modified" = "Modified"; +"Move selected duplicates to Trash?" = "Move selected duplicates to Trash?"; +"Moved to Trash" = "Moved to Trash"; +"Name" = "Name"; +"Needs attention" = "Needs attention"; +"Network state" = "Network state"; +"No exact duplicates found" = "No exact duplicates found"; +"No excluded paths" = "No excluded paths"; +"No files found" = "No files found"; +"No files were changed. Rescan this folder when you are ready." = "No files were changed. Rescan this folder when you are ready."; +"No launchd items found" = "No launchd items found"; +"No local snapshots reported" = "No local snapshots reported"; +"No matching files" = "No matching files"; +"No measurable items" = "No measurable items"; +"No photos were changed. You can scan the folder again at any time." = "No photos were changed. You can scan the folder again at any time."; +"No reclaimable items were found before the scan stopped." = "No reclaimable items were found before the scan stopped."; +"No reclaimable items were found in the areas checked." = "No reclaimable items were found in the areas checked."; +"No results yet" = "No results yet"; +"No scan run yet" = "No scan run yet"; +"No similar groups found" = "No similar groups found"; +"No updates are currently available for the cask apps Homebrew manages." = "No updates are currently available for the cask apps Homebrew manages."; +"Nothing selected" = "Nothing selected"; +"Nothing to clean" = "Nothing to clean"; +"Nothing was moved" = "Nothing was moved"; +"Off" = "Off"; +"Older than 30 days" = "Older than 30 days"; +"Older than 6 months" = "Older than 6 months"; +"Older than a year" = "Older than a year"; +"Oldest first" = "Oldest first"; +"On" = "On"; +"Open Activity Monitor" = "Open Activity Monitor"; +"Open App Store Updates" = "Open App Store Updates"; +"Open Folder" = "Open Folder"; +"Open a category to review individual items" = "Open a category to review individual items"; +"Open folder" = "Open folder"; +"Open the App Store updates page. Direct-download apps may provide their own updater." = "Open the App Store updates page. Direct-download apps may provide their own updater."; +"Opens a folder picker" = "Opens a folder picker"; +"Over 1 GB" = "Over 1 GB"; +"Over 10 GB" = "Over 10 GB"; +"Over 100 MB" = "Over 100 MB"; +"Package" = "Package"; +"Package contents" = "Package contents"; +"Package · %lld files" = "Package · %lld files"; +"Partial result" = "Partial result"; +"Partial results" = "Partial results"; +"Performance" = "Performance"; +"Permanently delete %@?" = "Permanently delete %@?"; +"Permanently remove %lld items" = "Permanently remove %lld items"; +"Personal data or an optional cleanup action. Left unselected by default." = "Personal data or an optional cleanup action. Left unselected by default."; +"Photos could not be compared" = "Photos could not be compared"; +"Pinned" = "Pinned"; +"Preparing scan" = "Preparing scan"; +"Preparing the next area…" = "Preparing the next area…"; +"Preparing visual comparison" = "Preparing visual comparison"; +"Program not declared in this plist" = "Program not declared in this plist"; +"Protected caches and app containers will be skipped." = "Protected caches and app containers will be skipped."; +"Protected copy" = "Protected copy"; +"Protected system locations and processes are restricted." = "Protected system locations and processes are restricted."; +"Protection" = "Protection"; +"PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review." = "PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review."; +"PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed." = "PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed."; +"PureMac compares local image thumbnails without changing your photos." = "PureMac compares local image thumbnails without changing your photos."; +"PureMac could not confirm the local XProtect installation." = "PureMac could not confirm the local XProtect installation."; +"PureMac could not read this setting." = "PureMac could not read this setting."; +"PureMac did not find removable items in the selected scan areas." = "PureMac did not find removable items in the selected scan areas."; +"PureMac measures allocated disk space without changing files." = "PureMac measures allocated disk space without changing files."; +"PureMac reads the selected folder and does not change anything during a scan." = "PureMac reads the selected folder and does not change anything during a scan."; +"PureMac will ask Homebrew for available versions when you start the check." = "PureMac will ask Homebrew for available versions when you start the check."; +"PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing." = "PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing."; +"PureMac.app" = "PureMac.app"; +"Ready for protected locations" = "Ready for protected locations"; +"Refresh disk information" = "Refresh disk information"; +"Refreshing package data and comparing installed versions." = "Refreshing package data and comparing installed versions."; +"Refused to delete %lld protected item(s) (home credential directory or similar)." = "Refused to delete %lld protected item(s) (home credential directory or similar)."; +"Remove %lld files" = "Remove %lld files"; +"Remove %lld items" = "Remove %lld items"; +"Remove apps and their related files" = "Remove apps and their related files"; +"Remove selected app files?" = "Remove selected app files?"; +"Remove selected files?" = "Remove selected files?"; +"Remove selected leftovers?" = "Remove selected leftovers?"; +"Removing the items you selected." = "Removing the items you selected."; +"Reveal %@ in Finder" = "Reveal %@ in Finder"; +"Reveal plist in Finder" = "Reveal plist in Finder"; +"Reveal skipped item in Finder" = "Reveal skipped item in Finder"; +"Review and update apps installed as Homebrew casks." = "Review and update apps installed as Homebrew casks."; +"Review built-in privacy and safety checks" = "Review built-in privacy and safety checks"; +"Review matching files side by side" = "Review matching files side by side"; +"Review only" = "Review only"; +"Review removal" = "Review removal"; +"Review the groups before acting" = "Review the groups before acting"; +"Review the macOS safeguards that protect apps, disks, network access, and system files." = "Review the macOS safeguards that protect apps, disks, network access, and system files."; +"Review the results and choose exactly what to remove." = "Review the results and choose exactly what to remove."; +"Review which apps can access private data and hardware." = "Review which apps can access private data and hardware."; +"Run audit" = "Run audit"; +"Run the scan again when you are ready to check every area." = "Run the scan again when you are ready to check every area."; +"Safari privacy guide" = "Safari privacy guide"; +"Safari: Settings > Privacy" = "Safari: Settings > Privacy"; +"Sample limit reached" = "Sample limit reached"; +"Scan Another Folder" = "Scan Another Folder"; +"Scan Folder" = "Scan Folder"; +"Scan Photos" = "Scan Photos"; +"Scan again" = "Scan again"; +"Scan complete" = "Scan complete"; +"Scan could not finish" = "Scan could not finish"; +"Scan first, then review the exact files before removing anything." = "Scan first, then review the exact files before removing anything."; +"Scan stopped" = "Scan stopped"; +"Scan this Mac" = "Scan this Mac"; +"Scan this category" = "Scan this category"; +"Scanning %@…" = "Scanning %@…"; +"Scheduled" = "Scheduled"; +"Security Settings" = "Security Settings"; +"See current resource use and review what starts in the background." = "See current resource use and review what starts in the background."; +"See what is taking up space" = "See what is taking up space"; +"Select %@" = "Select %@"; +"Select a tool from the sidebar." = "Select a tool from the sidebar."; +"Select any folder to see which files and subfolders occupy the most disk space." = "Select any folder to see which files and subfolders occupy the most disk space."; +"Select apps to update" = "Select apps to update"; +"Select at least one app to update." = "Select at least one app to update."; +"Select copies" = "Select copies"; +"Select the apps Homebrew should upgrade." = "Select the apps Homebrew should upgrade."; +"Select the extra copies you want to review" = "Select the extra copies you want to review"; +"Select visible" = "Select visible"; +"Selected" = "Selected"; +"Selected cleanup items are permanently removed." = "Selected cleanup items are permanently removed."; +"Share of scanned space" = "Share of scanned space"; +"Shares storage with %@" = "Shares storage with %@"; +"Show %@ in Finder" = "Show %@ in Finder"; +"Show in Finder" = "Show in Finder"; +"Shows a confirmation before moving the selected copies" = "Shows a confirmation before moving the selected copies"; +"Similar Photos" = "Similar Photos"; +"Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality." = "Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality."; +"Size unavailable" = "Size unavailable"; +"Skipped items" = "Skipped items"; +"Smallest first" = "Smallest first"; +"Snapshot could not be deleted" = "Snapshot could not be deleted"; +"Software Update" = "Software Update"; +"Some contents were skipped or inaccessible" = "Some contents were skipped or inaccessible"; +"Some files were not moved" = "Some files were not moved"; +"Some information could not be read (%lld)" = "Some information could not be read (%lld)"; +"Some items need attention" = "Some items need attention"; +"Some locations are unavailable" = "Some locations are unavailable"; +"Some protected locations are unavailable. Full Disk Access allows a more complete scan." = "Some protected locations are unavailable. Full Disk Access allows a more complete scan."; +"Some selected files" = "Some selected files"; +"Sort" = "Sort"; +"Space Explorer" = "Space Explorer"; +"Startup and background items" = "Startup and background items"; +"Stop" = "Stop"; +"Stop scan" = "Stop scan"; +"Stopped" = "Stopped"; +"Stopping keeps the results found so far." = "Stopping keeps the results found so far."; +"Stops scanning without changing any files" = "Stops scanning without changing any files"; +"Suggested groups" = "Suggested groups"; +"Symbolic link" = "Symbolic link"; +"Symbolic links and cloud-only items are excluded." = "Symbolic links and cloud-only items are excluded."; +"Symbolic links cannot be scanned: %@" = "Symbolic links cannot be scanned: %@"; +"Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted." = "Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted."; +"System Integrity Protection" = "System Integrity Protection"; +"System Integrity Protection is turned off." = "System Integrity Protection is turned off."; +"System daemon" = "System daemon"; +"System update" = "System update"; +"System-wide agent" = "System-wide agent"; +"The analyzed photos did not meet PureMac's visual similarity threshold." = "The analyzed photos did not meet PureMac's visual similarity threshold."; +"The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan." = "The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan."; +"The check timed out." = "The check timed out."; +"The copy marked Keep is missing or changed: %@" = "The copy marked Keep is missing or changed: %@"; +"The inspected user and third-party launch folders are empty." = "The inspected user and third-party launch folders are empty."; +"The launch item is not a property-list dictionary." = "The launch item is not a property-list dictionary."; +"The macOS application firewall is turned off." = "The macOS application firewall is turned off."; +"The protected copy cannot be moved to Trash: %@" = "The protected copy cannot be moved to Trash: %@"; +"The scan stopped. Available results are ready to review." = "The scan stopped. Available results are ready to review."; +"The selected folder cannot be scanned: %@" = "The selected folder cannot be scanned: %@"; +"The selected folder could not be read: %@" = "The selected folder could not be read: %@"; +"The selected folder is stored in the cloud and has not been downloaded: %@" = "The selected folder is stored in the cloud and has not been downloaded: %@"; +"The selected item is not a folder: %@" = "The selected item is not a folder: %@"; +"The startup disk is encrypted with FileVault." = "The startup disk is encrypted with FileVault."; +"The startup disk is not encrypted with FileVault." = "The startup disk is not encrypted with FileVault."; +"The system returned an unrecognized status." = "The system returned an unrecognized status."; +"There are no cleanup items in this category." = "There are no cleanup items in this category."; +"This folder is empty or its contents were excluded from the scan." = "This folder is empty or its contents were excluded from the scan."; +"This permanently removes %@. Its size is unknown, and the action cannot be undone." = "This permanently removes %@. Its size is unknown, and the action cannot be undone."; +"This permanently removes the selected Time Machine snapshot." = "This permanently removes the selected Time Machine snapshot."; +"This snapshot does not have a verified Time Machine timestamp." = "This snapshot does not have a verified Time Machine timestamp."; +"Time Machine" = "Time Machine"; +"Time Machine Settings" = "Time Machine Settings"; +"Time Machine did not report any snapshots for the startup disk." = "Time Machine did not report any snapshots for the startup disk."; +"Time Machine snapshots are unavailable" = "Time Machine snapshots are unavailable"; +"Time Machine snapshots can be reviewed and removed individually" = "Time Machine snapshots can be reviewed and removed individually"; +"Tools" = "Tools"; +"Try Again" = "Try Again"; +"Try another name, size, or date range." = "Try another name, size, or date range."; +"Uninstaller" = "Uninstaller"; +"Unknown" = "Unknown"; +"Unknown error" = "Unknown error"; +"Updates from Homebrew" = "Updates from Homebrew"; +"Updating…" = "Updating…"; +"Upgrade %lld Apps" = "Upgrade %lld Apps"; +"Upgrade 1 App" = "Upgrade 1 App"; +"Upgrade selected apps?" = "Upgrade selected apps?"; +"User agent" = "User agent"; +"Verifying possible matches" = "Verifying possible matches"; +"Watches folders" = "Watches folders"; +"Watches paths" = "Watches paths"; +"XProtect" = "XProtect"; +"allocated in this folder" = "allocated in this folder"; +"definitions %@" = "definitions %@"; +"engine %@" = "engine %@"; +"macOS does not report reliable per-snapshot sizes in this listing." = "macOS does not report reliable per-snapshot sizes in this listing."; +"reclaimed" = "reclaimed"; +"similar group" = "similar group"; +"similar groups" = "similar groups"; +"tmutil is not available on this Mac." = "tmutil is not available on this Mac."; diff --git a/PureMac/uk.lproj/Localizable.strings b/PureMac/uk.lproj/Localizable.strings index 3647f7d..d072188 100644 --- a/PureMac/uk.lproj/Localizable.strings +++ b/PureMac/uk.lproj/Localizable.strings @@ -460,3 +460,410 @@ /* Simulator runtimes */ "Simulator runtime" = "Середовище виконання симулятора"; + +/* Current dashboard, tools, and cleanup review — English fallback until translated */ +"\nAnd %lld more." = "\nAnd %lld more."; +"%@ %@ to %@" = "%@ %@ to %@"; +"%@ available" = "%@ available"; +"%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again." = "%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again."; +"%@ did not finish within the allowed time." = "%@ did not finish within the allowed time."; +"%@ exited with status %d%@" = "%@ exited with status %d%@"; +"%@ files inspected" = "%@ files inspected"; +"%@ found across %lld categories." = "%@ found across %lld categories."; +"%@ found before the scan stopped. Results may be incomplete." = "%@ found before the scan stopped. Results may be incomplete."; +"%@ of %@" = "%@ of %@"; +"%@ of %@ candidates · %@ verified" = "%@ of %@ candidates · %@ verified"; +"%@ reviewable" = "%@ reviewable"; +"%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone." = "%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone."; +"%@ will move to Trash" = "%@ will move to Trash"; +"%lld analyzed" = "%lld analyzed"; +"%lld apps selected" = "%lld apps selected"; +"%lld areas" = "%lld areas"; +"%lld compared" = "%lld compared"; +"%lld exact copies · %@ each" = "%lld exact copies · %@ each"; +"%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access." = "%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access."; +"%lld file(s) could not be removed. Check that the items still exist and are not in use." = "%lld file(s) could not be removed. Check that the items still exist and are not in use."; +"%lld files totaling %@ were moved. Every protected copy remains in place." = "%lld files totaling %@ were moved. Every protected copy remains in place."; +"%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place." = "%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place."; +"%lld files · %lld folders" = "%lld files · %lld folders"; +"%lld folders" = "%lld folders"; +"%lld found" = "%lld found"; +"%lld inaccessible" = "%lld inaccessible"; +"%lld items · %@ found" = "%lld items · %@ found"; +"%lld matched" = "%lld matched"; +"%lld of %lld items shown" = "%lld of %lld items shown"; +"%lld percent" = "%lld percent"; +"%lld photos" = "%lld photos"; +"%lld photos · %@" = "%lld photos · %@"; +"%lld selected items will be permanently deleted. Review the list before continuing." = "%lld selected items will be permanently deleted. Review the list before continuing."; +"%lld selected · %@" = "%lld selected · %@"; +"%lld skipped" = "%lld skipped"; +"%lld unsafe or unavailable items were not scanned" = "%lld unsafe or unavailable items were not scanned"; +"%lld unsafe or unavailable items were skipped." = "%lld unsafe or unavailable items were skipped."; +"%lld updates available" = "%lld updates available"; +"%lld%% visual score" = "%lld%% visual score"; +", and %lld more" = ", and %lld more"; +"1 app selected" = "1 app selected"; +"1 update available" = "1 update available"; +"500 photo limit" = "500 photo limit"; +"A clear view of reclaimable storage and the tools that manage it." = "A clear view of reclaimable storage and the tools that manage it."; +"A selected file is missing or changed: %@" = "A selected file is missing or changed: %@"; +"A selected file no longer matches its kept copy: %@" = "A selected file no longer matches its kept copy: %@"; +"Access denied" = "Access denied"; +"Administrator removal failed: %@" = "Administrator removal failed: %@"; +"Always exclude from cleanup" = "Always exclude from cleanup"; +"Any age" = "Any age"; +"Any size" = "Any size"; +"App Updates" = "App Updates"; +"App and document packages are excluded: %@" = "App and document packages are excluded: %@"; +"App bundle missing" = "App bundle missing"; +"App downloads are checked before opening." = "App downloads are checked before opening."; +"App permissions" = "App permissions"; +"Apple Guide" = "Apple Guide"; +"Apple's built-in malware protection is installed. Update recency is managed by macOS." = "Apple's built-in malware protection is installed. Update recency is managed by macOS."; +"Application Firewall" = "Application Firewall"; +"Apps outside Homebrew" = "Apps outside Homebrew"; +"At login" = "At login"; +"Available" = "Available"; +"Available to review" = "Available to review"; +"Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions." = "Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions."; +"Browser privacy" = "Browser privacy"; +"Building visual signatures" = "Building visual signatures"; +"Camera" = "Camera"; +"Care" = "Care"; +"Changed during scan" = "Changed during scan"; +"Check Again" = "Check Again"; +"Check again" = "Check again"; +"Check built-in safeguards" = "Check built-in safeguards"; +"Check installed apps for new versions" = "Check installed apps for new versions"; +"Check installed cask apps" = "Check installed cask apps"; +"Checked %@. Unknown means the setting could not be confirmed." = "Checked %@. Unknown means the setting could not be confirmed."; +"Checking" = "Checking"; +"Checking Homebrew casks" = "Checking Homebrew casks"; +"Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation." = "Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation."; +"Checking your Mac. Nothing is removed during a scan." = "Checking your Mac. Nothing is removed during a scan."; +"Choose Another Folder" = "Choose Another Folder"; +"Choose Folder" = "Choose Folder"; +"Choose a Folder" = "Choose a Folder"; +"Choose a folder of photos" = "Choose a folder of photos"; +"Choose a folder to check for duplicate files" = "Choose a folder to check for duplicate files"; +"Choose a folder to inspect" = "Choose a folder to inspect"; +"Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically." = "Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically."; +"Choose a photo folder" = "Choose a photo folder"; +"Choose where to look" = "Choose where to look"; +"Chrome privacy guide" = "Chrome privacy guide"; +"Clean selected items" = "Clean selected items"; +"Cleaning selected items" = "Cleaning selected items"; +"Cleanup Exclusions" = "Cleanup Exclusions"; +"Cleanup finished and disk information is refreshing." = "Cleanup finished and disk information is refreshing."; +"Cleanup plan" = "Cleanup plan"; +"Clear Selection" = "Clear Selection"; +"Clear filters" = "Clear filters"; +"Clear search" = "Clear search"; +"Clear selection" = "Clear selection"; +"Cloud-only file" = "Cloud-only file"; +"Collapse duplicate group" = "Collapse duplicate group"; +"Compare visually similar photos" = "Compare visually similar photos"; +"Conditional keep alive" = "Conditional keep alive"; +"Copy path" = "Copy path"; +"Could not inspect %@" = "Could not inspect %@"; +"Could not list Time Machine snapshots" = "Could not list Time Machine snapshots"; +"Could not read" = "Could not read"; +"Could not read %@" = "Could not read %@"; +"Couldn't check for updates" = "Couldn't check for updates"; +"Current scan path" = "Current scan path"; +"Delete" = "Delete"; +"Delete Snapshot" = "Delete Snapshot"; +"Delete local snapshot?" = "Delete local snapshot?"; +"Deselect visible" = "Deselect visible"; +"Developer Cleanup" = "Developer Cleanup"; +"Disabled" = "Disabled"; +"Downloaded apps are not being assessed by Gatekeeper." = "Downloaded apps are not being assessed by Gatekeeper."; +"Drag to tilt" = "Drag to tilt"; +"Duplicate Finder" = "Duplicate Finder"; +"Duplicate groups" = "Duplicate groups"; +"Every %lld seconds" = "Every %lld seconds"; +"Every eligible file was checked." = "Every eligible file was checked."; +"Exact-match cleanup with a protected copy in every group" = "Exact-match cleanup with a protected copy in every group"; +"Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it." = "Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it."; +"Expand duplicate group" = "Expand duplicate group"; +"File" = "File"; +"FileVault" = "FileVault"; +"FileVault Settings" = "FileVault Settings"; +"Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them." = "Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them."; +"Filter cleanup files" = "Filter cleanup files"; +"Find a file or path" = "Find a file or path"; +"Find copies that are exactly the same" = "Find copies that are exactly the same"; +"Find space to reclaim." = "Find space to reclaim."; +"Find visually related shots in a folder and review them side by side." = "Find visually related shots in a folder and review them side by side."; +"Find what uses the most disk space" = "Find what uses the most disk space"; +"Finding local photos" = "Finding local photos"; +"Firewall Settings" = "Firewall Settings"; +"Focused utilities for storage, apps, and system maintenance" = "Focused utilities for storage, apps, and system maintenance"; +"Folder could not be inspected" = "Folder could not be inspected"; +"Full Disk Access is off" = "Full Disk Access is off"; +"Full access" = "Full access"; +"Gatekeeper" = "Gatekeeper"; +"Group %lld" = "Group %lld"; +"Grouping similar shots" = "Grouping similar shots"; +"Hard-linked copy" = "Hard-linked copy"; +"Homebrew apps are up to date" = "Homebrew apps are up to date"; +"Homebrew did not finish before the operation timed out." = "Homebrew did not finish before the operation timed out."; +"Homebrew finished, but %lld selected apps still report updates." = "Homebrew finished, but %lld selected apps still report updates."; +"Homebrew finished, but 1 selected app still reports an update." = "Homebrew finished, but 1 selected app still reports an update."; +"Homebrew finished. Check again to verify installed versions." = "Homebrew finished. Check again to verify installed versions."; +"Homebrew not found" = "Homebrew not found"; +"Homebrew produced more output than PureMac could safely retain." = "Homebrew produced more output than PureMac could safely retain."; +"Homebrew returned an invalid cask identifier: %@" = "Homebrew returned an invalid cask identifier: %@"; +"Homebrew returned update information PureMac could not read." = "Homebrew returned update information PureMac could not read."; +"Homebrew updated the %lld selected apps." = "Homebrew updated the %lld selected apps."; +"Homebrew updated the selected app." = "Homebrew updated the selected app."; +"Homebrew was not found in a standard installation location." = "Homebrew was not found in a standard installation location."; +"Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process." = "Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process."; +"Includes %lld selected items hidden by filters." = "Includes %lld selected items hidden by filters."; +"Incoming network connections are filtered." = "Incoming network connections are filtered."; +"Inspect" = "Inspect"; +"Inspect a folder by allocated disk space. Your files are never changed." = "Inspect a folder by allocated disk space. Your files are never changed."; +"Inspect memory and background activity" = "Inspect memory and background activity"; +"Inspect startup items and local snapshots again" = "Inspect startup items and local snapshots again"; +"Inspected %@ files in %@. %@" = "Inspected %@ files in %@. %@"; +"Inspecting startup items and local snapshots…" = "Inspecting startup items and local snapshots…"; +"Inspection stopped" = "Inspection stopped"; +"Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels." = "Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels."; +"Installed" = "Installed"; +"Installed %@" = "Installed %@"; +"Keep" = "Keep"; +"Keep PureMac open until this pass finishes." = "Keep PureMac open until this pass finishes."; +"Keep alive" = "Keep alive"; +"Largest first" = "Largest first"; +"Largest items" = "Largest items"; +"Last activity: %@" = "Last activity: %@"; +"Last checked" = "Last checked"; +"Launch agents and daemons installed outside macOS system folders" = "Launch agents and daemons installed outside macOS system folders"; +"Leftovers" = "Leftovers"; +"Live" = "Live"; +"Live resources" = "Live resources"; +"Local and private" = "Local and private"; +"Local files" = "Local files"; +"Local snapshot" = "Local snapshot"; +"Local snapshots" = "Local snapshots"; +"Location" = "Location"; +"Login Items Settings" = "Login Items Settings"; +"Looking through files" = "Looking through files"; +"Mac storage" = "Mac storage"; +"Managed cleanup action" = "Managed cleanup action"; +"Matching files" = "Matching files"; +"Measuring allocated space" = "Measuring allocated space"; +"Memory pressure use" = "Memory pressure use"; +"Microphone" = "Microphone"; +"Modified" = "Modified"; +"Move selected duplicates to Trash?" = "Move selected duplicates to Trash?"; +"Moved to Trash" = "Moved to Trash"; +"Name" = "Name"; +"Needs attention" = "Needs attention"; +"Network state" = "Network state"; +"No exact duplicates found" = "No exact duplicates found"; +"No excluded paths" = "No excluded paths"; +"No files found" = "No files found"; +"No files were changed. Rescan this folder when you are ready." = "No files were changed. Rescan this folder when you are ready."; +"No launchd items found" = "No launchd items found"; +"No local snapshots reported" = "No local snapshots reported"; +"No matching files" = "No matching files"; +"No measurable items" = "No measurable items"; +"No photos were changed. You can scan the folder again at any time." = "No photos were changed. You can scan the folder again at any time."; +"No reclaimable items were found before the scan stopped." = "No reclaimable items were found before the scan stopped."; +"No reclaimable items were found in the areas checked." = "No reclaimable items were found in the areas checked."; +"No results yet" = "No results yet"; +"No scan run yet" = "No scan run yet"; +"No similar groups found" = "No similar groups found"; +"No updates are currently available for the cask apps Homebrew manages." = "No updates are currently available for the cask apps Homebrew manages."; +"Nothing selected" = "Nothing selected"; +"Nothing to clean" = "Nothing to clean"; +"Nothing was moved" = "Nothing was moved"; +"Off" = "Off"; +"Older than 30 days" = "Older than 30 days"; +"Older than 6 months" = "Older than 6 months"; +"Older than a year" = "Older than a year"; +"Oldest first" = "Oldest first"; +"On" = "On"; +"Open Activity Monitor" = "Open Activity Monitor"; +"Open App Store Updates" = "Open App Store Updates"; +"Open Folder" = "Open Folder"; +"Open a category to review individual items" = "Open a category to review individual items"; +"Open folder" = "Open folder"; +"Open the App Store updates page. Direct-download apps may provide their own updater." = "Open the App Store updates page. Direct-download apps may provide their own updater."; +"Opens a folder picker" = "Opens a folder picker"; +"Over 1 GB" = "Over 1 GB"; +"Over 10 GB" = "Over 10 GB"; +"Over 100 MB" = "Over 100 MB"; +"Package" = "Package"; +"Package contents" = "Package contents"; +"Package · %lld files" = "Package · %lld files"; +"Partial result" = "Partial result"; +"Partial results" = "Partial results"; +"Performance" = "Performance"; +"Permanently delete %@?" = "Permanently delete %@?"; +"Permanently remove %lld items" = "Permanently remove %lld items"; +"Personal data or an optional cleanup action. Left unselected by default." = "Personal data or an optional cleanup action. Left unselected by default."; +"Photos could not be compared" = "Photos could not be compared"; +"Pinned" = "Pinned"; +"Preparing scan" = "Preparing scan"; +"Preparing the next area…" = "Preparing the next area…"; +"Preparing visual comparison" = "Preparing visual comparison"; +"Program not declared in this plist" = "Program not declared in this plist"; +"Protected caches and app containers will be skipped." = "Protected caches and app containers will be skipped."; +"Protected copy" = "Protected copy"; +"Protected system locations and processes are restricted." = "Protected system locations and processes are restricted."; +"Protection" = "Protection"; +"PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review." = "PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review."; +"PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed." = "PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed."; +"PureMac compares local image thumbnails without changing your photos." = "PureMac compares local image thumbnails without changing your photos."; +"PureMac could not confirm the local XProtect installation." = "PureMac could not confirm the local XProtect installation."; +"PureMac could not read this setting." = "PureMac could not read this setting."; +"PureMac did not find removable items in the selected scan areas." = "PureMac did not find removable items in the selected scan areas."; +"PureMac measures allocated disk space without changing files." = "PureMac measures allocated disk space without changing files."; +"PureMac reads the selected folder and does not change anything during a scan." = "PureMac reads the selected folder and does not change anything during a scan."; +"PureMac will ask Homebrew for available versions when you start the check." = "PureMac will ask Homebrew for available versions when you start the check."; +"PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing." = "PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing."; +"PureMac.app" = "PureMac.app"; +"Ready for protected locations" = "Ready for protected locations"; +"Refresh disk information" = "Refresh disk information"; +"Refreshing package data and comparing installed versions." = "Refreshing package data and comparing installed versions."; +"Refused to delete %lld protected item(s) (home credential directory or similar)." = "Refused to delete %lld protected item(s) (home credential directory or similar)."; +"Remove %lld files" = "Remove %lld files"; +"Remove %lld items" = "Remove %lld items"; +"Remove apps and their related files" = "Remove apps and their related files"; +"Remove selected app files?" = "Remove selected app files?"; +"Remove selected files?" = "Remove selected files?"; +"Remove selected leftovers?" = "Remove selected leftovers?"; +"Removing the items you selected." = "Removing the items you selected."; +"Reveal %@ in Finder" = "Reveal %@ in Finder"; +"Reveal plist in Finder" = "Reveal plist in Finder"; +"Reveal skipped item in Finder" = "Reveal skipped item in Finder"; +"Review and update apps installed as Homebrew casks." = "Review and update apps installed as Homebrew casks."; +"Review built-in privacy and safety checks" = "Review built-in privacy and safety checks"; +"Review matching files side by side" = "Review matching files side by side"; +"Review only" = "Review only"; +"Review removal" = "Review removal"; +"Review the groups before acting" = "Review the groups before acting"; +"Review the macOS safeguards that protect apps, disks, network access, and system files." = "Review the macOS safeguards that protect apps, disks, network access, and system files."; +"Review the results and choose exactly what to remove." = "Review the results and choose exactly what to remove."; +"Review which apps can access private data and hardware." = "Review which apps can access private data and hardware."; +"Run audit" = "Run audit"; +"Run the scan again when you are ready to check every area." = "Run the scan again when you are ready to check every area."; +"Safari privacy guide" = "Safari privacy guide"; +"Safari: Settings > Privacy" = "Safari: Settings > Privacy"; +"Sample limit reached" = "Sample limit reached"; +"Scan Another Folder" = "Scan Another Folder"; +"Scan Folder" = "Scan Folder"; +"Scan Photos" = "Scan Photos"; +"Scan again" = "Scan again"; +"Scan complete" = "Scan complete"; +"Scan could not finish" = "Scan could not finish"; +"Scan first, then review the exact files before removing anything." = "Scan first, then review the exact files before removing anything."; +"Scan stopped" = "Scan stopped"; +"Scan this Mac" = "Scan this Mac"; +"Scan this category" = "Scan this category"; +"Scanning %@…" = "Scanning %@…"; +"Scheduled" = "Scheduled"; +"Security Settings" = "Security Settings"; +"See current resource use and review what starts in the background." = "See current resource use and review what starts in the background."; +"See what is taking up space" = "See what is taking up space"; +"Select %@" = "Select %@"; +"Select a tool from the sidebar." = "Select a tool from the sidebar."; +"Select any folder to see which files and subfolders occupy the most disk space." = "Select any folder to see which files and subfolders occupy the most disk space."; +"Select apps to update" = "Select apps to update"; +"Select at least one app to update." = "Select at least one app to update."; +"Select copies" = "Select copies"; +"Select the apps Homebrew should upgrade." = "Select the apps Homebrew should upgrade."; +"Select the extra copies you want to review" = "Select the extra copies you want to review"; +"Select visible" = "Select visible"; +"Selected" = "Selected"; +"Selected cleanup items are permanently removed." = "Selected cleanup items are permanently removed."; +"Share of scanned space" = "Share of scanned space"; +"Shares storage with %@" = "Shares storage with %@"; +"Show %@ in Finder" = "Show %@ in Finder"; +"Show in Finder" = "Show in Finder"; +"Shows a confirmation before moving the selected copies" = "Shows a confirmation before moving the selected copies"; +"Similar Photos" = "Similar Photos"; +"Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality." = "Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality."; +"Size unavailable" = "Size unavailable"; +"Skipped items" = "Skipped items"; +"Smallest first" = "Smallest first"; +"Snapshot could not be deleted" = "Snapshot could not be deleted"; +"Software Update" = "Software Update"; +"Some contents were skipped or inaccessible" = "Some contents were skipped or inaccessible"; +"Some files were not moved" = "Some files were not moved"; +"Some information could not be read (%lld)" = "Some information could not be read (%lld)"; +"Some items need attention" = "Some items need attention"; +"Some locations are unavailable" = "Some locations are unavailable"; +"Some protected locations are unavailable. Full Disk Access allows a more complete scan." = "Some protected locations are unavailable. Full Disk Access allows a more complete scan."; +"Some selected files" = "Some selected files"; +"Sort" = "Sort"; +"Space Explorer" = "Space Explorer"; +"Startup and background items" = "Startup and background items"; +"Stop" = "Stop"; +"Stop scan" = "Stop scan"; +"Stopped" = "Stopped"; +"Stopping keeps the results found so far." = "Stopping keeps the results found so far."; +"Stops scanning without changing any files" = "Stops scanning without changing any files"; +"Suggested groups" = "Suggested groups"; +"Symbolic link" = "Symbolic link"; +"Symbolic links and cloud-only items are excluded." = "Symbolic links and cloud-only items are excluded."; +"Symbolic links cannot be scanned: %@" = "Symbolic links cannot be scanned: %@"; +"Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted." = "Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted."; +"System Integrity Protection" = "System Integrity Protection"; +"System Integrity Protection is turned off." = "System Integrity Protection is turned off."; +"System daemon" = "System daemon"; +"System update" = "System update"; +"System-wide agent" = "System-wide agent"; +"The analyzed photos did not meet PureMac's visual similarity threshold." = "The analyzed photos did not meet PureMac's visual similarity threshold."; +"The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan." = "The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan."; +"The check timed out." = "The check timed out."; +"The copy marked Keep is missing or changed: %@" = "The copy marked Keep is missing or changed: %@"; +"The inspected user and third-party launch folders are empty." = "The inspected user and third-party launch folders are empty."; +"The launch item is not a property-list dictionary." = "The launch item is not a property-list dictionary."; +"The macOS application firewall is turned off." = "The macOS application firewall is turned off."; +"The protected copy cannot be moved to Trash: %@" = "The protected copy cannot be moved to Trash: %@"; +"The scan stopped. Available results are ready to review." = "The scan stopped. Available results are ready to review."; +"The selected folder cannot be scanned: %@" = "The selected folder cannot be scanned: %@"; +"The selected folder could not be read: %@" = "The selected folder could not be read: %@"; +"The selected folder is stored in the cloud and has not been downloaded: %@" = "The selected folder is stored in the cloud and has not been downloaded: %@"; +"The selected item is not a folder: %@" = "The selected item is not a folder: %@"; +"The startup disk is encrypted with FileVault." = "The startup disk is encrypted with FileVault."; +"The startup disk is not encrypted with FileVault." = "The startup disk is not encrypted with FileVault."; +"The system returned an unrecognized status." = "The system returned an unrecognized status."; +"There are no cleanup items in this category." = "There are no cleanup items in this category."; +"This folder is empty or its contents were excluded from the scan." = "This folder is empty or its contents were excluded from the scan."; +"This permanently removes %@. Its size is unknown, and the action cannot be undone." = "This permanently removes %@. Its size is unknown, and the action cannot be undone."; +"This permanently removes the selected Time Machine snapshot." = "This permanently removes the selected Time Machine snapshot."; +"This snapshot does not have a verified Time Machine timestamp." = "This snapshot does not have a verified Time Machine timestamp."; +"Time Machine" = "Time Machine"; +"Time Machine Settings" = "Time Machine Settings"; +"Time Machine did not report any snapshots for the startup disk." = "Time Machine did not report any snapshots for the startup disk."; +"Time Machine snapshots are unavailable" = "Time Machine snapshots are unavailable"; +"Time Machine snapshots can be reviewed and removed individually" = "Time Machine snapshots can be reviewed and removed individually"; +"Tools" = "Tools"; +"Try Again" = "Try Again"; +"Try another name, size, or date range." = "Try another name, size, or date range."; +"Uninstaller" = "Uninstaller"; +"Unknown" = "Unknown"; +"Unknown error" = "Unknown error"; +"Updates from Homebrew" = "Updates from Homebrew"; +"Updating…" = "Updating…"; +"Upgrade %lld Apps" = "Upgrade %lld Apps"; +"Upgrade 1 App" = "Upgrade 1 App"; +"Upgrade selected apps?" = "Upgrade selected apps?"; +"User agent" = "User agent"; +"Verifying possible matches" = "Verifying possible matches"; +"Watches folders" = "Watches folders"; +"Watches paths" = "Watches paths"; +"XProtect" = "XProtect"; +"allocated in this folder" = "allocated in this folder"; +"definitions %@" = "definitions %@"; +"engine %@" = "engine %@"; +"macOS does not report reliable per-snapshot sizes in this listing." = "macOS does not report reliable per-snapshot sizes in this listing."; +"reclaimed" = "reclaimed"; +"similar group" = "similar group"; +"similar groups" = "similar groups"; +"tmutil is not available on this Mac." = "tmutil is not available on this Mac."; diff --git a/PureMac/zh-Hans.lproj/InfoPlist.strings b/PureMac/zh-Hans.lproj/InfoPlist.strings new file mode 100644 index 0000000..094d771 --- /dev/null +++ b/PureMac/zh-Hans.lproj/InfoPlist.strings @@ -0,0 +1,8 @@ +/* macOS permission prompts */ +"NSAppleEventsUsageDescription" = "PureMac 需要与访达交互,以显示所选文件。"; +"NSDesktopFolderUsageDescription" = "PureMac 需要访问桌面,以查找可清理文件和应用残留。"; +"NSDocumentsFolderUsageDescription" = "PureMac 需要访问文稿文件夹,以查找可清理文件和应用残留。"; +"NSDownloadsFolderUsageDescription" = "PureMac 需要访问下载文件夹,以查找可清理文件和应用残留。"; +"NSRemovableVolumesUsageDescription" = "PureMac 需要访问可移动磁盘,以扫描可清理的文件。"; +"NSSystemAdministrationUsageDescription" = "PureMac 需要管理员权限,以清理受保护的缓存和应用文件。"; +"NSHumanReadableCopyright" = "版权所有 © 2026,采用 MIT 许可证。"; diff --git a/PureMac/zh-Hans.lproj/Localizable.strings b/PureMac/zh-Hans.lproj/Localizable.strings index 1885a9f..5e3133f 100644 --- a/PureMac/zh-Hans.lproj/Localizable.strings +++ b/PureMac/zh-Hans.lproj/Localizable.strings @@ -4,21 +4,21 @@ "Cleanup" = "清理"; "Dashboard" = "仪表盘"; "Installed Apps" = "已安装的应用"; -"Orphaned Files" = "孤立文件"; +"Orphaned Files" = "应用残留"; "PureMac" = "PureMac"; "Ready to clean" = "可以清理"; "Limited access" = "访问受限"; -"Full Disk Access granted" = "已授予完整磁盘访问权限"; -"Grant FDA in Settings" = "在“设置”中授予完整磁盘访问"; +"Full Disk Access granted" = "已授予完全磁盘访问权限"; +"Grant FDA in Settings" = "在系统设置中授予权限"; "Select a category from the sidebar to get started." = "从侧边栏选择一个类别开始使用。"; /* FDA toast + clean error alert (MainWindow) */ -"Couldn't clean everything" = "无法清理全部"; +"Couldn't clean everything" = "部分项目未能清理"; "Open System Settings" = "打开“系统设置”"; "OK" = "好"; -"Full Disk Access required" = "需要完整磁盘访问权限"; -"macOS blocks PureMac from cleaning caches and uninstalling apps until you grant access." = "在你授予访问权限之前,macOS 会阻止 PureMac 清理缓存和卸载应用。"; -"Grant Access" = "授予访问"; +"Full Disk Access required" = "需要完全磁盘访问权限"; +"macOS blocks PureMac from cleaning caches and uninstalling apps until you grant access." = "授予权限后,PureMac 才能访问受保护的缓存和应用文件。"; +"Grant Access" = "授予权限"; /* Dashboard */ "Storage" = "存储"; @@ -27,7 +27,7 @@ "%lld%% used" = "已使用 %lld%%"; "Used" = "已用"; "Junk" = "垃圾"; -"Purgeable" = "可清理"; +"Purgeable" = "系统可回收"; "USED" = "已用"; "SCANNING" = "扫描中"; "Free Space" = "可用空间"; @@ -37,14 +37,14 @@ "Run a scan" = "运行扫描"; "across %lld categories" = "跨 %lld 个类别"; "installed" = "已安装"; -"APFS reclaimable" = "APFS 可回收"; +"APFS reclaimable" = "APFS 可回收空间"; "Suggested for you" = "推荐"; "Found so far" = "目前发现"; "By category" = "按类别"; "Category" = "类别"; "%@ is using %@" = "%@ 占用 %@"; -"Grant Full Disk Access for full results" = "授予完整磁盘访问以获得完整结果"; -"Without it, most caches and uninstall flows fail." = "没有它,大多数缓存清理和卸载流程都会失败。"; +"Grant Full Disk Access for full results" = "授予完全磁盘访问权限以获取完整结果"; +"Without it, most caches and uninstall flows fail." = "缺少权限时,部分缓存和应用文件可能无法处理。"; "Action" = "操作"; "Scanning your Mac" = "正在扫描你的 Mac"; "Currently in: %@" = "当前: %@"; @@ -115,11 +115,11 @@ "This will permanently delete this file. This action cannot be undone." = "这将永久删除此文件。此操作无法撤销。"; /* Orphans */ -"Scanning for orphaned files..." = "正在扫描孤立文件..."; -"No Orphaned Files" = "没有孤立文件"; +"Scanning for orphaned files..." = "正在查找应用残留…"; +"No Orphaned Files" = "未发现应用残留"; "No leftover files from uninstalled apps were found." = "未发现已卸载应用的残留文件。"; -"Scan for Orphans" = "扫描孤立文件"; -"Orphaned Files (%lld)" = "孤立文件 (%lld)"; +"Scan for Orphans" = "查找应用残留"; +"Orphaned Files (%lld)" = "应用残留(%lld 项)"; "Remove Selected (%lld)" = "删除所选 (%lld)"; "Some files could not be removed" = "部分文件无法删除"; "blocked by safety policy" = "已被安全策略阻止"; @@ -134,17 +134,17 @@ "Find junk files across your system" = "在系统中查找垃圾文件"; "App Uninstaller" = "应用卸载器"; "Remove apps and all their files" = "删除应用及其所有文件"; -"Orphan Finder" = "孤立文件查找"; +"Orphan Finder" = "残留查找"; "Find leftovers from deleted apps" = "查找已删除应用的残留"; -"Full Disk Access" = "完整磁盘访问"; -"PureMac needs Full Disk Access to uninstall apps, find leftover files, and clean protected caches." = "PureMac 需要完整磁盘访问以卸载应用、查找残留文件并清理受保护的缓存。"; +"Full Disk Access" = "完全磁盘访问权限"; +"PureMac needs Full Disk Access to uninstall apps, find leftover files, and clean protected caches." = "PureMac 需要完全磁盘访问权限以卸载应用、查找残留文件并清理受保护的缓存。"; "We'll guide you through the next steps." = "我们将引导你完成接下来的步骤。"; "In System Settings, do this:" = "在“系统设置”中执行以下操作:"; -"Privacy & Security → Full Disk Access" = "隐私与安全性 → 完整磁盘访问"; +"Privacy & Security → Full Disk Access" = "隐私与安全性 → 完全磁盘访问权限"; "Find **PureMac** and turn the toggle on" = "找到 **PureMac** 并打开开关"; "Authenticate with Touch ID or your password" = "使用触控 ID 或密码进行验证"; "Reopen Settings" = "重新打开“设置”"; -"PureMac isn't in the list — reveal it" = "PureMac 不在列表中 — 显示"; +"PureMac isn't in the list — reveal it" = "列表中没有 PureMac?在访达中显示"; "Reset permissions and re-prompt" = "重置权限并再次提示"; "Hide diagnostics" = "隐藏诊断"; "Show diagnostics" = "显示诊断"; @@ -169,7 +169,7 @@ /* Settings */ "General" = "通用"; -"Cleaning" = "清理"; +"Cleaning" = "正在清理"; "Schedule" = "计划"; "About" = "关于"; "Startup" = "启动"; @@ -226,7 +226,7 @@ "Mail Files" = "邮件文件"; "Trash Bins" = "废纸篓"; "Large & Old Files" = "大文件和旧文件"; -"Purgeable Space" = "可清理空间"; +"Purgeable Space" = "系统可回收空间"; "Xcode Junk" = "Xcode 垃圾"; "Brew Cache" = "Brew 缓存"; "Node Cache" = "Node 缓存"; @@ -243,7 +243,7 @@ "Files in your Trash" = "废纸篓中的文件"; "Files over 100 MB or older than 1 year" = "大于 100 MB 或超过 1 年的文件"; "APFS purgeable disk space" = "APFS 可清理磁盘空间"; -"Derived data, archives, and simulator runtimes" = "派生数据、归档和模拟器"; +"Derived data, archives, and simulator runtimes" = "构建数据、归档和模拟器运行时"; "Homebrew download cache" = "Homebrew 下载缓存"; "npm, yarn, and pnpm download caches" = "npm、yarn 和 pnpm 下载缓存"; "Docker images, containers, and build cache" = "Docker 镜像、容器和构建缓存"; @@ -298,14 +298,14 @@ "Couldn't remove %@%@. They may be in use or protected by macOS." = "无法删除 %@%@。它们可能正在使用或受 macOS 保护。"; " and %lld more" = " 还有 %lld 个"; "Access granted. Retrying…" = "已授予访问权限。正在重试…"; -"1-tap setup. We'll detect the change automatically." = "一键设置。我们将自动检测更改。"; +"1-tap setup. We'll detect the change automatically." = "前往系统设置授权,我们会自动检测权限变化。"; "Open Settings & reveal PureMac" = "打开“设置”并显示 PureMac"; -"We'll open both windows side-by-side." = "我们会并排打开两个窗口。"; +"We'll open both windows side-by-side." = "将同时打开系统设置和访达。"; "Turn on PureMac" = "开启 PureMac"; -"Toggle the row that appears." = "打开出现的那一行。"; +"Toggle the row that appears." = "打开 PureMac 对应的开关。"; "Authenticate" = "验证身份"; "Touch ID or password." = "Touch ID 或密码。"; -"We auto-retry — no need to come back." = "我们会自动重试 - 无需返回。"; +"We auto-retry — no need to come back." = "授权后会自动重试,无需手动返回。"; "Watching for permission change…" = "正在监视权限变更…"; "PureMac not in the list?" = "PureMac 不在列表中?"; "Hide help" = "隐藏帮助"; @@ -319,44 +319,44 @@ "Access granted" = "已授予访问权限"; "Retrying the operation now." = "正在重试此操作。"; "Skip for now" = "暂时跳过"; -"I granted it — retry" = "我已授予 - 重试"; +"I granted it — retry" = "已授权,重试"; /* Dashboard polish */ "Low space" = "空间不足"; "CLEANING" = "正在清理"; "Quick Setup" = "快速设置"; -"1-tap setup. We'll auto-retry what failed." = "一键设置。我们会自动重试失败的操作。"; +"1-tap setup. We'll auto-retry what failed." = "授权后会自动重试未完成的操作。"; "Fix permission" = "修复权限"; "Dismiss" = "忽略"; "Fix" = "修复"; "Set up" = "设置"; /* Onboarding v2 */ -"Reclaim your Mac" = "夺回你的 Mac"; -"Apple sells you small disks. We help you keep them clean." = "苹果卖给你小硬盘。我们帮你保持整洁。"; -"Free. Open source. MIT licensed." = "免费。开源。MIT 许可。"; -"What's inside" = "里面有什么"; -"Three things, done well." = "三件事,做到极致。"; +"Reclaim your Mac" = "为你的 Mac 腾出空间"; +"Apple sells you small disks. We help you keep them clean." = "存储空间有限,让每一份空间都用在需要的地方。"; +"Free. Open source. MIT licensed." = "免费开源,采用 MIT 许可证。"; +"What's inside" = "主要功能"; +"Three things, done well." = "专注做好三件事。"; "Find caches, logs, broken installs, and the AI-app history hiding in your library." = "找出缓存、日志、损坏的安装文件,以及隐藏在资源库中的 AI 应用历史。"; -"Drag an app, see every file it dropped, remove all of it. No leftovers." = "拖入一个 App,看到它留下的每个文件,全部清除。不留残余。"; -"Surfaces files that outlived the apps that created them." = "显示比创建它们的应用更长寿的文件。"; -"One permission, then we're done" = "一个权限,就够了"; +"Drag an app, see every file it dropped, remove all of it. No leftovers." = "拖入应用,查看关联文件,确认后一起清理。"; +"Surfaces files that outlived the apps that created them." = "查找应用卸载后留下的文件。"; +"One permission, then we're done" = "再授予一项权限即可"; "Permission granted" = "权限已授予"; "PureMac can now reach the locations macOS protects by default." = "PureMac 现在可以访问 macOS 默认保护的位置。"; -"macOS hides certain folders from every app until you say otherwise. We need them to find caches and uninstall cleanly." = "在你允许之前,macOS 对所有 App 隐藏某些文件夹。我们需要它们来查找缓存并干净地卸载。"; -"All set — moving you to the next step." = "全部就绪 - 进入下一步。"; -"Reveal app again" = "再次显示 App"; +"macOS hides certain folders from every app until you say otherwise. We need them to find caches and uninstall cleanly." = "macOS 会限制应用访问部分文件夹。授予权限后,PureMac 才能检查其中的缓存和应用关联文件。"; +"All set — moving you to the next step." = "已准备就绪,正在进入下一步。"; +"Reveal app again" = "再次在访达中显示"; "Reset permissions" = "重置权限"; "You're ready" = "准备就绪"; -"Ready when you are" = "随时为你准备好"; -"Hit Start to run your first Smart Scan." = "按开始运行你的第一次智能扫描。"; +"Ready when you are" = "随时可以开始"; +"Hit Start to run your first Smart Scan." = "点击“开始”,进行首次智能扫描。"; "Skip" = "跳过"; "Start" = "开始"; "Continue" = "继续"; /* Drag handle */ "Drag to the Settings list" = "拖到设置列表"; -"Drag this icon into the Full Disk Access list in System Settings." = "将此图标拖入系统设置中的完整磁盘访问列表。"; +"Drag this icon into the Full Disk Access list in System Settings." = "将此图标拖入系统设置中的完全磁盘访问权限列表。"; "Tip: drag the icon on the left straight into the list." = "提示:把左侧图标直接拖入列表。"; "Or drag the icon on the left straight into Settings." = "或者把左侧图标直接拖入设置。"; @@ -378,7 +378,7 @@ /* v2.8.1: purgeable honesty */ "Managed by macOS" = "由 macOS 管理"; -"Reserved by macOS - freed automatically when space is needed" = "由 macOS 预留 - 需要空间时自动释放"; +"Reserved by macOS - freed automatically when space is needed" = "由 macOS 管理,在需要空间时自动释放"; /* v2.8.2: large-file folder exclusions (#121) */ "Excluded Folders" = "排除的文件夹"; @@ -389,9 +389,9 @@ /* v2.8.2: orphan ignore list (#114) */ "Always Ignore" = "始终忽略"; "Ignore Selected (%lld)" = "忽略所选 (%lld)"; -"Ignored orphans: %lld" = "已忽略的孤立文件:%lld"; +"Ignored orphans: %lld" = "已忽略的应用残留:%lld"; "Forget Ignored" = "清除已忽略"; -"Ignored files won't appear in future orphan scans." = "已忽略的文件不会出现在以后的孤立文件扫描中。"; +"Ignored files won't appear in future orphan scans." = "已忽略的文件不会出现在以后的应用残留扫描中。"; /* v2.8.3: menu-bar system monitor */ "System Monitor" = "系统监视器"; @@ -406,57 +406,464 @@ /* Finder Service */ "Select an application (.app) to uninstall." = "请选择要卸载的应用程序(.app)。"; -/* Smart Care dashboard hero + Care areas — English fallback, pending translation */ -"%@ free" = "%@ free"; -"%lld checks" = "%lld checks"; -"%lld items found" = "%lld items found"; -"%lld selected" = "%lld selected"; -"%lld-POINT LOCAL SCAN" = "%lld-POINT LOCAL SCAN"; -"%lld/%lld checked" = "%lld/%lld checked"; -"ALL CLEAR" = "ALL CLEAR"; -"Advanced Tools" = "Advanced Tools"; -"All clear" = "All clear"; -"App leftovers to inspect" = "App leftovers to inspect"; -"Appearance" = "Appearance"; -"Caches, mail, trash, and large files" = "Caches, mail, trash, and large files"; -"Care areas" = "Care areas"; -"Checks every cleanup category without deleting files" = "Checks every cleanup category without deleting files"; -"Choose what to keep, then clean everything in one controlled pass." = "Choose what to keep, then clean everything in one controlled pass."; -"Cleaning safely…" = "Cleaning safely…"; -"Cleanup complete" = "Cleanup complete"; -"Cleanup complete. Your storage summary is refreshing." = "Cleanup complete. Your storage summary is refreshing."; -"Clear" = "Clear"; -"Complete" = "Complete"; -"Developer" = "Developer"; -"Installed apps" = "Installed apps"; -"LOW SPACE" = "LOW SPACE"; -"Last clean: %@" = "Last clean: %@"; -"Local" = "Local"; -"Make room.\nKeep control." = "Make room.\nKeep control."; -"No cleanup run yet" = "No cleanup run yet"; -"No known leftovers" = "No known leftovers"; -"No removable junk was found in the areas PureMac checked." = "No removable junk was found in the areas PureMac checked."; -"One scan checks every cleanup tool and prepares a plan for your review." = "One scan checks every cleanup tool and prepares a plan for your review."; -"Private" = "Private"; -"PureMac builds a reviewable cleanup plan on your Mac. Nothing is removed until you approve it." = "PureMac builds a reviewable cleanup plan on your Mac. Nothing is removed until you approve it."; -"PureMac is checking your Mac without removing anything." = "PureMac is checking your Mac without removing anything."; -"Ready" = "Ready"; -"Ready for review" = "Ready for review"; -"Ready to reclaim" = "Ready to reclaim"; -"Review" = "Review"; -"Review ready" = "Review ready"; -"Review scan results" = "Review scan results"; -"Review what was found" = "Review what was found"; -"Reviewable" = "Reviewable"; -"SCAN COMPLETE" = "SCAN COMPLETE"; -"Scan My Mac" = "Scan My Mac"; -"Scan first.\nDecide what goes." = "Scan first.\nDecide what goes."; -"Scanning" = "Scanning"; -"Selected items are being removed safely." = "Selected items are being removed safely."; -"Smart Care" = "Smart Care"; -"Twelve-layer storage inspection model" = "Twelve-layer storage inspection model"; -"Xcode and package tools" = "Xcode and package tools"; -"Your Mac is in good shape." = "Your Mac is in good shape."; +/* Smart Care dashboard hero + Care areas */ +"%@ free" = "可用 %@"; +"%lld checks" = "%lld 项检查"; +"%lld items found" = "发现 %lld 个项目"; +"%lld selected" = "已选择 %lld 项"; +"%lld-POINT LOCAL SCAN" = "%lld 项本地扫描"; +"%lld/%lld checked" = "已检查 %lld / %lld 项"; +"ALL CLEAR" = "无需清理"; +"Advanced Tools" = "高级工具"; +"All clear" = "无需清理"; +"App leftovers to inspect" = "待检查的应用残留"; +"Appearance" = "外观"; +"Caches, mail, trash, and large files" = "缓存、邮件、废纸篓和大文件"; +"Care areas" = "检查范围"; +"Checks every cleanup category without deleting files" = "扫描所有清理类别,扫描期间不会删除文件"; +"Choose what to keep, then clean everything in one controlled pass." = "确认要保留的内容,再统一清理所选项目。"; +"Cleaning safely…" = "正在清理…"; +"Cleanup complete" = "清理完成"; +"Cleanup complete. Your storage summary is refreshing." = "清理已完成,正在更新存储信息。"; +"Clear" = "清除"; +"Complete" = "已完成"; +"Developer" = "开发工具"; +"Installed apps" = "已安装的应用"; +"LOW SPACE" = "空间不足"; +"Last clean: %@" = "上次清理:%@"; +"Local" = "本地处理"; +"Make room.\nKeep control." = "释放空间,\n由你做主。"; +"No cleanup run yet" = "尚未清理"; +"No known leftovers" = "未发现应用残留"; +"No removable junk was found in the areas PureMac checked." = "在已检查的位置中未发现可清理的文件。"; +"One scan checks every cleanup tool and prepares a plan for your review." = "一次扫描所有清理类别,生成清理方案供你确认。"; +"Private" = "保护隐私"; +"PureMac builds a reviewable cleanup plan on your Mac. Nothing is removed until you approve it." = "PureMac 在本机生成清理方案,确认后才会删除文件。"; +"PureMac is checking your Mac without removing anything." = "PureMac 正在检查你的 Mac,扫描期间不会删除任何内容。"; +"Ready" = "已就绪"; +"Ready for review" = "待确认"; +"Ready to reclaim" = "可释放空间"; +"Review" = "查看"; +"Review ready" = "待确认"; +"Review scan results" = "查看扫描结果"; +"Review what was found" = "查看发现的项目"; +"Reviewable" = "清理前确认"; +"SCAN COMPLETE" = "扫描完成"; +"Scan My Mac" = "扫描此 Mac"; +"Scan first.\nDecide what goes." = "先扫描,\n再决定清理什么。"; +"Scanning" = "正在扫描"; +"Selected items are being removed safely." = "正在删除所选项目。"; +"Smart Care" = "智能清理"; +"Twelve-layer storage inspection model" = "十二层存储检查"; +"Xcode and package tools" = "Xcode 和软件包管理工具"; +"Your Mac is in good shape." = "你的 Mac 状态良好。"; /* Simulator runtimes */ "Simulator runtime" = "模拟器运行时"; + +/* Current dashboard, tools, and cleanup review */ +"\nAnd %lld more." = "\n另有 %lld 项。"; +"%@ %@ to %@" = "%@:%@ → %@"; +"%@ available" = "可用 %@"; +"%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again." = "由于 PureMac 没有完全磁盘访问权限,无法删除%@。请在系统设置中授予权限后重试。"; +"%@ did not finish within the allowed time." = "%@ 未能在规定时间内完成。"; +"%@ exited with status %d%@" = "%@ 已退出,状态码为 %d%@"; +"%@ files inspected" = "已检查 %@ 个文件"; +"%@ found across %lld categories." = "在 %2$lld 个类别中发现 %1$@ 可清理内容。"; +"%@ found before the scan stopped. Results may be incomplete." = "扫描停止前发现 %@ 可清理内容,结果可能不完整。"; +"%@ of %@" = "已用 %@,共 %@"; +"%@ of %@ candidates · %@ verified" = "已校验 %@ / %@ 个候选文件,共 %@"; +"%@ reviewable" = "可供清理 %@"; +"%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone." = "已选择 %@。将永久删除所选文件或执行列出的清理操作,此操作无法撤销。"; +"%@ will move to Trash" = "将把 %@ 移到废纸篓"; +"%lld analyzed" = "已分析 %lld 张"; +"%lld apps selected" = "已选择 %lld 个应用"; +"%lld areas" = "%lld 个扫描类别"; +"%lld compared" = "已比较 %lld 张"; +"%lld exact copies · %@ each" = "%lld 个相同副本,每个 %@"; +"%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access." = "使用管理员权限仍无法删除 %lld 个文件。文件可能已发生变化,或 macOS 拒绝了访问。"; +"%lld file(s) could not be removed. Check that the items still exist and are not in use." = "无法删除 %lld 个文件。请确认文件仍然存在且未被占用。"; +"%lld files totaling %@ were moved. Every protected copy remains in place." = "已将 %lld 个文件(共 %@)移到废纸篓。所有受保护的副本均已保留。"; +"%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place." = "将把 %lld 个文件(共 %@)移到废纸篓。每组中受保护的副本都会保留。"; +"%lld files · %lld folders" = "%lld 个文件,%lld 个文件夹"; +"%lld folders" = "%lld 个文件夹"; +"%lld found" = "发现 %lld 项"; +"%lld inaccessible" = "%lld 项无法访问"; +"%lld items · %@ found" = "发现 %lld 项,共 %@"; +"%lld matched" = "匹配到 %lld 张"; +"%lld of %lld items shown" = "显示 %lld / %lld 项"; +"%lld percent" = "百分之 %lld"; +"%lld photos" = "%lld 张照片"; +"%lld photos · %@" = "%lld 张照片,共 %@"; +"%lld selected items will be permanently deleted. Review the list before continuing." = "将永久删除所选的 %lld 个项目。请确认列表后再继续。"; +"%lld selected · %@" = "已选 %lld 项,共 %@"; +"%lld skipped" = "已跳过 %lld 项"; +"%lld unsafe or unavailable items were not scanned" = "%lld 个不适合扫描或无法访问的项目已跳过"; +"%lld unsafe or unavailable items were skipped." = "已跳过 %lld 个不适合扫描或无法访问的项目。"; +"%lld updates available" = "有 %lld 个可用更新"; +"%lld%% visual score" = "画面相似度 %lld%%"; +", and %lld more" = ",另有 %lld 项"; +"1 app selected" = "已选择 1 个应用"; +"1 update available" = "有 1 个可用更新"; +"500 photo limit" = "最多扫描 500 张照片"; +"A clear view of reclaimable storage and the tools that manage it." = "了解可释放的存储空间,轻松管理你的 Mac。"; +"A selected file is missing or changed: %@" = "所选文件已丢失或发生变化:%@"; +"A selected file no longer matches its kept copy: %@" = "所选文件与保留副本的内容已不再相同:%@"; +"Access denied" = "访问被拒绝"; +"Administrator removal failed: %@" = "使用管理员权限删除失败:%@"; +"Always exclude from cleanup" = "始终排除此项"; +"Any age" = "不限时间"; +"Any size" = "不限大小"; +"App Updates" = "应用更新"; +"App and document packages are excluded: %@" = "已排除应用程序包和文稿包:%@"; +"App bundle missing" = "应用程序文件缺失"; +"App downloads are checked before opening." = "下载的应用会在打开前接受安全检查。"; +"App permissions" = "应用权限"; +"Apple Guide" = "Apple 使用指南"; +"Apple's built-in malware protection is installed. Update recency is managed by macOS." = "已安装 Apple 内置的恶意软件防护,更新由 macOS 管理。"; +"Application Firewall" = "应用防火墙"; +"Apps outside Homebrew" = "其他来源的应用"; +"At login" = "登录时运行"; +"Available" = "可用"; +"Available to review" = "待确认空间"; +"Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions." = "请在各浏览器中检查隐私设置。PureMac 不会更改 Cookie、历史记录、网站权限或扩展。"; +"Browser privacy" = "浏览器隐私"; +"Building visual signatures" = "正在分析图片特征"; +"Camera" = "相机"; +"Care" = "日常维护"; +"Changed during scan" = "扫描期间发生变化"; +"Check Again" = "重新检查"; +"Check again" = "重新检查"; +"Check built-in safeguards" = "检查系统安全设置"; +"Check installed apps for new versions" = "检查已安装应用的可用更新"; +"Check installed cask apps" = "检查已安装的 Homebrew 应用"; +"Checked %@. Unknown means the setting could not be confirmed." = "检查时间:%@。“未知”表示无法确认该设置的状态。"; +"Checking" = "正在检查"; +"Checking Homebrew casks" = "正在检查 Homebrew 应用"; +"Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation." = "检查更新时,Homebrew 会按需刷新软件包数据并连接已配置的软件源。PureMac 仅显示由当前 Homebrew 管理的图形应用。"; +"Checking your Mac. Nothing is removed during a scan." = "正在检查你的 Mac,扫描期间不会删除任何内容。"; +"Choose Another Folder" = "选择其他文件夹"; +"Choose Folder" = "选择文件夹"; +"Choose a Folder" = "选择文件夹"; +"Choose a folder of photos" = "选择照片文件夹"; +"Choose a folder to check for duplicate files" = "选择要查找重复文件的文件夹"; +"Choose a folder to inspect" = "选择要分析的文件夹"; +"Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically." = "选择一个文件夹。PureMac 会先比较文件大小,再校验文件内容。不会自动选择或删除任何文件。"; +"Choose a photo folder" = "选择照片文件夹"; +"Choose where to look" = "选择要分析的位置"; +"Chrome privacy guide" = "Chrome 隐私指南"; +"Clean selected items" = "清理所选项目"; +"Cleaning selected items" = "正在清理所选项目"; +"Cleanup Exclusions" = "清理排除项"; +"Cleanup finished and disk information is refreshing." = "清理已完成,正在更新存储信息。"; +"Cleanup plan" = "清理方案"; +"Clear Selection" = "清空选择"; +"Clear filters" = "清除筛选条件"; +"Clear search" = "清除搜索"; +"Clear selection" = "清空选择"; +"Cloud-only file" = "仅存于云端的文件"; +"Collapse duplicate group" = "收起此组重复文件"; +"Compare visually similar photos" = "比较画面相似的照片"; +"Conditional keep alive" = "按条件保持运行"; +"Copy path" = "复制路径"; +"Could not inspect %@" = "无法检查 %@"; +"Could not list Time Machine snapshots" = "无法列出时间机器快照"; +"Could not read" = "无法读取"; +"Could not read %@" = "无法读取 %@"; +"Couldn't check for updates" = "无法检查更新"; +"Current scan path" = "当前扫描路径"; +"Delete" = "删除"; +"Delete Snapshot" = "删除快照"; +"Delete local snapshot?" = "删除本地快照?"; +"Deselect visible" = "取消选择当前显示的项目"; +"Developer Cleanup" = "开发缓存清理"; +"Disabled" = "已停用"; +"Downloaded apps are not being assessed by Gatekeeper." = "门禁功能未对下载的应用进行安全检查。"; +"Drag to tilt" = "拖动以调整角度"; +"Duplicate Finder" = "重复文件"; +"Duplicate groups" = "重复文件组"; +"Every %lld seconds" = "每 %lld 秒"; +"Every eligible file was checked." = "已检查所有符合条件的文件。"; +"Exact-match cleanup with a protected copy in every group" = "查找内容相同的文件,每组保留一份副本"; +"Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it." = "手动和定时清理都会保留已排除的路径及包含它们的文件夹。右键点击扫描结果即可添加排除项。"; +"Expand duplicate group" = "展开此组重复文件"; +"File" = "文件"; +"FileVault" = "文件保险箱(FileVault)"; +"FileVault Settings" = "文件保险箱设置"; +"Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them." = "文件将移到废纸篓。需要管理员授权的项目可能会被永久删除。应用关联判断可能存在误差,请确认文件用途后再删除。"; +"Filter cleanup files" = "筛选待清理文件"; +"Find a file or path" = "搜索文件名或路径"; +"Find copies that are exactly the same" = "查找内容完全相同的文件"; +"Find space to reclaim." = "找出可释放的空间"; +"Find visually related shots in a folder and review them side by side." = "查找文件夹中画面相似的照片,并排比较。"; +"Find what uses the most disk space" = "找出占用空间最多的文件"; +"Finding local photos" = "正在查找本地照片"; +"Firewall Settings" = "防火墙设置"; +"Focused utilities for storage, apps, and system maintenance" = "管理存储、应用和系统的常用工具"; +"Folder could not be inspected" = "无法分析文件夹"; +"Full Disk Access is off" = "未开启完全磁盘访问权限"; +"Full access" = "已获完整访问权限"; +"Gatekeeper" = "门禁(Gatekeeper)"; +"Group %lld" = "第 %lld 组"; +"Grouping similar shots" = "正在对相似照片分组"; +"Hard-linked copy" = "硬链接副本"; +"Homebrew apps are up to date" = "Homebrew 应用均为最新版本"; +"Homebrew did not finish before the operation timed out." = "Homebrew 操作超时,未能完成。"; +"Homebrew finished, but %lld selected apps still report updates." = "Homebrew 已执行完毕,但仍有 %lld 个所选应用显示可用更新。"; +"Homebrew finished, but 1 selected app still reports an update." = "Homebrew 已执行完毕,但仍有 1 个所选应用显示可用更新。"; +"Homebrew finished. Check again to verify installed versions." = "Homebrew 已执行完毕。请重新检查以确认已安装的版本。"; +"Homebrew not found" = "未找到 Homebrew"; +"Homebrew produced more output than PureMac could safely retain." = "Homebrew 的输出超出了 PureMac 可处理的大小限制。"; +"Homebrew returned an invalid cask identifier: %@" = "Homebrew 返回了无效的应用标识:%@"; +"Homebrew returned update information PureMac could not read." = "无法读取 Homebrew 返回的更新信息。"; +"Homebrew updated the %lld selected apps." = "Homebrew 已更新所选的 %lld 个应用。"; +"Homebrew updated the selected app." = "Homebrew 已更新所选应用。"; +"Homebrew was not found in a standard installation location." = "未在常用安装位置找到 Homebrew。"; +"Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process." = "Homebrew 将更新 %@。更新过程中可能会退出正在运行的应用,并移除旧版本。"; +"Includes %lld selected items hidden by filters." = "包含被筛选条件隐藏的 %lld 个已选项目。"; +"Incoming network connections are filtered." = "已开启对传入网络连接的过滤。"; +"Inspect" = "分析"; +"Inspect a folder by allocated disk space. Your files are never changed." = "按实际磁盘占用分析文件夹,不会修改你的文件。"; +"Inspect memory and background activity" = "查看内存使用和后台活动"; +"Inspect startup items and local snapshots again" = "重新检查启动项和本地快照"; +"Inspected %@ files in %@. %@" = "已检查 %2$@ 中的 %1$@ 个文件。%3$@"; +"Inspecting startup items and local snapshots…" = "正在检查启动项和本地快照…"; +"Inspection stopped" = "检查已停止"; +"Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels." = "安装 Homebrew 后可在此检查其管理的应用。App Store 应用和直接下载的应用需要通过各自的渠道更新。"; +"Installed" = "已安装"; +"Installed %@" = "已安装 %@"; +"Keep" = "保留"; +"Keep PureMac open until this pass finishes." = "请保持 PureMac 运行,直到本次清理完成。"; +"Keep alive" = "保持运行"; +"Largest first" = "从大到小"; +"Largest items" = "空间占用排行"; +"Last activity: %@" = "上次操作:%@"; +"Last checked" = "上次检查"; +"Launch agents and daemons installed outside macOS system folders" = "安装在 macOS 系统文件夹之外的启动代理和守护进程"; +"Leftovers" = "应用残留"; +"Live" = "实时"; +"Live resources" = "实时资源使用"; +"Local and private" = "本地处理,保护隐私"; +"Local files" = "本地文件"; +"Local snapshot" = "本地快照"; +"Local snapshots" = "本地快照"; +"Location" = "定位"; +"Login Items Settings" = "登录项设置"; +"Looking through files" = "正在查找文件"; +"Mac storage" = "Mac 存储空间"; +"Managed cleanup action" = "由系统工具执行的清理操作"; +"Matching files" = "内容相同的文件"; +"Measuring allocated space" = "正在计算磁盘占用"; +"Memory pressure use" = "内存使用率"; +"Microphone" = "麦克风"; +"Modified" = "修改时间"; +"Move selected duplicates to Trash?" = "将所选重复文件移到废纸篓?"; +"Moved to Trash" = "已移到废纸篓"; +"Name" = "名称"; +"Needs attention" = "需要处理"; +"Network state" = "网络状态"; +"No exact duplicates found" = "未发现内容相同的文件"; +"No excluded paths" = "暂无清理排除项"; +"No files found" = "未发现文件"; +"No files were changed. Rescan this folder when you are ready." = "未修改任何文件。你可以重新扫描此文件夹。"; +"No launchd items found" = "未发现启动项"; +"No local snapshots reported" = "未发现本地快照"; +"No matching files" = "未找到匹配的文件"; +"No measurable items" = "没有可统计的项目"; +"No photos were changed. You can scan the folder again at any time." = "未修改任何照片。你可以随时重新扫描此文件夹。"; +"No reclaimable items were found before the scan stopped." = "扫描停止前未发现可清理的项目。"; +"No reclaimable items were found in the areas checked." = "在已检查的位置中未发现可清理的项目。"; +"No results yet" = "暂无扫描结果"; +"No scan run yet" = "尚未扫描"; +"No similar groups found" = "未发现相似照片"; +"No updates are currently available for the cask apps Homebrew manages." = "Homebrew 管理的应用目前没有可用更新。"; +"Nothing selected" = "尚未选择"; +"Nothing to clean" = "无需清理"; +"Nothing was moved" = "未移动任何文件"; +"Off" = "已关闭"; +"Older than 30 days" = "30 天前"; +"Older than 6 months" = "6 个月前"; +"Older than a year" = "1 年前"; +"Oldest first" = "最早修改优先"; +"On" = "已开启"; +"Open Activity Monitor" = "打开活动监视器"; +"Open App Store Updates" = "打开 App Store 更新"; +"Open Folder" = "打开文件夹"; +"Open a category to review individual items" = "打开类别,查看其中的具体项目"; +"Open folder" = "打开文件夹"; +"Open the App Store updates page. Direct-download apps may provide their own updater." = "打开 App Store 更新页面。直接下载安装的应用可能提供自己的更新功能。"; +"Opens a folder picker" = "打开文件夹选择窗口"; +"Over 1 GB" = "大于 1 GB"; +"Over 10 GB" = "大于 10 GB"; +"Over 100 MB" = "大于 100 MB"; +"Package" = "文件包"; +"Package contents" = "文件包内容"; +"Package · %lld files" = "文件包,含 %lld 个文件"; +"Partial result" = "结果不完整"; +"Partial results" = "部分扫描结果"; +"Performance" = "性能监测"; +"Permanently delete %@?" = "永久删除 %@ 的内容?"; +"Permanently remove %lld items" = "永久删除 %lld 项"; +"Personal data or an optional cleanup action. Left unselected by default." = "此项涉及个人数据或可选清理操作,默认不选中。"; +"Photos could not be compared" = "无法比较照片"; +"Pinned" = "已固定版本"; +"Preparing scan" = "正在准备扫描"; +"Preparing the next area…" = "正在准备扫描下一个类别…"; +"Preparing visual comparison" = "正在准备图片比较"; +"Program not declared in this plist" = "此配置文件未指定程序"; +"Protected caches and app containers will be skipped." = "扫描将跳过受保护的缓存和应用容器。"; +"Protected copy" = "保留的副本"; +"Protected system locations and processes are restricted." = "受保护的系统位置和进程已受到访问限制。"; +"Protection" = "安全检查"; +"PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review." = "PureMac 会在本机生成缩略图,比较画面结构与颜色,将可能相似的照片分组供你查看。"; +"PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed." = "扫描缓存、日志、开发数据、下载内容和废纸篓。先查看结果,再决定清理哪些项目。"; +"PureMac compares local image thumbnails without changing your photos." = "PureMac 在本机比较图片缩略图,不会修改照片。"; +"PureMac could not confirm the local XProtect installation." = "PureMac 无法确认本机是否安装了 XProtect。"; +"PureMac could not read this setting." = "PureMac 无法读取此设置。"; +"PureMac did not find removable items in the selected scan areas." = "PureMac 在所选扫描范围内未发现可清理的项目。"; +"PureMac measures allocated disk space without changing files." = "PureMac 会统计实际磁盘占用,不会修改文件。"; +"PureMac reads the selected folder and does not change anything during a scan." = "PureMac 只读取所选文件夹,扫描期间不会修改任何内容。"; +"PureMac will ask Homebrew for available versions when you start the check." = "开始检查后,PureMac 将通过 Homebrew 查询可用版本。"; +"PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing." = "PureMac 会将所选应用及其关联文件移到废纸篓。需要管理员授权的项目可能会被永久删除。请确认所选内容后再继续。"; +"PureMac.app" = "PureMac.app"; +"Ready for protected locations" = "可访问受保护的位置"; +"Refresh disk information" = "刷新存储信息"; +"Refreshing package data and comparing installed versions." = "正在刷新软件包数据并比较已安装的版本。"; +"Refused to delete %lld protected item(s) (home credential directory or similar)." = "已阻止删除 %lld 个受保护的项目(如用户凭据目录)。"; +"Remove %lld files" = "删除 %lld 个文件"; +"Remove %lld items" = "删除 %lld 项"; +"Remove apps and their related files" = "卸载应用并清理关联文件"; +"Remove selected app files?" = "删除所选应用文件?"; +"Remove selected files?" = "删除所选文件?"; +"Remove selected leftovers?" = "删除所选残留文件?"; +"Removing the items you selected." = "正在删除你选择的项目。"; +"Reveal %@ in Finder" = "在访达中显示 %@"; +"Reveal plist in Finder" = "在访达中显示配置文件"; +"Reveal skipped item in Finder" = "在访达中显示已跳过的项目"; +"Review and update apps installed as Homebrew casks." = "查看并更新通过 Homebrew 安装的应用。"; +"Review built-in privacy and safety checks" = "检查系统隐私与安全设置"; +"Review matching files side by side" = "并排比较内容相同的文件"; +"Review only" = "仅供查看"; +"Review removal" = "确认清理内容"; +"Review the groups before acting" = "处理前请先查看分组"; +"Review the macOS safeguards that protect apps, disks, network access, and system files." = "检查 macOS 对应用、磁盘、网络访问和系统文件的保护设置。"; +"Review the results and choose exactly what to remove." = "查看扫描结果,选择需要清理的项目。"; +"Review which apps can access private data and hardware." = "查看哪些应用可以访问个人数据和硬件。"; +"Run audit" = "开始检查"; +"Run the scan again when you are ready to check every area." = "重新扫描以检查所有类别。"; +"Safari privacy guide" = "Safari 隐私指南"; +"Safari: Settings > Privacy" = "Safari 浏览器:设置 > 隐私"; +"Sample limit reached" = "已达到扫描数量上限"; +"Scan Another Folder" = "扫描其他文件夹"; +"Scan Folder" = "扫描文件夹"; +"Scan Photos" = "扫描照片"; +"Scan again" = "重新扫描"; +"Scan complete" = "扫描完成"; +"Scan could not finish" = "扫描未能完成"; +"Scan first, then review the exact files before removing anything." = "先扫描并查看具体文件,确认后再清理。"; +"Scan stopped" = "扫描已停止"; +"Scan this Mac" = "扫描此 Mac"; +"Scan this category" = "扫描此类别"; +"Scanning %@…" = "正在扫描%@…"; +"Scheduled" = "定时运行"; +"Security Settings" = "安全设置"; +"See current resource use and review what starts in the background." = "查看当前资源使用情况和后台启动项目。"; +"See what is taking up space" = "查看空间占用情况"; +"Select %@" = "选择 %@"; +"Select a tool from the sidebar." = "从侧边栏选择一个工具。"; +"Select any folder to see which files and subfolders occupy the most disk space." = "选择一个文件夹,查看哪些文件和子文件夹占用了最多空间。"; +"Select apps to update" = "选择要更新的应用"; +"Select at least one app to update." = "请至少选择一个要更新的应用。"; +"Select copies" = "选择副本"; +"Select the apps Homebrew should upgrade." = "选择要通过 Homebrew 更新的应用。"; +"Select the extra copies you want to review" = "选择需要处理的多余副本"; +"Select visible" = "选择当前显示的项目"; +"Selected" = "已选择"; +"Selected cleanup items are permanently removed." = "所选清理项目将被永久删除。"; +"Share of scanned space" = "占已扫描空间的比例"; +"Shares storage with %@" = "与 %@ 共用存储空间"; +"Show %@ in Finder" = "在访达中显示 %@"; +"Show in Finder" = "在访达中显示"; +"Shows a confirmation before moving the selected copies" = "移动所选副本前显示确认提示"; +"Similar Photos" = "相似照片"; +"Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality." = "相似度只是对画面的估计,并不代表两个文件完全相同。可点击“在访达中显示”查看并比较原图。"; +"Size unavailable" = "大小未知"; +"Skipped items" = "已跳过的项目"; +"Smallest first" = "从小到大"; +"Snapshot could not be deleted" = "无法删除快照"; +"Software Update" = "软件更新"; +"Some contents were skipped or inaccessible" = "部分内容已跳过或无法访问"; +"Some files were not moved" = "部分文件未能移动"; +"Some information could not be read (%lld)" = "部分信息无法读取(%lld 项)"; +"Some items need attention" = "部分项目需要处理"; +"Some locations are unavailable" = "部分位置无法访问"; +"Some protected locations are unavailable. Full Disk Access allows a more complete scan." = "部分受保护的位置无法访问。授予完全磁盘访问权限后,可以扫描更多位置。"; +"Some selected files" = "部分所选文件"; +"Sort" = "排序"; +"Space Explorer" = "空间分析"; +"Startup and background items" = "启动项与后台项目"; +"Stop" = "停止"; +"Stop scan" = "停止扫描"; +"Stopped" = "已停止"; +"Stopping keeps the results found so far." = "停止后会保留已经完成的扫描结果。"; +"Stops scanning without changing any files" = "停止扫描,不修改任何文件"; +"Suggested groups" = "相似照片分组"; +"Symbolic link" = "符号链接"; +"Symbolic links and cloud-only items are excluded." = "跳过符号链接和仅存于云端的项目。"; +"Symbolic links cannot be scanned: %@" = "无法扫描符号链接:%@"; +"Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted." = "跳过符号链接、应用程序包、隐藏文件和未下载的云端文件。不会上传或删除照片。"; +"System Integrity Protection" = "系统完整性保护"; +"System Integrity Protection is turned off." = "系统完整性保护已关闭。"; +"System daemon" = "系统守护进程"; +"System update" = "系统更新"; +"System-wide agent" = "全局启动代理"; +"The analyzed photos did not meet PureMac's visual similarity threshold." = "已分析的照片未达到 PureMac 的相似度阈值。"; +"The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan." = "此检查只读取当前设置,不会修改你的 Mac。它用于检查安全配置,不会扫描恶意软件。"; +"The check timed out." = "检查超时。"; +"The copy marked Keep is missing or changed: %@" = "标记为保留的副本已丢失或发生变化:%@"; +"The inspected user and third-party launch folders are empty." = "已检查的用户和第三方启动文件夹为空。"; +"The launch item is not a property-list dictionary." = "启动项不是有效的属性列表字典。"; +"The macOS application firewall is turned off." = "macOS 应用防火墙已关闭。"; +"The protected copy cannot be moved to Trash: %@" = "无法将受保护的副本移到废纸篓:%@"; +"The scan stopped. Available results are ready to review." = "扫描已停止,你可以查看已完成的扫描结果。"; +"The selected folder cannot be scanned: %@" = "无法扫描所选文件夹:%@"; +"The selected folder could not be read: %@" = "无法读取所选文件夹:%@"; +"The selected folder is stored in the cloud and has not been downloaded: %@" = "所选文件夹存储在云端,尚未下载:%@"; +"The selected item is not a folder: %@" = "所选项目不是文件夹:%@"; +"The startup disk is encrypted with FileVault." = "启动磁盘已使用文件保险箱加密。"; +"The startup disk is not encrypted with FileVault." = "启动磁盘未使用文件保险箱加密。"; +"The system returned an unrecognized status." = "无法识别系统返回的状态。"; +"There are no cleanup items in this category." = "此类别中没有可清理的项目。"; +"This folder is empty or its contents were excluded from the scan." = "此文件夹为空,或其中的内容已被排除。"; +"This permanently removes %@. Its size is unknown, and the action cannot be undone." = "这将永久删除 %@。快照大小未知,此操作无法撤销。"; +"This permanently removes the selected Time Machine snapshot." = "这将永久删除所选的时间机器快照。"; +"This snapshot does not have a verified Time Machine timestamp." = "此快照没有经过验证的时间机器时间戳。"; +"Time Machine" = "时间机器"; +"Time Machine Settings" = "时间机器设置"; +"Time Machine did not report any snapshots for the startup disk." = "时间机器未报告启动磁盘上的任何快照。"; +"Time Machine snapshots are unavailable" = "无法获取时间机器快照"; +"Time Machine snapshots can be reviewed and removed individually" = "可以逐一查看和删除时间机器快照"; +"Tools" = "实用工具"; +"Try Again" = "重试"; +"Try another name, size, or date range." = "请尝试其他名称、大小或日期范围。"; +"Uninstaller" = "应用卸载"; +"Unknown" = "未知"; +"Unknown error" = "未知错误"; +"Updates from Homebrew" = "Homebrew 应用更新"; +"Updating…" = "正在更新…"; +"Upgrade %lld Apps" = "更新 %lld 个应用"; +"Upgrade 1 App" = "更新 1 个应用"; +"Upgrade selected apps?" = "更新所选应用?"; +"User agent" = "用户启动代理"; +"Verifying possible matches" = "正在校验可能重复的文件"; +"Watches folders" = "监视文件夹"; +"Watches paths" = "监视路径"; +"XProtect" = "XProtect"; +"allocated in this folder" = "此文件夹的实际磁盘占用"; +"definitions %@" = "病毒定义 %@"; +"engine %@" = "引擎 %@"; +"macOS does not report reliable per-snapshot sizes in this listing." = "macOS 无法提供此列表中每个快照的准确大小。"; +"reclaimed" = "已释放"; +"similar group" = "组相似照片"; +"similar groups" = "组相似照片"; +"tmutil is not available on this Mac." = "此 Mac 上无法使用 tmutil。"; diff --git a/PureMac/zh-Hans.lproj/ServicesMenu.strings b/PureMac/zh-Hans.lproj/ServicesMenu.strings new file mode 100644 index 0000000..59c18ab --- /dev/null +++ b/PureMac/zh-Hans.lproj/ServicesMenu.strings @@ -0,0 +1 @@ +"Uninstall with PureMac" = "使用 PureMac 卸载"; diff --git a/PureMac/zh-Hant.lproj/Localizable.strings b/PureMac/zh-Hant.lproj/Localizable.strings index a2dd3e2..d3a4124 100644 --- a/PureMac/zh-Hant.lproj/Localizable.strings +++ b/PureMac/zh-Hant.lproj/Localizable.strings @@ -460,3 +460,410 @@ /* Simulator runtimes */ "Simulator runtime" = "模擬器執行環境"; + +/* Current dashboard, tools, and cleanup review — English fallback until translated */ +"\nAnd %lld more." = "\nAnd %lld more."; +"%@ %@ to %@" = "%@ %@ to %@"; +"%@ available" = "%@ available"; +"%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again." = "%@ could not be removed because PureMac does not have Full Disk Access. Grant Full Disk Access in System Settings, then try again."; +"%@ did not finish within the allowed time." = "%@ did not finish within the allowed time."; +"%@ exited with status %d%@" = "%@ exited with status %d%@"; +"%@ files inspected" = "%@ files inspected"; +"%@ found across %lld categories." = "%@ found across %lld categories."; +"%@ found before the scan stopped. Results may be incomplete." = "%@ found before the scan stopped. Results may be incomplete."; +"%@ of %@" = "%@ of %@"; +"%@ of %@ candidates · %@ verified" = "%@ of %@ candidates · %@ verified"; +"%@ reviewable" = "%@ reviewable"; +"%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone." = "%@ selected. This permanently removes the selected files or runs the listed cleanup actions. It cannot be undone."; +"%@ will move to Trash" = "%@ will move to Trash"; +"%lld analyzed" = "%lld analyzed"; +"%lld apps selected" = "%lld apps selected"; +"%lld areas" = "%lld areas"; +"%lld compared" = "%lld compared"; +"%lld exact copies · %@ each" = "%lld exact copies · %@ each"; +"%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access." = "%lld file(s) could not be removed with administrator privileges. The items may have changed or macOS denied access."; +"%lld file(s) could not be removed. Check that the items still exist and are not in use." = "%lld file(s) could not be removed. Check that the items still exist and are not in use."; +"%lld files totaling %@ were moved. Every protected copy remains in place." = "%lld files totaling %@ were moved. Every protected copy remains in place."; +"%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place." = "%lld files totaling %@ will be moved to Trash. The protected copy in every group stays in place."; +"%lld files · %lld folders" = "%lld files · %lld folders"; +"%lld folders" = "%lld folders"; +"%lld found" = "%lld found"; +"%lld inaccessible" = "%lld inaccessible"; +"%lld items · %@ found" = "%lld items · %@ found"; +"%lld matched" = "%lld matched"; +"%lld of %lld items shown" = "%lld of %lld items shown"; +"%lld percent" = "%lld percent"; +"%lld photos" = "%lld photos"; +"%lld photos · %@" = "%lld photos · %@"; +"%lld selected items will be permanently deleted. Review the list before continuing." = "%lld selected items will be permanently deleted. Review the list before continuing."; +"%lld selected · %@" = "%lld selected · %@"; +"%lld skipped" = "%lld skipped"; +"%lld unsafe or unavailable items were not scanned" = "%lld unsafe or unavailable items were not scanned"; +"%lld unsafe or unavailable items were skipped." = "%lld unsafe or unavailable items were skipped."; +"%lld updates available" = "%lld updates available"; +"%lld%% visual score" = "%lld%% visual score"; +", and %lld more" = ", and %lld more"; +"1 app selected" = "1 app selected"; +"1 update available" = "1 update available"; +"500 photo limit" = "500 photo limit"; +"A clear view of reclaimable storage and the tools that manage it." = "A clear view of reclaimable storage and the tools that manage it."; +"A selected file is missing or changed: %@" = "A selected file is missing or changed: %@"; +"A selected file no longer matches its kept copy: %@" = "A selected file no longer matches its kept copy: %@"; +"Access denied" = "Access denied"; +"Administrator removal failed: %@" = "Administrator removal failed: %@"; +"Always exclude from cleanup" = "Always exclude from cleanup"; +"Any age" = "Any age"; +"Any size" = "Any size"; +"App Updates" = "App Updates"; +"App and document packages are excluded: %@" = "App and document packages are excluded: %@"; +"App bundle missing" = "App bundle missing"; +"App downloads are checked before opening." = "App downloads are checked before opening."; +"App permissions" = "App permissions"; +"Apple Guide" = "Apple Guide"; +"Apple's built-in malware protection is installed. Update recency is managed by macOS." = "Apple's built-in malware protection is installed. Update recency is managed by macOS."; +"Application Firewall" = "Application Firewall"; +"Apps outside Homebrew" = "Apps outside Homebrew"; +"At login" = "At login"; +"Available" = "Available"; +"Available to review" = "Available to review"; +"Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions." = "Browser controls must be reviewed inside each browser. PureMac does not change cookies, history, site permissions, or extensions."; +"Browser privacy" = "Browser privacy"; +"Building visual signatures" = "Building visual signatures"; +"Camera" = "Camera"; +"Care" = "Care"; +"Changed during scan" = "Changed during scan"; +"Check Again" = "Check Again"; +"Check again" = "Check again"; +"Check built-in safeguards" = "Check built-in safeguards"; +"Check installed apps for new versions" = "Check installed apps for new versions"; +"Check installed cask apps" = "Check installed cask apps"; +"Checked %@. Unknown means the setting could not be confirmed." = "Checked %@. Unknown means the setting could not be confirmed."; +"Checking" = "Checking"; +"Checking Homebrew casks" = "Checking Homebrew casks"; +"Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation." = "Checking asks Homebrew to refresh its package data as needed and contacts Homebrew's configured sources. PureMac only lists cask apps managed by this Homebrew installation."; +"Checking your Mac. Nothing is removed during a scan." = "Checking your Mac. Nothing is removed during a scan."; +"Choose Another Folder" = "Choose Another Folder"; +"Choose Folder" = "Choose Folder"; +"Choose a Folder" = "Choose a Folder"; +"Choose a folder of photos" = "Choose a folder of photos"; +"Choose a folder to check for duplicate files" = "Choose a folder to check for duplicate files"; +"Choose a folder to inspect" = "Choose a folder to inspect"; +"Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically." = "Choose a folder. PureMac compares file sizes first, then verifies matching files byte for byte. Nothing is selected or removed automatically."; +"Choose a photo folder" = "Choose a photo folder"; +"Choose where to look" = "Choose where to look"; +"Chrome privacy guide" = "Chrome privacy guide"; +"Clean selected items" = "Clean selected items"; +"Cleaning selected items" = "Cleaning selected items"; +"Cleanup Exclusions" = "Cleanup Exclusions"; +"Cleanup finished and disk information is refreshing." = "Cleanup finished and disk information is refreshing."; +"Cleanup plan" = "Cleanup plan"; +"Clear Selection" = "Clear Selection"; +"Clear filters" = "Clear filters"; +"Clear search" = "Clear search"; +"Clear selection" = "Clear selection"; +"Cloud-only file" = "Cloud-only file"; +"Collapse duplicate group" = "Collapse duplicate group"; +"Compare visually similar photos" = "Compare visually similar photos"; +"Conditional keep alive" = "Conditional keep alive"; +"Copy path" = "Copy path"; +"Could not inspect %@" = "Could not inspect %@"; +"Could not list Time Machine snapshots" = "Could not list Time Machine snapshots"; +"Could not read" = "Could not read"; +"Could not read %@" = "Could not read %@"; +"Couldn't check for updates" = "Couldn't check for updates"; +"Current scan path" = "Current scan path"; +"Delete" = "Delete"; +"Delete Snapshot" = "Delete Snapshot"; +"Delete local snapshot?" = "Delete local snapshot?"; +"Deselect visible" = "Deselect visible"; +"Developer Cleanup" = "Developer Cleanup"; +"Disabled" = "Disabled"; +"Downloaded apps are not being assessed by Gatekeeper." = "Downloaded apps are not being assessed by Gatekeeper."; +"Drag to tilt" = "Drag to tilt"; +"Duplicate Finder" = "Duplicate Finder"; +"Duplicate groups" = "Duplicate groups"; +"Every %lld seconds" = "Every %lld seconds"; +"Every eligible file was checked." = "Every eligible file was checked."; +"Exact-match cleanup with a protected copy in every group" = "Exact-match cleanup with a protected copy in every group"; +"Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it." = "Excluded paths and folders containing them stay out of manual and scheduled cleanup. Right-click a cleanup result to exclude it."; +"Expand duplicate group" = "Expand duplicate group"; +"File" = "File"; +"FileVault" = "FileVault"; +"FileVault Settings" = "FileVault Settings"; +"Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them." = "Files will be moved to the Trash. Items requiring administrator authorization may be permanently deleted. App matching is a best-effort estimate; review files you recognize before removing them."; +"Filter cleanup files" = "Filter cleanup files"; +"Find a file or path" = "Find a file or path"; +"Find copies that are exactly the same" = "Find copies that are exactly the same"; +"Find space to reclaim." = "Find space to reclaim."; +"Find visually related shots in a folder and review them side by side." = "Find visually related shots in a folder and review them side by side."; +"Find what uses the most disk space" = "Find what uses the most disk space"; +"Finding local photos" = "Finding local photos"; +"Firewall Settings" = "Firewall Settings"; +"Focused utilities for storage, apps, and system maintenance" = "Focused utilities for storage, apps, and system maintenance"; +"Folder could not be inspected" = "Folder could not be inspected"; +"Full Disk Access is off" = "Full Disk Access is off"; +"Full access" = "Full access"; +"Gatekeeper" = "Gatekeeper"; +"Group %lld" = "Group %lld"; +"Grouping similar shots" = "Grouping similar shots"; +"Hard-linked copy" = "Hard-linked copy"; +"Homebrew apps are up to date" = "Homebrew apps are up to date"; +"Homebrew did not finish before the operation timed out." = "Homebrew did not finish before the operation timed out."; +"Homebrew finished, but %lld selected apps still report updates." = "Homebrew finished, but %lld selected apps still report updates."; +"Homebrew finished, but 1 selected app still reports an update." = "Homebrew finished, but 1 selected app still reports an update."; +"Homebrew finished. Check again to verify installed versions." = "Homebrew finished. Check again to verify installed versions."; +"Homebrew not found" = "Homebrew not found"; +"Homebrew produced more output than PureMac could safely retain." = "Homebrew produced more output than PureMac could safely retain."; +"Homebrew returned an invalid cask identifier: %@" = "Homebrew returned an invalid cask identifier: %@"; +"Homebrew returned update information PureMac could not read." = "Homebrew returned update information PureMac could not read."; +"Homebrew updated the %lld selected apps." = "Homebrew updated the %lld selected apps."; +"Homebrew updated the selected app." = "Homebrew updated the selected app."; +"Homebrew was not found in a standard installation location." = "Homebrew was not found in a standard installation location."; +"Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process." = "Homebrew will upgrade %@. It may quit running apps and remove superseded cask versions as part of its normal upgrade process."; +"Includes %lld selected items hidden by filters." = "Includes %lld selected items hidden by filters."; +"Incoming network connections are filtered." = "Incoming network connections are filtered."; +"Inspect" = "Inspect"; +"Inspect a folder by allocated disk space. Your files are never changed." = "Inspect a folder by allocated disk space. Your files are never changed."; +"Inspect memory and background activity" = "Inspect memory and background activity"; +"Inspect startup items and local snapshots again" = "Inspect startup items and local snapshots again"; +"Inspected %@ files in %@. %@" = "Inspected %@ files in %@. %@"; +"Inspecting startup items and local snapshots…" = "Inspecting startup items and local snapshots…"; +"Inspection stopped" = "Inspection stopped"; +"Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels." = "Install Homebrew to check cask apps here. Apps from the App Store and direct downloads use their own update channels."; +"Installed" = "Installed"; +"Installed %@" = "Installed %@"; +"Keep" = "Keep"; +"Keep PureMac open until this pass finishes." = "Keep PureMac open until this pass finishes."; +"Keep alive" = "Keep alive"; +"Largest first" = "Largest first"; +"Largest items" = "Largest items"; +"Last activity: %@" = "Last activity: %@"; +"Last checked" = "Last checked"; +"Launch agents and daemons installed outside macOS system folders" = "Launch agents and daemons installed outside macOS system folders"; +"Leftovers" = "Leftovers"; +"Live" = "Live"; +"Live resources" = "Live resources"; +"Local and private" = "Local and private"; +"Local files" = "Local files"; +"Local snapshot" = "Local snapshot"; +"Local snapshots" = "Local snapshots"; +"Location" = "Location"; +"Login Items Settings" = "Login Items Settings"; +"Looking through files" = "Looking through files"; +"Mac storage" = "Mac storage"; +"Managed cleanup action" = "Managed cleanup action"; +"Matching files" = "Matching files"; +"Measuring allocated space" = "Measuring allocated space"; +"Memory pressure use" = "Memory pressure use"; +"Microphone" = "Microphone"; +"Modified" = "Modified"; +"Move selected duplicates to Trash?" = "Move selected duplicates to Trash?"; +"Moved to Trash" = "Moved to Trash"; +"Name" = "Name"; +"Needs attention" = "Needs attention"; +"Network state" = "Network state"; +"No exact duplicates found" = "No exact duplicates found"; +"No excluded paths" = "No excluded paths"; +"No files found" = "No files found"; +"No files were changed. Rescan this folder when you are ready." = "No files were changed. Rescan this folder when you are ready."; +"No launchd items found" = "No launchd items found"; +"No local snapshots reported" = "No local snapshots reported"; +"No matching files" = "No matching files"; +"No measurable items" = "No measurable items"; +"No photos were changed. You can scan the folder again at any time." = "No photos were changed. You can scan the folder again at any time."; +"No reclaimable items were found before the scan stopped." = "No reclaimable items were found before the scan stopped."; +"No reclaimable items were found in the areas checked." = "No reclaimable items were found in the areas checked."; +"No results yet" = "No results yet"; +"No scan run yet" = "No scan run yet"; +"No similar groups found" = "No similar groups found"; +"No updates are currently available for the cask apps Homebrew manages." = "No updates are currently available for the cask apps Homebrew manages."; +"Nothing selected" = "Nothing selected"; +"Nothing to clean" = "Nothing to clean"; +"Nothing was moved" = "Nothing was moved"; +"Off" = "Off"; +"Older than 30 days" = "Older than 30 days"; +"Older than 6 months" = "Older than 6 months"; +"Older than a year" = "Older than a year"; +"Oldest first" = "Oldest first"; +"On" = "On"; +"Open Activity Monitor" = "Open Activity Monitor"; +"Open App Store Updates" = "Open App Store Updates"; +"Open Folder" = "Open Folder"; +"Open a category to review individual items" = "Open a category to review individual items"; +"Open folder" = "Open folder"; +"Open the App Store updates page. Direct-download apps may provide their own updater." = "Open the App Store updates page. Direct-download apps may provide their own updater."; +"Opens a folder picker" = "Opens a folder picker"; +"Over 1 GB" = "Over 1 GB"; +"Over 10 GB" = "Over 10 GB"; +"Over 100 MB" = "Over 100 MB"; +"Package" = "Package"; +"Package contents" = "Package contents"; +"Package · %lld files" = "Package · %lld files"; +"Partial result" = "Partial result"; +"Partial results" = "Partial results"; +"Performance" = "Performance"; +"Permanently delete %@?" = "Permanently delete %@?"; +"Permanently remove %lld items" = "Permanently remove %lld items"; +"Personal data or an optional cleanup action. Left unselected by default." = "Personal data or an optional cleanup action. Left unselected by default."; +"Photos could not be compared" = "Photos could not be compared"; +"Pinned" = "Pinned"; +"Preparing scan" = "Preparing scan"; +"Preparing the next area…" = "Preparing the next area…"; +"Preparing visual comparison" = "Preparing visual comparison"; +"Program not declared in this plist" = "Program not declared in this plist"; +"Protected caches and app containers will be skipped." = "Protected caches and app containers will be skipped."; +"Protected copy" = "Protected copy"; +"Protected system locations and processes are restricted." = "Protected system locations and processes are restricted."; +"Protection" = "Protection"; +"PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review." = "PureMac builds small local thumbnails, compares their visual structure and color, then groups likely matches for review."; +"PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed." = "PureMac checks caches, logs, developer data, downloads, and Trash. You review the result before anything is removed."; +"PureMac compares local image thumbnails without changing your photos." = "PureMac compares local image thumbnails without changing your photos."; +"PureMac could not confirm the local XProtect installation." = "PureMac could not confirm the local XProtect installation."; +"PureMac could not read this setting." = "PureMac could not read this setting."; +"PureMac did not find removable items in the selected scan areas." = "PureMac did not find removable items in the selected scan areas."; +"PureMac measures allocated disk space without changing files." = "PureMac measures allocated disk space without changing files."; +"PureMac reads the selected folder and does not change anything during a scan." = "PureMac reads the selected folder and does not change anything during a scan."; +"PureMac will ask Homebrew for available versions when you start the check." = "PureMac will ask Homebrew for available versions when you start the check."; +"PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing." = "PureMac will move the selected app and related files to the Trash. Items requiring administrator authorization may be permanently deleted. Review the selection before continuing."; +"PureMac.app" = "PureMac.app"; +"Ready for protected locations" = "Ready for protected locations"; +"Refresh disk information" = "Refresh disk information"; +"Refreshing package data and comparing installed versions." = "Refreshing package data and comparing installed versions."; +"Refused to delete %lld protected item(s) (home credential directory or similar)." = "Refused to delete %lld protected item(s) (home credential directory or similar)."; +"Remove %lld files" = "Remove %lld files"; +"Remove %lld items" = "Remove %lld items"; +"Remove apps and their related files" = "Remove apps and their related files"; +"Remove selected app files?" = "Remove selected app files?"; +"Remove selected files?" = "Remove selected files?"; +"Remove selected leftovers?" = "Remove selected leftovers?"; +"Removing the items you selected." = "Removing the items you selected."; +"Reveal %@ in Finder" = "Reveal %@ in Finder"; +"Reveal plist in Finder" = "Reveal plist in Finder"; +"Reveal skipped item in Finder" = "Reveal skipped item in Finder"; +"Review and update apps installed as Homebrew casks." = "Review and update apps installed as Homebrew casks."; +"Review built-in privacy and safety checks" = "Review built-in privacy and safety checks"; +"Review matching files side by side" = "Review matching files side by side"; +"Review only" = "Review only"; +"Review removal" = "Review removal"; +"Review the groups before acting" = "Review the groups before acting"; +"Review the macOS safeguards that protect apps, disks, network access, and system files." = "Review the macOS safeguards that protect apps, disks, network access, and system files."; +"Review the results and choose exactly what to remove." = "Review the results and choose exactly what to remove."; +"Review which apps can access private data and hardware." = "Review which apps can access private data and hardware."; +"Run audit" = "Run audit"; +"Run the scan again when you are ready to check every area." = "Run the scan again when you are ready to check every area."; +"Safari privacy guide" = "Safari privacy guide"; +"Safari: Settings > Privacy" = "Safari: Settings > Privacy"; +"Sample limit reached" = "Sample limit reached"; +"Scan Another Folder" = "Scan Another Folder"; +"Scan Folder" = "Scan Folder"; +"Scan Photos" = "Scan Photos"; +"Scan again" = "Scan again"; +"Scan complete" = "Scan complete"; +"Scan could not finish" = "Scan could not finish"; +"Scan first, then review the exact files before removing anything." = "Scan first, then review the exact files before removing anything."; +"Scan stopped" = "Scan stopped"; +"Scan this Mac" = "Scan this Mac"; +"Scan this category" = "Scan this category"; +"Scanning %@…" = "Scanning %@…"; +"Scheduled" = "Scheduled"; +"Security Settings" = "Security Settings"; +"See current resource use and review what starts in the background." = "See current resource use and review what starts in the background."; +"See what is taking up space" = "See what is taking up space"; +"Select %@" = "Select %@"; +"Select a tool from the sidebar." = "Select a tool from the sidebar."; +"Select any folder to see which files and subfolders occupy the most disk space." = "Select any folder to see which files and subfolders occupy the most disk space."; +"Select apps to update" = "Select apps to update"; +"Select at least one app to update." = "Select at least one app to update."; +"Select copies" = "Select copies"; +"Select the apps Homebrew should upgrade." = "Select the apps Homebrew should upgrade."; +"Select the extra copies you want to review" = "Select the extra copies you want to review"; +"Select visible" = "Select visible"; +"Selected" = "Selected"; +"Selected cleanup items are permanently removed." = "Selected cleanup items are permanently removed."; +"Share of scanned space" = "Share of scanned space"; +"Shares storage with %@" = "Shares storage with %@"; +"Show %@ in Finder" = "Show %@ in Finder"; +"Show in Finder" = "Show in Finder"; +"Shows a confirmation before moving the selected copies" = "Shows a confirmation before moving the selected copies"; +"Similar Photos" = "Similar Photos"; +"Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality." = "Similarity is a visual estimate, not proof that two files are identical. Use Show in Finder to compare originals at full quality."; +"Size unavailable" = "Size unavailable"; +"Skipped items" = "Skipped items"; +"Smallest first" = "Smallest first"; +"Snapshot could not be deleted" = "Snapshot could not be deleted"; +"Software Update" = "Software Update"; +"Some contents were skipped or inaccessible" = "Some contents were skipped or inaccessible"; +"Some files were not moved" = "Some files were not moved"; +"Some information could not be read (%lld)" = "Some information could not be read (%lld)"; +"Some items need attention" = "Some items need attention"; +"Some locations are unavailable" = "Some locations are unavailable"; +"Some protected locations are unavailable. Full Disk Access allows a more complete scan." = "Some protected locations are unavailable. Full Disk Access allows a more complete scan."; +"Some selected files" = "Some selected files"; +"Sort" = "Sort"; +"Space Explorer" = "Space Explorer"; +"Startup and background items" = "Startup and background items"; +"Stop" = "Stop"; +"Stop scan" = "Stop scan"; +"Stopped" = "Stopped"; +"Stopping keeps the results found so far." = "Stopping keeps the results found so far."; +"Stops scanning without changing any files" = "Stops scanning without changing any files"; +"Suggested groups" = "Suggested groups"; +"Symbolic link" = "Symbolic link"; +"Symbolic links and cloud-only items are excluded." = "Symbolic links and cloud-only items are excluded."; +"Symbolic links cannot be scanned: %@" = "Symbolic links cannot be scanned: %@"; +"Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted." = "Symbolic links, app packages, hidden files and cloud-only placeholders are skipped. Photos are never uploaded or deleted."; +"System Integrity Protection" = "System Integrity Protection"; +"System Integrity Protection is turned off." = "System Integrity Protection is turned off."; +"System daemon" = "System daemon"; +"System update" = "System update"; +"System-wide agent" = "System-wide agent"; +"The analyzed photos did not meet PureMac's visual similarity threshold." = "The analyzed photos did not meet PureMac's visual similarity threshold."; +"The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan." = "The audit reads current settings and does not change your Mac. It is a configuration review, not a malware scan."; +"The check timed out." = "The check timed out."; +"The copy marked Keep is missing or changed: %@" = "The copy marked Keep is missing or changed: %@"; +"The inspected user and third-party launch folders are empty." = "The inspected user and third-party launch folders are empty."; +"The launch item is not a property-list dictionary." = "The launch item is not a property-list dictionary."; +"The macOS application firewall is turned off." = "The macOS application firewall is turned off."; +"The protected copy cannot be moved to Trash: %@" = "The protected copy cannot be moved to Trash: %@"; +"The scan stopped. Available results are ready to review." = "The scan stopped. Available results are ready to review."; +"The selected folder cannot be scanned: %@" = "The selected folder cannot be scanned: %@"; +"The selected folder could not be read: %@" = "The selected folder could not be read: %@"; +"The selected folder is stored in the cloud and has not been downloaded: %@" = "The selected folder is stored in the cloud and has not been downloaded: %@"; +"The selected item is not a folder: %@" = "The selected item is not a folder: %@"; +"The startup disk is encrypted with FileVault." = "The startup disk is encrypted with FileVault."; +"The startup disk is not encrypted with FileVault." = "The startup disk is not encrypted with FileVault."; +"The system returned an unrecognized status." = "The system returned an unrecognized status."; +"There are no cleanup items in this category." = "There are no cleanup items in this category."; +"This folder is empty or its contents were excluded from the scan." = "This folder is empty or its contents were excluded from the scan."; +"This permanently removes %@. Its size is unknown, and the action cannot be undone." = "This permanently removes %@. Its size is unknown, and the action cannot be undone."; +"This permanently removes the selected Time Machine snapshot." = "This permanently removes the selected Time Machine snapshot."; +"This snapshot does not have a verified Time Machine timestamp." = "This snapshot does not have a verified Time Machine timestamp."; +"Time Machine" = "Time Machine"; +"Time Machine Settings" = "Time Machine Settings"; +"Time Machine did not report any snapshots for the startup disk." = "Time Machine did not report any snapshots for the startup disk."; +"Time Machine snapshots are unavailable" = "Time Machine snapshots are unavailable"; +"Time Machine snapshots can be reviewed and removed individually" = "Time Machine snapshots can be reviewed and removed individually"; +"Tools" = "Tools"; +"Try Again" = "Try Again"; +"Try another name, size, or date range." = "Try another name, size, or date range."; +"Uninstaller" = "Uninstaller"; +"Unknown" = "Unknown"; +"Unknown error" = "Unknown error"; +"Updates from Homebrew" = "Updates from Homebrew"; +"Updating…" = "Updating…"; +"Upgrade %lld Apps" = "Upgrade %lld Apps"; +"Upgrade 1 App" = "Upgrade 1 App"; +"Upgrade selected apps?" = "Upgrade selected apps?"; +"User agent" = "User agent"; +"Verifying possible matches" = "Verifying possible matches"; +"Watches folders" = "Watches folders"; +"Watches paths" = "Watches paths"; +"XProtect" = "XProtect"; +"allocated in this folder" = "allocated in this folder"; +"definitions %@" = "definitions %@"; +"engine %@" = "engine %@"; +"macOS does not report reliable per-snapshot sizes in this listing." = "macOS does not report reliable per-snapshot sizes in this listing."; +"reclaimed" = "reclaimed"; +"similar group" = "similar group"; +"similar groups" = "similar groups"; +"tmutil is not available on this Mac." = "tmutil is not available on this Mac."; diff --git a/PureMacTests/LocalizationFilesTests.swift b/PureMacTests/LocalizationFilesTests.swift index ba38003..0ad84ee 100644 --- a/PureMacTests/LocalizationFilesTests.swift +++ b/PureMacTests/LocalizationFilesTests.swift @@ -8,8 +8,8 @@ final class LocalizationFilesTests: XCTestCase { XCTAssertNotNil(localizationFiles["uk"], "Expected uk.lproj/Localizable.strings to exist") } - func testBuiltAppBundleContainsRussianAndUkrainianLocalizations() throws { - for language in ["ru", "uk"] { + func testBuiltAppBundleContainsRussianUkrainianAndSimplifiedChineseLocalizations() throws { + for language in ["ru", "uk", "zh-Hans"] { XCTAssertTrue( Bundle.main.localizations.contains(language), "Expected the built app bundle to register the \(language) localization" @@ -104,6 +104,20 @@ final class LocalizationFilesTests: XCTestCase { } } + func testSimplifiedChineseHasNoEnglishPlaceholderValues() throws { + let files = try localizableStringsFiles() + let english = try localizedStrings(in: XCTUnwrap(files["en"])) + let chinese = try localizedStrings(in: XCTUnwrap(files["zh-Hans"])) + let unchangedNames: Set = ["PureMac", "PureMac.app", "CPU", "XProtect"] + + for (key, value) in english where !unchangedNames.contains(key) { + XCTAssertNotEqual( + chinese[key], value, + "Simplified Chinese still uses the English placeholder for: \(key)" + ) + } + } + private func localizableStringsFiles() throws -> [String: URL] { let sourceRoot = URL(fileURLWithPath: #filePath) .deletingLastPathComponent() @@ -152,7 +166,7 @@ final class LocalizationFilesTests: XCTestCase { } private func formatSignature(in value: String) -> [String] { - let pattern = #"%(?:(\d+)\$)?(lld|@|%)"# + let pattern = #"%(?:(\d+)\$)?(lld|llu|ld|lu|d|u|f|@|%)"# let regex = try! NSRegularExpression(pattern: pattern) let range = NSRange(value.startIndex..., in: value) var sequentialPosition = 1