diff --git a/README.md b/README.md index 89787ac..69c8df2 100644 --- a/README.md +++ b/README.md @@ -40,9 +40,12 @@ CloudMachine is an independent project, not affiliated with Apple or Google - About 200 GB of free disk: the machine's disk file grows with the upload buffer. -The menu-bar app, CLI output and notifications follow the system language: -Polish when Polish is the first preferred language, English otherwise. -`CM_LANGUAGE=en` or `CM_LANGUAGE=pl` overrides it. Logs are always English, +The menu-bar app, CLI output and notifications follow the system language, in +22 languages: Arabic, Chinese (Simplified and Traditional), Danish, Dutch, +English, Finnish, French, German, Hebrew, Italian, Japanese, Korean, Malay, +Norwegian Bokmål, Polish, Portuguese (Brazil), Russian, Spanish, Swedish, Thai +and Turkish; English for any other. `CM_LANGUAGE` with a language code (`en`, +`de`, `zh-Hant`...) overrides it. Logs are always English, so they read the same whoever sends them to you. ### Current limitations diff --git a/mac-app/Resources/Info.plist b/mac-app/Resources/Info.plist index a574833..2811ef5 100644 --- a/mac-app/Resources/Info.plist +++ b/mac-app/Resources/Info.plist @@ -23,6 +23,38 @@ __CM_COMMIT__ CMGitDirty __CM_DIRTY__ + + CFBundleDevelopmentRegion + en + CFBundleLocalizations + + ar + da + de + en + es + fi + fr + he + it + ja + ko + ms + nb + nl + pl + pt-BR + ru + sv + th + tr + zh-Hans + zh-Hant + CFBundlePackageType APPL CFBundleExecutable diff --git a/mac-app/Sources/CloudMachineApp/CloudMachineApp.swift b/mac-app/Sources/CloudMachineApp/CloudMachineApp.swift index e7455da..e33e4cf 100644 --- a/mac-app/Sources/CloudMachineApp/CloudMachineApp.swift +++ b/mac-app/Sources/CloudMachineApp/CloudMachineApp.swift @@ -1,3 +1,4 @@ +import CloudMachineCore import SwiftUI @main @@ -9,6 +10,7 @@ struct CloudMachineApp: App { MenuBarContentView() .environmentObject(controller) .preferredColorScheme(.dark) + .environment(\.layoutDirection, layoutDirection) } .menuBarExtraStyle(.window) @@ -16,6 +18,7 @@ struct CloudMachineApp: App { DashboardView() .environmentObject(controller) .preferredColorScheme(.dark) + .environment(\.layoutDirection, layoutDirection) .frame(minWidth: 820, minHeight: 600) } // No title bar: the sidebar runs up under the traffic lights, as in the @@ -23,4 +26,9 @@ struct CloudMachineApp: App { .windowStyle(.hiddenTitleBar) .defaultSize(width: 980, height: 760) } + + // Follows L10n rather than the bundle, so CM_LANGUAGE=ar mirrors it too. + private var layoutDirection: LayoutDirection { + L10n.language.isRightToLeft ? .rightToLeft : .leftToRight + } } diff --git a/mac-app/Sources/CloudMachineCore/L10n.swift b/mac-app/Sources/CloudMachineCore/L10n.swift index 442126a..34709a5 100644 --- a/mac-app/Sources/CloudMachineCore/L10n.swift +++ b/mac-app/Sources/CloudMachineCore/L10n.swift @@ -4,23 +4,32 @@ import Foundation /// /// The English text is the key, so the source reads naturally and a missing /// translation falls back to English instead of to an identifier. Polish -/// translations live in the `L10nPolish+*.swift` tables. Logs are NOT -/// localized: a log is read when diagnosing, often by someone else, and a file -/// that switches language with the system setting cannot be searched. +/// translations live in the `L10nPolish+*.swift` tables, the other languages +/// in `L10nTranslations+.swift`. Logs are NOT localized: a log is read +/// when diagnosing, often by someone else, and a file that switches language +/// with the system setting cannot be searched. /// -/// The language follows the system (first preferred language). `CM_LANGUAGE` -/// (`en` or `pl`) overrides it; tests always run in English, so their expected +/// The language follows the system's preferred languages, matched the way +/// macOS matches them for a localized app. `CM_LANGUAGE` (any code from +/// `Language`) overrides it; tests always run in English, so their expected /// strings do not depend on the Mac they run on. /// /// Rules, enforced by `L10nTests`: /// - the key is a single-line string literal written inline in the call; /// - placeholders are `%@` only (pass numbers as `"\(n)"`); `String(format:)` /// with a wrong argument type crashes, and `%@` cannot be mismatched; -/// - every key has a Polish entry with the same number of placeholders. +/// - every key has an entry in every language with the same placeholders +/// (`%1$@`... when a language needs another order). public enum L10n { - public enum Language: String { - case en - case pl + /// The 22 languages of the RenaCode games; also `CFBundleLocalizations`. + public enum Language: String, CaseIterable { + case ar, da, de, en, es, fi, fr, he, it, ja, ko, ms, nb, nl, pl + case ptBR = "pt-BR" + case ru, sv, th, tr + case zhHans = "zh-Hans" + case zhHant = "zh-Hant" + + public var isRightToLeft: Bool { self == .ar || self == .he } } /// Settable for tests and previews; resolved once otherwise. @@ -31,20 +40,63 @@ public enum L10n { preferredLanguages: [String] = Locale.preferredLanguages, isRunningTests: Bool = NSClassFromString("XCTestCase") != nil ) -> Language { - if let forced = environment["CM_LANGUAGE"].flatMap({ Language(rawValue: $0.lowercased()) }) { - return forced + if let forced = environment["CM_LANGUAGE"], let language = match([forced]) { + return language } if isRunningTests { return .en } - return preferredLanguages.first?.lowercased().hasPrefix("pl") == true ? .pl : .en + return match(preferredLanguages) ?? .en + } + + /// The first of `preferences` the app has, matched by Foundation (zh-TW -> + /// zh-Hant, pt-PT -> pt-BR, no -> nb). Foundation answers "en" when nothing + /// matches, so English counts only when the preference itself is English. + private static func match(_ preferences: [String]) -> Language? { + let codes = Language.allCases.map(\.rawValue) + for preference in preferences { + let identifier = preference.replacingOccurrences(of: "_", with: "-") + guard + let found = Bundle.preferredLocalizations(from: codes, forPreferences: [identifier]).first + .flatMap(Language.init(rawValue:)) + else { continue } + if found != .en || Locale(identifier: identifier).language.languageCode == .english { + return found + } + } + return nil } /// Translates `english`; with arguments, fills its `%@` placeholders. public static func tr(_ english: String, _ arguments: String...) -> String { - let template = language == .pl ? (polish[english] ?? english) : english + let template = translations[language]?[english] ?? english guard !arguments.isEmpty else { return template } return String(format: template, arguments: arguments.map { $0 as NSString }) } + /// Every language except English (the keys themselves). + static let translations: [Language: [String: String]] = [ + .pl: polish, + .ar: L10nTranslations.ar, + .da: L10nTranslations.da, + .de: L10nTranslations.de, + .es: L10nTranslations.es, + .fi: L10nTranslations.fi, + .fr: L10nTranslations.fr, + .he: L10nTranslations.he, + .it: L10nTranslations.it, + .ja: L10nTranslations.ja, + .ko: L10nTranslations.ko, + .ms: L10nTranslations.ms, + .nb: L10nTranslations.nb, + .nl: L10nTranslations.nl, + .ptBR: L10nTranslations.ptBR, + .ru: L10nTranslations.ru, + .sv: L10nTranslations.sv, + .th: L10nTranslations.th, + .tr: L10nTranslations.tr, + .zhHans: L10nTranslations.zhHans, + .zhHant: L10nTranslations.zhHant, + ] + /// All Polish tables merged. Split into files so that parts of the code can /// be translated in parallel without editing one shared dictionary. static let polish: [String: String] = { @@ -68,3 +120,6 @@ public enum L10n { /// Namespace for the Polish tables; each `L10nPolish+*.swift` adds one. enum L10nPolish {} + +/// Namespace for the other languages; `L10nTranslations+.swift` each. +enum L10nTranslations {} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+ar.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+ar.swift new file mode 100644 index 0000000..ca75cd4 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+ar.swift @@ -0,0 +1,951 @@ +// Arabic translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let ar: [String: String] = [ + "Space limit: %@": + "حد المساحة: %@", + " Time Machine quota not set to match - run: %@": + " لم تُضبط حصة Time Machine لتطابقه - شغّل: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "يحدد مقدار ما يمكن لهذا الـ Mac استخدامه من Google Drive، ويطبع أمر حصة Time Machine.", + "Limit in GB.": + "الحد بالـ GB.", + "Limit for this Mac: %@ GB.": + "الحد لهذا الـ Mac: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "اضبط الآن حصة Time Machine (تتطلب كلمة مرور المسؤول):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - التحقق وإعداد Google Drive والتثبيت. يستدعيه launchd وفق جدول زمني، أو يدويًا من الطرفية.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "يتصل بـ Google Drive عبر rclone (OAuth في المتصفح) وينشئ مجلد هذا الجهاز الافتراضي.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "استبدال الاتصال البعيد الحالي. خطر: يستبدل الرمز والأذونات.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "يحزّم build/CloudMachine.app في build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "خطأ: %@ غير موجود - شغّل 'cloudmachine-agent build-app' أولًا", + "==> Preparing the staging folder": + "==> تجهيز مجلد التجميع", + "==> Creating %@": + "==> إنشاء %@", + "ERROR: hdiutil exited with code %@.": + "خطأ: انتهى hdiutil برمز الخروج %@.", + "==> Done: %@": + "==> تم: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "عند التشغيل الأول (التطبيق غير موقّع بحساب مطوّر Apple):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. افتح %@ واسحب CloudMachine.app إلى مجلد التطبيقات.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. في Finder، انقر بزر الفأرة الأيمن على CloudMachine.app -> فتح -> فتح\n (النقر المزدوج العادي يُظهر حظر Gatekeeper \"مطوّر غير معروف\").", + "3. Later launches work normally, with a double-click.": + "3. عمليات التشغيل اللاحقة تعمل بشكل طبيعي، بنقرة مزدوجة.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "يبني CloudMachine.app (Release) - الواجهة الرسومية + cloudmachine-agent في Contents/MacOS/، إضافةً إلى launchd/ وvm/ وconfig/ كموارد.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "ملفات تنفيذية لـ Apple Silicon وIntel معًا (هكذا تبني CI الإصدار؛ غير لازم محليًا).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> بناء CloudMachineApp + cloudmachine-agent (release) - الإصدار %@ (%@)", + "ERROR: swift build exited with code %@.": + "خطأ: انتهى swift build برمز الخروج %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "خطأ: لم يُبلغ swift build --show-bin-path عن مجلد الملفات التنفيذية.", + "ERROR: no built binary found at %@": + "خطأ: لا يوجد ملف تنفيذي مبني في %@", + "==> Assembling the .app bundle in %@": + "==> تجميع حزمة .app في %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> تحذير: أنت تبني من شجرة غير نظيفة - لن يشير الإصدار إلى commit.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "خطأ: Resources/AppIcon.icns غير موجود - أنشئه: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> التوقيع بالشهادة المحلية '%@' (سيبقى الوصول الكامل إلى القرص بعد إعادة البناء لاحقًا)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> توقيع ad-hoc (دون حساب مطوّر Apple) - شغّل 'cloudmachine-agent setup-signing-cert' مرة واحدة لتبقى أذونات TCC بعد إعادة البناء لاحقًا", + "ERROR: codesign exited with code %@.": + "خطأ: انتهى codesign برمز الخروج %@.", + "Next step: %@": + "الخطوة التالية: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "ينشئ شهادة محلية موقّعة ذاتيًا لكي يبقى الوصول الكامل إلى القرص بعد إعادة بناء التطبيق لاحقًا.", + "Certificate '%@' already exists in %@, nothing to do.": + "الشهادة '%@' موجودة بالفعل في %@، لا حاجة لأي إجراء.", + "==> Generating the key and self-signed certificate '%@'...": + "==> إنشاء المفتاح والشهادة الموقّعة ذاتيًا '%@'...", + "ERROR: openssl req exited with code %@.": + "خطأ: انتهى openssl req برمز الخروج %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "خطأ: انتهى openssl pkcs12 برمز الخروج %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> استيراد الشهادة إلى %@ (مع تفويض /usr/bin/codesign مسبقًا لكي لا يطلب كلمة مرور سلسلة المفاتيح كل مرة)...", + "ERROR: security import exited with code %@.": + "خطأ: انتهى security import برمز الخروج %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> الوثوق بالشهادة لتوقيع الشيفرة فقط...", + "ERROR: security add-trusted-cert exited with code %@.": + "خطأ: انتهى security add-trusted-cert برمز الخروج %@.", + "Done. Certificate '%@' is now available to codesign.": + "تم. الشهادة '%@' متاحة الآن لـ codesign.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "سيستخدمها 'cloudmachine-agent build-app' التالي تلقائيًا بدل توقيع ad-hoc.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "بعد إعادة البناء تلك مرة واحدة، امنح الوصول الكامل إلى القرص مرة أخيرة - ولن\nتُعيد عمليات إعادة البناء اللاحقة ضبطه ما دمت توقّع بالشهادة نفسها.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "يتحقق من أن الدورة كل ساعة ما زالت تعمل (تاريخ آخر نسخة احتياطية ناجحة) ويبلّغ عن الأعطال.", + "After this many hours without a successful backup we consider the cycle broken.": + "بعد هذا العدد من الساعات دون نسخة احتياطية ناجحة نعدّ الدورة معطلة.", + "Only print the state, without a system notification.": + "طباعة الحالة فقط، دون إشعار من النظام.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "ملف تفضيلات Time Machine آخر - لاختبار المراقب على عيّنة معروفة.", + "Last successful backup: %@": + "آخر نسخة احتياطية ناجحة: %@", + "Last successful backup: NONE": + "آخر نسخة احتياطية ناجحة: لا توجد", + "Last attempt: %@": + "آخر محاولة: %@", + "WAITING (system startup): %@": + "قيد الانتظار (بدء تشغيل النظام): %@", + "Backup cycle: OK": + "دورة النسخ الاحتياطي: سليمة", + "FAILURE: %@": + "عطل: %@", + " %@": + " %@", + "Check the state: %@": + "فحص الحالة: %@", + "Preparing for restart": + "جارٍ التحضير لإعادة التشغيل", + "Prepare for restart": + "التحضير لإعادة التشغيل", + "Prepare": + "تحضير", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> تحذير: فشل git rev-list (%@) - سيُستخدم التاريخ رقمًا للبناء.", + "Agents: %@": + "الوكلاء: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "تعذّر البدء: %@ - افتح CloudMachine أو شغّل backup-health لإعادة تحميلها", + "Reloaded agents that could not start: %@": + "أُعيد تحميل الوكلاء الذين تعذّر بدؤهم: %@", + "Drive folder: %@": + "مجلد Drive: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "اسم مجلد هذا الـ Mac على Google Drive (الافتراضي: مشتق من اسم الكمبيوتر). يُضبط مرة واحدة ولا يمكن تغييره لاحقًا.", + "Backup watchdog: %@": + "مراقب النسخ الاحتياطي: %@", + "Prints the version, the build number and the commit this binary was built from.": + "يطبع الإصدار ورقم البناء والـ commit الذي بُني منه هذا الملف التنفيذي.", + "Only one line, without a description.": + "سطر واحد فقط، دون وصف.", + "Build from the working tree (outside a bundle) - no version data.": + "بناء من شجرة العمل (خارج حزمة) - لا توجد بيانات إصدار.", + "Version: %@": + "الإصدار: %@", + "Build: %@": + "البناء: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "تحذير: بُني من شجرة غير نظيفة - يحتوي الملف التنفيذي على شيفرة\n ليست في أي commit. رقم الـ commit لا يصف\n ما يعمل فعليًا.", + "Saving the space limit": + "حفظ حد المساحة", + "Measuring usage on Google Drive": + "قياس الاستخدام على Google Drive", + "Google Drive did not answer - try again later.": + "لم يستجب Google Drive - حاول مرة أخرى لاحقًا.", + "Measured.": + "تم القياس.", + "Space limit for this Mac": + "حد المساحة لهذا الـ Mac", + "Used on Google Drive": + "المستخدم على Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "قِيس في %@. يعيد المراقب القياس كل بضع ساعات.", + "Limit (GB)": + "الحد (GB)", + "Save": + "حفظ", + "Measure now": + "قِس الآن", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "حصة Time Machine: %@ GB (70%% من الحد - نسخة Drive أكبر بنحو الثلث من النسخة الاحتياطية بداخلها). يحذف Time Machine أقدم النسخ الاحتياطية لتبقى ضمنها.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "اضبط حصة Time Machine: شغّل هذا في الطرفية (يتطلب sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "اربط Google Drive: شغّل هذا في الطرفية ووافق في المتصفح", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "امنح CloudMachine الوصول الكامل إلى القرص ليعرف ما إذا اكتملت النسخ الاحتياطية", + "Folder on Google Drive": + "المجلد على Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "مجلد واحد لكل Mac. يُضبط مرة واحدة - لا يمكن تغييره بعد الاتصال.", + "Use lowercase letters, digits and dashes.": + "استخدم أحرفًا لاتينية صغيرة وأرقامًا وشرطات.", + "Install rclone": + "تثبيت rclone", + "Open System Settings": + "فتح إعدادات النظام", + "Install agents": + "تثبيت الوكلاء", + "not checked": + "لم يُفحص", + "none at all": + "لا شيء إطلاقًا", + "%@ ago": + "منذ %@", + "Missing: %@": + "مفقود: %@", + "Google Drive not connected": + "Google Drive غير متصل", + "Time Machine does not point to CloudMachine": + "Time Machine لا يشير إلى CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "غير معروف ما إذا كان Time Machine يشير إلى CloudMachine - لم يستجب tmutil", + "Backup in progress": + "النسخ الاحتياطي قيد التنفيذ", + "Unknown when the last backup was made": + "موعد آخر نسخة احتياطية غير معروف", + "There is no completed backup at all": + "لا توجد أي نسخة احتياطية مكتملة", + "No completed backup for %@": + "لا توجد نسخة احتياطية مكتملة منذ %@", + "Ready": + "جاهز", + "Not saved: %@": + "لم يُحفظ: %@", + "Installing rclone": + "تثبيت rclone", + "Installing launchd agents": + "تثبيت وكلاء launchd", + "Starting backup": + "بدء النسخ الاحتياطي", + "Backup started.": + "بدأ النسخ الاحتياطي.", + "Could not start the backup.": + "تعذّر بدء النسخ الاحتياطي.", + "Stopping backup": + "إيقاف النسخ الاحتياطي", + "Backup stopped.": + "توقف النسخ الاحتياطي.", + "Could not stop the backup.": + "تعذّر إيقاف النسخ الاحتياطي.", + "Could not prepare the AppleScript.": + "تعذّر تجهيز AppleScript.", + "Unknown authorization error.": + "خطأ تفويض غير معروف.", + "Waiting to upload": + "بانتظار الرفع", + "%@ files": + "الملفات: %@", + "nothing": + "لا شيء", + "Back up now": + "نسخ احتياطي الآن", + "Stop backup": + "إيقاف النسخ الاحتياطي", + "Open CloudMachine": + "فتح CloudMachine", + "Quit": + "إنهاء", + "Healthy": + "سليم", + "Attention": + "تنبيه", + "Refreshed %@": + "حُدّث %@", + "System Status": + "حالة النظام", + "Action needed": + "إجراء مطلوب", + "not measured": + "لم يُقَس", + "rclone did not answer": + "لم يستجب rclone", + "Backup in Progress": + "النسخ الاحتياطي قيد التنفيذ", + "Files processed": + "الملفات المعالَجة", + "Write speed": + "سرعة الكتابة", + "Operation phase": + "مرحلة العملية", + "Required Setup Steps": + "خطوات الإعداد المطلوبة", + "Copy": + "نسخ", + "Last completed backup": + "آخر نسخة احتياطية مكتملة", + "Last backup watchdog run": + "آخر تشغيل لمراقب النسخ الاحتياطي", + "not read": + "لم يُقرأ", + "Everything uploaded": + "تم رفع كل شيء", + "File upload errors": + "أخطاء رفع الملفات", + "Google Drive Credentials (OAuth 2.0)": + "بيانات اعتماد Google Drive (OAuth 2.0)", + "Keychain OK": + "سلسلة المفاتيح سليمة", + "No custom keys": + "لا مفاتيح مخصصة", + "Paste client_id...": + "الصق client_id...", + "Paste client_secret...": + "الصق client_secret...", + "Save securely in the Keychain": + "احفظ بأمان في سلسلة المفاتيح", + "Refresh": + "تحديث", + "Overview": + "نظرة عامة", + "Backups": + "النسخ الاحتياطية", + "Storage": + "التخزين", + "Settings": + "الإعدادات", + "Current status: %@": + "الحالة الحالية: %@", + "Does not point to CloudMachine": + "لا يشير إلى CloudMachine", + "tmutil did not answer": + "لم يستجب tmutil", + "Backing up: %@ of %@": + "جارٍ النسخ الاحتياطي: %@ من %@", + "%@ of %@": + "%@ من %@", + "Copied": + "تم النسخ", + "No backup is running": + "لا يوجد نسخ احتياطي قيد التنفيذ", + "Time Machine starts the next one on its own schedule.": + "يبدأ Time Machine النسخة التالية وفق جدوله.", + "Backup cycle": + "دورة النسخ الاحتياطي", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB في %@ أجزاء، يجري رفع %@", + "%@ bands": + "الأجزاء: %@", + "%@ fragments abandoned - only in the machine": + "%@ مقاطع متروكة - موجودة في الجهاز الافتراضي فقط", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "يستجيب 127.0.0.1:5572 على الـ Mac: تعيد Lima توجيه التحكم عن بُعد لـ rclone في الجهاز الافتراضي، وهو بلا كلمة مرور. يمكن لأي صفحة ويب مفتوحة في المتصفح إرسال أوامر إليه - بما فيها حذف النسخة الاحتياطية على Google Drive. أضف قاعدة portForwards من vm/cmsmb.yaml إلى الجهاز الافتراضي وأعد تشغيله (انظر vm/README.md).", + "A service in the CloudMachine machine is not running": + "خدمة في الجهاز الافتراضي لـ CloudMachine لا تعمل", + "Address": + "العنوان", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "تثبيت الوكلاء غير مكتمل - لم يُثبَّت %@ من %@:\n%@\n%@\nكل وكيل مفقود هو وظيفة توقفت بصمت (يراقب vm-guard المخزن المؤقت للجهاز الافتراضي، ويبلّغ backup-health عن الأعطال). عالج السبب وكرر التثبيت.", + "All running": + "الكل يعمل", + "Also install the launchd agents (same as install-launchd).": + "ثبّت أيضًا وكلاء launchd (مثل install-launchd).", + "At most this many minutes of waiting for the upload.": + "الحد الأقصى بالدقائق لانتظار الرفع.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "عند بلوغ الحد يفشل كل جزء جديد بالخطأ EMFILE ويتوقف النسخ الاحتياطي. تحقق: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "ذاكرة تخزين مؤقت على قرص الجهاز الافتراضي", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "تم الاتصال بـ Google Drive، لكن تعذّر إنشاء المجلد '%@' - ومن دونه لا يملك الجهاز الافتراضي مكانًا لحفظ النسخة الاحتياطية. تحقق من أذونات الحساب وحاول مرة أخرى.", + "Convert the image": + "تحويل صورة القرص", + "Converting the image to 32 MB bands": + "تحويل الصورة إلى أجزاء بحجم 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "تعذّر التحقق عبر الاتصال الحالي مما إذا كانت النسخة الاحتياطية على Google Drive (%@)، لذا لم يُستبدل الاتصال البعيد '%@': ومن دون هذا الجواب لا يمكن مطابقة تسجيل الدخول الجديد معها.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "ينزّل ملف rclone التنفيذي الرسمي إلى ~/.cloudmachine/bin (تسجيل الدخول إلى Google وملف rclone.conf الخاص بالجهاز الافتراضي).", + "Free in the machine": + "المتاح في الجهاز الافتراضي", + "Free in the machine: %@": + "المتاح في الجهاز الافتراضي: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "ينشئ وكلاء launchd ويثبّتهم (التطبيق، مراقب النسخ الاحتياطي، تشغيل الجهاز الافتراضي، حارس الجهاز الافتراضي).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "ثبّت Lima التي تشغّل الجهاز الافتراضي لـ CloudMachine: شغّل هذا في الطرفية", + "Install rclone (signs in to Google Drive for the machine)": + "ثبّت rclone (يسجّل الدخول إلى Google Drive للجهاز الافتراضي)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "ثبّت وكلاء الخلفية (تشغيل الجهاز الافتراضي، حارس المخزن المؤقت، مراقب النسخ الاحتياطي)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "يثبّت rclone عبر Homebrew - يستخدم CloudMachine نفسه النسخة من install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "توجد Info.plist والرمز وmapped/ الخاصة بصورة النسخ الاحتياطي على قرص الجهاز الافتراضي فقط؛ ومن دونها لا يمكن استعادة الأجزاء في %@. تذهب النسخة (tm-meta-sync، كل 15 دقيقة) إلى %@. تحقق: cloudmachine-agent vm-status، ثم في الجهاز الافتراضي: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "تقول Lima إن الجهاز الافتراضي يعمل، لكن أمرًا فيه لم يعد. ومن دونه لا يُعرف شيء عن Samba أو rclone أو الرفع. تحقق: cloudmachine-agent vm-status", + "Machine": + "الجهاز الافتراضي", + "Machine %@": + "الجهاز الافتراضي %@", + "Machine & Upload Status": + "حالة الجهاز الافتراضي والرفع", + "Machine buffer": + "المخزن المؤقت للجهاز الافتراضي", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "لا توجد وجهة Time Machine هي مشاركة الجهاز الافتراضي (smb://tm@
/CloudMachine) - لا تُجرى نسخ احتياطية هناك. يُطبع الأمر بواسطة: cloudmachine-agent vm-setup", + "Not running: %@": + "لا يعمل: %@", + "Not set up": + "غير مُعدّ", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "عند نفاده يتوقف rclone عن الرفع، ويمتلئ المخزن المؤقت للجهاز الافتراضي، وتتوقف النسخ الاحتياطية. وبمعدل نمو نحو 600 MB لكل دورة ساعية يعني ذلك نحو %@ أيام.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "أو أن rclone.conf مفقود: سبق أن أعدّ هذا الـ Mac الجهاز الافتراضي لـ CloudMachine، لذا لا يُوصَل من جديد دون تحقق. استعد الملف من نسخة احتياطية (يحتفظ الجهاز الافتراضي بنسخته الخاصة في %@). للاتصال رغم ذلك، أنشئ ملفًا فارغًا في المسار الذي يطبعه `%@ config file` وشغّل الأمر مجددًا - يبقى المجلد الحالي.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "وجّه Time Machine إلى الجهاز الافتراضي: شغّل هذا في الطرفية (يتطلب sudo؛ نسخ يتضمن كلمة المرور)", + "Points to the machine": + "يشير إلى الجهاز الافتراضي", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "يتحضر لإعادة التشغيل: يوقف النسخ الاحتياطي، وينتظر قليلًا اكتمال الرفع، ثم يوقف الجهاز الافتراضي بشكل سليم.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "لم تعد قراءة وجهة Time Machine خلال %@ s. هذا سلوك tmutil حين تتعلق وجهته.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "لم يُستبدل الاتصال البعيد '%@'. يحصل تسجيل الدخول الجديد على النطاق 'drive.file' الذي لا يرى إلا الملفات المنشأة تحت client_id الخاص به. على الأرجح أُنشئت النسخة الاحتياطية الحالية بالاتصال الحالي وستصبح غير مرئية له. قبل كتابة أي شيء، يُفحص الرمز الجديد مقابل النسخة الاحتياطية الحالية، ويُلغى الاستبدال إن لم يستطع رؤيتها. يحتفظ الجهاز الافتراضي بنسخته الخاصة من الإعدادات حتى vm-setup --replace-rclone-config. للمتابعة، شغّل الأمر مجددًا مع --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "التحكم عن بُعد: مفتوح على الـ Mac عند 127.0.0.1:5572 - يمكن لأي صفحة ويب إرسال أوامر rclone؛ انظر vm/README.md (portForwards)", + "Running": + "يعمل", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba أو rclone أو punchfs في الجهاز الافتراضي غير نشطة، فلا يجد Time Machine مكانًا للكتابة أو لا تصل الأجزاء إلى Google Drive. تحقق: cloudmachine-agent vm-status", + "Service %@": + "الخدمة %@", + "Services": + "الخدمات", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "أعدّ الجهاز الافتراضي لـ CloudMachine (ينزّل Ubuntu في المرة الأولى - عدة دقائق)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "أعد إعداد الجهاز الافتراضي لـ CloudMachine ليطبع أمر Time Machine", + "Set up the machine": + "إعداد الجهاز الافتراضي", + "Setting up the CloudMachine machine": + "جارٍ إعداد الجهاز الافتراضي لـ CloudMachine", + "Start the CloudMachine machine": + "شغّل الجهاز الافتراضي لـ CloudMachine", + "Start the machine": + "تشغيل الجهاز الافتراضي", + "Starting the CloudMachine machine": + "جارٍ تشغيل الجهاز الافتراضي لـ CloudMachine", + "Still to upload: %@ GiB": + "المتبقي للرفع: %@ GiB", + "Stopping the Time Machine backup...": + "جارٍ إيقاف النسخ الاحتياطي لـ Time Machine...", + "Stopping the machine %@...": + "جارٍ إيقاف الجهاز الافتراضي %@...", + "The CloudMachine machine does not answer": + "الجهاز الافتراضي لـ CloudMachine لا يستجيب", + "The CloudMachine machine is not running": + "الجهاز الافتراضي لـ CloudMachine لا يعمل", + "The CloudMachine machine is not set up yet": + "الجهاز الافتراضي لـ CloudMachine لم يُعدّ بعد", + "The CloudMachine machine is stopped": + "الجهاز الافتراضي لـ CloudMachine متوقف", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "توقف النسخ الاحتياطي، وتُمنح عملية الرفع حتى 30 دقيقة، ثم يُغلق الجهاز الافتراضي بشكل سليم. يبدأ من جديد عند تسجيل الدخول التالي.", + "The machine %@ is not running - nothing to prepare.": + "الجهاز الافتراضي %@ لا يعمل - لا شيء للتحضير.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "الجهاز الافتراضي متوقف ووصل كل شيء إلى Google Drive. يمكن إعادة تشغيل الـ Mac؛ يبدأ الجهاز الافتراضي من جديد عند تسجيل الدخول.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "الجهاز الافتراضي متوقف. لم يصل %@ GiB إلى Google Drive بعد - محفوظة في المخزن المؤقت للجهاز الافتراضي وستُرفع بعد التشغيل التالي. يمكن إعادة تشغيل الـ Mac.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "الجهاز الافتراضي متوقف. لم يذكر rclone مقدار ما بقي للرفع؛ ما لم يُرفع محفوظ في المخزن المؤقت للجهاز الافتراضي وسيُرفع بعد التشغيل التالي. يمكن إعادة تشغيل الـ Mac.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "قرص الجهاز الافتراضي ملف على هذا القرص ويكبر مع امتلاء المخزن المؤقت للرفع. وعند نفاد المساحة لا يستطيع الجهاز الافتراضي كتابة المخزن المؤقت، ولا تجد اللقطات المحلية لـ Time Machine مكانًا تذهب إليه.", + "The image's metadata has never been copied to Drive": + "لم تُنسخ بيانات تعريف الصورة إلى Drive قط", + "The image's metadata was last copied to Drive %@ ago": + "نُسخت بيانات تعريف الصورة إلى Drive آخر مرة منذ %@", + "The machine's disk is running out of space (%@ GB)": + "مساحة قرص الجهاز الافتراضي توشك على النفاد (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "لا يرى تسجيل الدخول الجديد النسخة الاحتياطية الحالية (%@)، لذا لم يُستبدل الاتصال البعيد '%@' ولم يتغير rclone.conf. أبقِ الاتصال الحالي، أو سجّل الدخول ببيانات الاعتماد (client_id) التي أنشأت النسخة الاحتياطية.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "يوجد المخزن المؤقت للرفع على هذا القرص. يوقف الحارس Time Machine مؤقتًا قبل أن يمتلئ؛ وإن لم يلحق الرفع، تبقى النسخ الاحتياطية متوقفة.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "هذه الأجزاء موجودة في المخزن المؤقت للجهاز الافتراضي فقط. النسخة الاحتياطية على Google Drive غير مكتملة وقد لا تُفتح.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "يجري Time Machine النسخ الاحتياطي إلى الجهاز الافتراضي، ومن دونه لا تُجرى أي نسخة احتياطية. شغّله: limactl start %@ (أو زر \"تشغيل الجهاز الافتراضي\" في التطبيق).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "لم يوقف Time Machine نسخه الاحتياطي خلال دقيقتين (أو لم يستجب tmutil) - لم يُوقف الجهاز الافتراضي. حاول مرة أخرى بعد قليل.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "أنشأ Time Machine صورته: أوقف النسخ الاحتياطي، ثم حوّل الصورة إلى أجزاء بحجم 32 MB", + "To upload": + "للرفع", + "Unknown whether the CloudMachine machine is running": + "غير معروف ما إذا كان الجهاز الافتراضي لـ CloudMachine يعمل", + "Waiting for the upload to Google Drive (at most %@ min)...": + "بانتظار الرفع إلى Google Drive (%@ دقيقة كحد أقصى)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "مع --replace-existing: يؤكد أن تسجيل الدخول الجديد (النطاق 'drive.file') قد لا يرى النسخة الاحتياطية الحالية. يُفحص الرمز الجديد مقابل النسخة الاحتياطية أولًا في كل الأحوال.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "من دونه لا توجد طريقة للتحقق مما إذا كان أي شيء قد وصل إلى Drive - حارس الجهاز الافتراضي أعمى حينها.", + "limactl did not answer": + "لم يستجب limactl", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "لم يستجب limactl (أو غير مثبّت). هذا لا يعني أن الجهاز الافتراضي متوقف - بل يعني أن أحدًا لم يتحقق.", + "limactl start failed: %@": + "فشل limactl start: %@", + "limactl stop failed: %@": + "فشل limactl stop: %@", + "punchfs is close to its open-file limit": + "punchfs يقترب من حد الملفات المفتوحة", + "punchfs open files": + "ملفات punchfs المفتوحة", + "rclone's remote control is open on this Mac": + "التحكم عن بُعد في rclone مفتوح على هذا الـ Mac", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "أعاد statfs('/System/Volumes/Data') خطأً، لذا لا يعرف أحد ما إذا كان قرص الجهاز الافتراضي يستطيع النمو أكثر على هذا الـ Mac.", + "Google Drive's daily upload limit stops the upload": + "حد الرفع اليومي في Google Drive يوقف الرفع", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "رفضت Google رفعًا آخر مرة منذ %@ (750 GB في اليوم). النسخ الاحتياطية منذ ذلك الحين موجودة في المخزن المؤقت للجهاز الافتراضي على هذا الـ Mac فقط. يعيد rclone المحاولة كل 5 دقائق ويستأنف تلقائيًا عند زوال الحد؛ ويوقف الحارس Time Machine مؤقتًا إذا انتظر أكثر من %@ GiB.", + "Usage on Google Drive is not being measured": + "استخدام Google Drive غير مقيس", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "آخر قياس (%@ GB) كان في %@، منذ %@ - ولم يستجب rclone size منذ ذلك الحين. وإلى أن يستجيب، لا شيء يراقب الحد %@ GB: تبقى تنبيهات 90%% و100%% صامتة. تحقق من vm-status، أو اضغط قِس الآن في النافذة.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "لم يستجب rclone size ولو مرة واحدة. وإلى أن يستجيب، لا شيء يراقب الحد %@ GB: تبقى تنبيهات 90%% و100%% صامتة. تحقق من vm-status، أو اضغط قِس الآن في النافذة.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "حُفظ في سلسلة المفاتيح. سيستخدمها اتصال Google Drive (configure-remote).", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "حُفظ في سلسلة المفاتيح. يحتفظ اتصال Google Drive الحالي بـ client_id القديم، وعلى هذا الـ Mac ينبغي أن يبقى كذلك: الاتصال المنشأ بالمفاتيح الجديدة (النطاق 'drive.file') لا يرى النسخة الاحتياطية التي أنشأها الاتصال القديم. لا تستبدل الاتصال هنا؛ المفاتيح الجديدة لـ Mac غير متصل بعد.", + "it is not there for the new token": + "غير موجود للرمز الجديد", + "Cancel": + "إلغاء", + "ACTION NEEDED": + "إجراء مطلوب", + "WILL PASS BY ITSELF — DO NOTHING": + "سيزول من تلقاء نفسه - لا تفعل شيئًا", + "UNKNOWN — CHECK AGAIN SHORTLY": + "غير معروف - تحقق مجددًا بعد قليل", + "ALL GOOD": + "كل شيء على ما يرام", + "Upload is not working": + "الرفع لا يعمل", + "Upload stopped — no space left on Google Drive": + "توقف الرفع - لا توجد مساحة على Google Drive", + "%@ backup fragments not uploaded": + "%@ مقاطع من النسخة الاحتياطية لم تُرفع", + "Upload cannot keep up with writes": + "الرفع لا يواكب الكتابة", + "Upload paused — Google daily limit": + "الرفع متوقف مؤقتًا - الحد اليومي لـ Google", + "Uploading to Google Drive — %@ queued": + "الرفع إلى Google Drive جارٍ - %@ في الانتظار", + "Everything uploaded to Google Drive": + "تم رفع كل شيء إلى Google Drive", + "Unknown what is waiting in the queue": + "غير معروف ما ينتظر في الطابور", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "لا يوجد اتصال بـ Google Drive، لذا تُجرى النسخ الاحتياطية على هذا الـ Mac فقط. إن لم تزل المشكلة من تلقاء نفسها خلال بضع دقائق، فتحقق من الشبكة ومن الاتصال بـ Drive.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "لا توجد مساحة على Google Drive. لن تزول المشكلة من تلقاء نفسها - عليك تحرير مساحة على Drive. وحتى ذلك الحين يبقى Time Machine متوقفًا مؤقتًا لكي لا يملأ قرص هذا الـ Mac.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "تعذّر رفع %@ مقاطع من النسخة الاحتياطية وتوقف rclone عن المحاولة. هذه المقاطع موجودة على هذا الـ Mac فقط، لذا النسخة الاحتياطية على Drive غير مكتملة. يلزم الفحص.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "يكتب Time Machine أسرع من الرفع، وقد امتلأ المخزن المؤقت. ستتوقف النسخة الاحتياطية مؤقتًا إلى أن يلحق الرفع - هذا إجراء وقائي لمنع امتلاء القرص وليس عطلًا.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "تقبل Google 750 GB في اليوم وقد استُنفد هذا الحد. لا شيء يلزم فعله: يتجدد الحد تلقائيًا، عادةً خلال ساعات قليلة. وفي هذه الأثناء تُجرى نسخ Time Machine الاحتياطية بشكل طبيعي وتنتظر في المخزن المؤقت - وسترفع فور أن تعود Google إلى القبول.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ مقاطع من النسخة الاحتياطية في الطابور وفي طريقها إلى Drive.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "لا شيء ينتظر في الطابور - النسخة الاحتياطية على Google Drive مكتملة.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "لم يجب rclone عن سؤال الطابور، لذا لا يُعرف كم نسخة احتياطية لا تزال تنتظر الرفع. لا يعني هذا أن شيئًا تعطل - تحت الحمل قد يتأخر الجواب. يعني فقط أن أحدًا لا يعرف الآن. إن استمر الأمر، فسيبلّغ فحص دورة النسخ الاحتياطي عنه.", + "unknown error": + "خطأ غير معروف", + "rclone lsf ended with an error": + "انتهى rclone lsf بخطأ", + "This Mac is close to its space limit on Google Drive": + "هذا الـ Mac قريب من حد مساحته على Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "المستخدم %@ GB من %@ GB. يحذف Time Machine أقدم النسخ الاحتياطية ليبقى ضمن حصته؛ تحقق من ضبط الحصة (vm-status).", + "This Mac is over its space limit on Google Drive": + "هذا الـ Mac تجاوز حد مساحته على Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "المستخدم %@ GB من %@ GB. اضبط حصة Time Machine (الأمر في نافذة التطبيق أو vm-status)، أو ارفع الحد.", + "not set": + "غير مضبوط", + "%@ GB - usage not measured yet": + "%@ GB - الاستخدام لم يُقَس بعد", + "%@ of %@ GB used (%@%%)": + "المستخدم %@ من %@ GB (%@%%)", + "The limit must be a whole number of GB above zero.": + "يجب أن يكون الحد عددًا صحيحًا من GB أكبر من الصفر.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "تعذّرت قراءة machines.json، لذا لم يُكتب فوقه. أصلحه أو أزله أولًا.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' ليس اسم مجلد صالحًا: استخدم أحرفًا لاتينية صغيرة وأرقامًا وشرطات.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "هذا الـ Mac ينسخ احتياطيًا بالفعل إلى المجلد '%@'. التحول إلى '%@' سيبدأ نسخة احتياطية جديدة فارغة ويترك الحالية يتيمة، لذا لم يتغير شيء.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "لدى هذا الـ Mac تثبيت CloudMachine بالفعل، ونسخته الاحتياطية في المجلد '%@'. التحول إلى '%@' سيتركها يتيمة، لذا لم يتغير شيء.", + "Could not save the folder name to %@: %@": + "تعذّر حفظ اسم المجلد في %@: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew غير مثبّت. ثبّته يدويًا: https://brew.sh", + "Installing rclone failed: %@": + "فشل تثبيت rclone: %@", + "Installed rclone.": + "تم تثبيت rclone.", + "Own Google credentials: set.": + "بيانات اعتماد Google الخاصة: مضبوطة.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "غير مكتمل: %@ مفقود - سيستخدم rclone الـ client_id المشترك الخاص به على أي حال.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "لا توجد بيانات اعتماد خاصة - يستخدم rclone الـ client_id المشترك، وهو محدود المعدل بالاشتراك وسيُسحب في 2026.", + "Empty value - not saving.": + "قيمة فارغة - لن تُحفظ.", + "Keychain refused: %@": + "رفضت سلسلة المفاتيح: %@", + "DIRTY-TREE": + "DIRTY-TREE", + "Cannot create the working directory: %@": + "تعذّر إنشاء مجلد العمل: %@", + "Could not read the rclone version number.": + "تعذّرت قراءة رقم إصدار rclone.", + "Could not download %@.": + "تعذّر تنزيل %@.", + "No entry for %@ in SHA256SUMS.": + "لا يوجد إدخال لـ %@ في SHA256SUMS.", + "Could not compute the checksum.": + "تعذّر حساب المجموع الاختباري.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "المجموع الاختباري SHA256 لا يطابق - لن يُثبَّت.\n المتوقع: %@\n المحسوب: %@", + "Could not unpack the archive.": + "تعذّر فك ضغط الأرشيف.", + "Could not install the binary: %@": + "تعذّر تثبيت الملف التنفيذي: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "تم تثبيت rclone %@ في %@ (المجموع الاختباري SHA256 مطابق).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "لم يستجب %@ خلال المهلة المحددة (تُركت العملية يتيمة في الخلفية).", + "Cannot launch %@: %@": + "تعذّر تشغيل %@: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "الاتصال البعيد '%@' موجود بالفعل ولم يُمسّ.\nيؤدي استبداله إلى استبدال الرمز ونطاق الأذونات؛ وبيانات الاعتماد ذات النطاق 'drive.file' لا ترى الملفات التي أنشأتها السابقة، فتصبح النسخة الاحتياطية الحالية بعيدة المنال.\nإن أردت الاستبدال فعلًا، فانسخ احتياطيًا ~/.config/rclone/rclone.conf أولًا وشغّل الأمر مجددًا مع --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "تعذّر التحقق مما إذا كان الاتصال البعيد '%@' موجودًا (لم يستجب rclone listremotes أو فشل)، لذا لم يتغير شيء. شغّل `%@ listremotes` لرؤية الخطأ، ثم حاول مرة أخرى.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "تعذّر التحقق مما إذا كان لدى هذا الـ Mac تثبيت CloudMachine (لم يستجب rclone)، لذا لم يُختر مجلد. حاول مرة أخرى بعد قليل.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "فشل rclone authorize (%@). إن كان ذلك الملف التنفيذي مفقودًا، فابدأ بـ: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "تعذّرت قراءة الرمز من مخرجات rclone authorize.", + "rclone config create failed.": + "فشل rclone config create.", + "Connected to Google Drive as remote '%@', folder %@.": + "تم الاتصال بـ Google Drive باسم الاتصال البعيد '%@'، المجلد %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil لا يستجيب - مكان حفظ النسخة الاحتياطية غير معروف", + "No successful backup for %@": + "لا توجد نسخة احتياطية ناجحة منذ %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "آخر نسخة احتياطية مكتملة: %@. الدورة كل ساعة، أي ما يعادل %@ عمليات فائتة.", + "There is NOT A SINGLE successful backup": + "لا توجد ولا نسخة احتياطية ناجحة واحدة", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "لا تحتوي تفضيلات Time Machine على تاريخ نسخة احتياطية مكتملة لهذه الوجهة.", + "The last backup attempt did not end in a backup": + "لم تنتهِ آخر محاولة نسخ احتياطي بنسخة احتياطية", + "The attempt at %@ is newer than the last successful backup at %@.": + "المحاولة في %@ أحدث من آخر نسخة احتياطية ناجحة في %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "أبلغ Time Machine عن خطأ في آخر تشغيل (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "قيمة RESULT غير الصفرية في تفضيلات Time Machine تعني أن التشغيل لم ينجح.", + "rclone failed to upload %@ files": + "فشل rclone في رفع %@ ملفًا", + "Buffer full of nothing but unsent data": + "المخزن المؤقت ممتلئ ببيانات غير مرسلة فقط", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "لم يعد لدى rclone ما يُخليه من المخزن المؤقت - الرفع لا يواكب أو توقف.", + "The rclone control interface is not responding": + "واجهة تحكم rclone لا تستجيب", + "Google Drive is running out of space (%@ GB)": + "مساحة Google Drive توشك على النفاد (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "مساحة قرص الـ Mac توشك على النفاد (%@ GB)", + "Cannot read the Time Machine preferences": + "تعذّرت قراءة تفضيلات Time Machine", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ غير قابل للقراءة - غالبًا بسبب غياب الوصول الكامل إلى القرص. ومن دون هذا الملف لا يُعرف متى أُجريت آخر نسخة احتياطية، لذا نعدّه عطلًا لا غياب مشكلة.", + "Cannot measure free space on the Mac's disk": + "تعذّر قياس المساحة الحرة على قرص الـ Mac", + "%@ days": + "%@ أيام", + "CloudMachine: backup is not working": + "CloudMachine: النسخ الاحتياطي لا يعمل", + "unknown reason": + "سبب غير معروف", + "osascript did not show the notification (permissions or no graphical session)": + "لم يعرض osascript الإشعار (الأذونات أو لا توجد جلسة رسومية)", + "UNDELIVERED ALARM: %@": + "تنبيه لم يُسلَّم: %@", + "from %@, reason: %@": + "من %@، السبب: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "لم يُسلَّم إشعار النظام - سترى هذا التنبيه هنا فقط.", + "%@ (%@ ago)": + "%@ (منذ %@)", + "%@ - marker from the FUTURE": + "%@ - علامة من المستقبل", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (منذ %@) - قد لا يكون المراقب يعمل", + "NEVER - the watchdog has not recorded a single run": + "أبدًا - لم يسجّل المراقب أي تشغيل", + "Could not find the launchd/ directory with templates.": + "تعذّر العثور على مجلد launchd/ الذي يحوي القوالب.", + "Could not find the compiled cloudmachine-agent binary.": + "تعذّر العثور على الملف التنفيذي المترجم cloudmachine-agent.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "أُلغي: تعذّر وضع cloudmachine-agent في موقع ثابت\n(%@) - غالبًا بسبب نقص المساحة أو الأذونات.\nلن يُثبَّت الوكلاء الذين يشيرون إلى %@: هذا المسار\nيختفي عند `swift build` أو `git clean` التاليين، وتتوقف النسخ الاحتياطية\nدون أي إشارة ظاهرة.", + "ABORTED: %@": + "أُلغي: %@", + "Could not list the templates in %@.": + "تعذّر سرد القوالب في %@.", + "could not read the template %@": + "تعذّرت قراءة القالب %@", + "could not write %@ (lack of space or permissions)": + "تعذّرت كتابة %@ (نقص مساحة أو أذونات)", + "launchctl load refused to load %@": + "رفض launchctl load تحميل %@", + "NOT A SINGLE agent was loaded.": + "لم يُحمَّل ولا وكيل واحد.", + "Only these went in: %@.": + "لم يُثبَّت سوى هؤلاء: %@.", + "Could not load any launchd agent.": + "تعذّر تحميل أي وكيل launchd.", + "Installed agents: %@": + "الوكلاء المثبّتون: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " تحذير: قريب من الحد - ستفشل الأجزاء الجديدة بالخطأ EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands على Google Drive غير فارغ - قد يحوي نسخة احتياطية أخرى. لن يُكتب فوقه؛ افحصه يدويًا.", + "Address: %@": + "العنوان: %@", + "Already prepared (%@ exists) - nothing to do.": + "مُحضَّر بالفعل (%@ موجود) - لا حاجة لأي إجراء.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "يحوّل صورة Time Machine الجديدة الفارغة في الجهاز الافتراضي إلى أجزاء بحجم 32 MB وينقل الأجزاء إلى Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "انسخ rclone.conf إلى الجهاز الافتراضي حتى لو كان فيه واحد بالفعل.", + "Copying the converted image into the machine failed: %@": + "فشل نسخ الصورة المحوَّلة إلى الجهاز الافتراضي: %@", + "Copying the image to the Mac failed: %@": + "فشل نسخ الصورة إلى الـ Mac: %@", + "Could not ask Lima about the machine: %@": + "تعذّر سؤال Lima عن الجهاز الافتراضي: %@", + "Could not carry the Time Machine files over: %@": + "تعذّر نقل ملفات Time Machine: %@", + "Could not check the image in the machine.": + "تعذّر فحص الصورة في الجهاز الافتراضي.", + "Could not copy the rclone configuration into the machine.": + "تعذّر نسخ إعدادات rclone إلى الجهاز الافتراضي.", + "Could not create %@ on Google Drive: %@": + "تعذّر إنشاء %@ على Google Drive: %@", + "Could not create %@: %@": + "تعذّر إنشاء %@: %@", + "Could not find the vm/ directory with the machine template.": + "تعذّر العثور على مجلد vm/ الذي يحوي قالب الجهاز الافتراضي.", + "Could not read the image size.": + "تعذّرت قراءة حجم الصورة.", + "Could not set the SMB password of user %@ in the machine.": + "تعذّر ضبط كلمة مرور SMB للمستخدم %@ في الجهاز الافتراضي.", + "Could not stop smbd in the machine.": + "تعذّر إيقاف smbd في الجهاز الافتراضي.", + "Could not write %@ in the machine.": + "تعذّرت كتابة %@ في الجهاز الافتراضي.", + "Could not write the password file %@.": + "تعذّرت كتابة ملف كلمة المرور %@.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "ينشئ الجهاز الافتراضي لـ CloudMachine (Lima) أو يشغّله، ويمنحه إعدادات rclone وكلمة مرور SMB، ويطبع أمر Time Machine.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "إنشاء الجهاز الافتراضي %@ (يُنزَّل Ubuntu وتُثبَّت الحزم عند أول تشغيل - عدة دقائق)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "تم: لدى %@ أجزاء بحجم %@ MB على Google Drive؛ والأصل محفوظ في %@ في الجهاز الافتراضي. ابدأ النسخ الاحتياطي: tmutil startbackup", + "exit code %@, no message": + "رمز الخروج %@، بلا رسالة", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "بيانات تعريف الصورة: لم تُنسخ أبدًا إلى %@ - افحص tm-meta-sync في الجهاز الافتراضي", + "Image metadata: copied %@ ago to %@": + "بيانات تعريف الصورة: نُسخت منذ %@ إلى %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "بيانات تعريف الصورة: آخر نسخ منذ %@ - متأخر (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "بيانات تعريف الصورة: لم تُنسخ بعد - بانتظار vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "النسخ الاحتياطي %@، أوقفه الحارس مؤقتًا %@: %@", + "Free in machine: %@ GiB": + "المتاح في الجهاز: %@ GiB", + "fsck_apfs -n found problems: %@": + "وجد fsck_apfs -n مشكلات: %@", + "Google Drive folder: %@": + "مجلد Google Drive: %@", + "hdiutil attach of the converted image failed: %@": + "فشل hdiutil attach للصورة المحوَّلة: %@", + "hdiutil convert failed: %@": + "فشل hdiutil convert: %@", + "Image name in the machine (default: from the computer name).": + "اسم الصورة في الجهاز الافتراضي (الافتراضي: من اسم الكمبيوتر).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "فشل تثبيت الصورة المحوَّلة: %@\nتُرك smbd متوقفًا لكي لا يفتح Time Machine صورة مثبّتة جزئيًا. الأصل في %@ في الجهاز الافتراضي.", + "limactl create failed: %@": + "فشل limactl create: %@", + "limactl list failed: %@": + "فشل limactl list: %@", + "limactl not found - install Lima: brew install lima": + "لم يُعثر على limactl - ثبّت Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "فشل limactl start: %@\nسجل الجهاز الافتراضي نفسه: %@", + "Machine %@ is running.": + "الجهاز الافتراضي %@ يعمل.", + "Machine %@ was already running.": + "الجهاز الافتراضي %@ كان يعمل بالفعل.", + "Machine: %@ (%@)": + "الجهاز الافتراضي: %@ (%@)", + "Machine: %@": + "الجهاز الافتراضي: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "الجهاز الافتراضي: لم يُنشأ - شغّل: cloudmachine-agent vm-setup", + "no answer within the time limit": + "لا جواب خلال المهلة", + "No image %@ in the machine.": + "لا توجد صورة %@ في الجهاز الافتراضي.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "لا توجد صورة في الجهاز الافتراضي بعد - وجّه Time Machine إلى المشاركة ودعه ينشئ واحدة أولًا.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "لا توجد إعدادات rclone في %@ - اربط Google Drive أولًا (configure-remote).", + "no SMB destination": + "لا توجد وجهة SMB", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "فحص واحد للمخزن المؤقت للرفع في الجهاز الافتراضي: يوقف Time Machine مؤقتًا حين يمتلئ، ويستأنف ما أوقفه.", + "Packing the converted image failed: %@": + "فشلت تعبئة الصورة المحوَّلة: %@", + "Packing the image failed: %@": + "فشلت تعبئة الصورة: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "لا جواب من الجهاز الافتراضي (rclone rc) - لن يفعل الحارس شيئًا.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "طباعة ما كان الحارس سيقرره فقط - لتجربة العتبات على جهاز افتراضي مؤقت.", + "Pause above this many GiB in the buffer.": + "إيقاف مؤقت عند تجاوز هذا العدد من GiB في المخزن المؤقت.", + "Pause when the machine has less free than this, in GiB.": + "إيقاف مؤقت حين يقل المتاح في الجهاز الافتراضي عن هذا، بالـ GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "وجّه Time Machine إلى الجهاز الافتراضي (مرة واحدة، يتطلب كلمة مرور المسؤول):", + "punchfs files: %@ open, limit %@": + "ملفات punchfs: %@ مفتوح، الحد %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "إعدادات rclone موجودة بالفعل في الجهاز الافتراضي - أُبقيت (--replace-rclone-config يستبدلها).", + "rclone configuration copied into the machine.": + "نُسخت إعدادات rclone إلى الجهاز الافتراضي.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm أو punchfs لا يعمل في الجهاز الافتراضي - انظر cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "استئناف عند الانخفاض عن هذا العدد من GiB (فقط لنسخة أوقفها الحارس مؤقتًا).", + "Service %@: %@": + "الخدمة %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "عدة صور في الجهاز الافتراضي (%@) - اختر واحدة بـ --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "يعرض الجهاز الافتراضي: العنوان والخدمات والمخزن المؤقت للرفع والمساحة الحرة ووجهة Time Machine.", + "SMB password stored in %@ (mode 600).": + "خُزّنت كلمة مرور SMB في %@ (الوضع 600).", + "The converted image does not have %@-byte bands.": + "الصورة المحوَّلة ليست بأجزاء حجمها %@ بايت.", + "The converted image has no APFS partition.": + "الصورة المحوَّلة لا تحتوي على قسم APFS.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "تشغل الصورة بالفعل %@ MB - هذا الأمر يحوّل صورة جديدة فارغة فقط (أقل من %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "الصورة مشفّرة - تحويل الصور المشفّرة غير مدعوم.", + "The image was not changed; smbd started again.": + "لم تتغير الصورة؛ بدأ smbd من جديد.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "الجهاز الافتراضي لا يستجيب - هل يعمل؟ cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "ليس للجهاز الافتراضي عنوان على شبكة vzNAT.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "لم تبدأ الخدمات في الجهاز الافتراضي - تحقق: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine يجري نسخًا احتياطيًا - أوقفه أولًا: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: لا يشير إلى الجهاز الافتراضي (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: لم يستجب tmutil", + "tmutil did not answer - not touching the image while its state is unknown.": + "لم يستجب tmutil - لن تُمسّ الصورة ما دامت حالتها غير معروفة.", + "unknown": + "غير معروف", + "Unpacking the image failed: %@": + "فشل فك تعبئة الصورة: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "المتبقي للرفع: %@ GiB في %@ أجزاء، يجري رفع %@ (ذاكرة مؤقتة على القرص %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "استُبعد %@ (الجهاز الافتراضي والمخزن المؤقت للرفع) من Time Machine.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "تحذير: تعذّر استبعاد %@ من Time Machine - شغّل: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "المخزن المؤقت للرفع: لا جواب من rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "حين ينشئ Time Machine صورته الفارغة، أوقف النسخ الاحتياطي (tmutil stopbackup) وشغّل: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "غير مرسل %@ GiB، المتاح %@ GiB (إيقاف مؤقت فوق %@ GiB غير مرسلة أو دون %@ GiB متاحة، استئناف دون %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "الرفع: رفض حد Google اليومي رفعًا منذ %@ - يعيد rclone المحاولة كل 5 دقائق ويستأنف تلقائيًا", + "no": + "لا", + "running": + "يعمل", + "stopped": + "متوقف", + "yes": + "نعم", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nالقالب السابق في %@ - انسخه فوق lima.yaml وشغّل limactl start %@.", + "Could not read this app's machine template (limactl template copy).": + "تعذّرت قراءة قالب الجهاز الافتراضي لهذا التطبيق (limactl template copy).", + "Could not replace %@: %@": + "تعذّر استبدال %@: %@", + "Machine %@ already runs this app's template.": + "الجهاز الافتراضي %@ يعمل بالفعل بقالب هذا التطبيق.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "الجهاز الافتراضي %@ يعمل الآن بقالب هذا التطبيق؛ والقالب السابق في %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "ينقل الجهاز الافتراضي إلى قالب هذا التطبيق (إعادتا تشغيل، وليس أثناء نسخ احتياطي).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "لا يوجد جهاز افتراضي %@ - أنشئه بـ: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "القالب: أقدم من قالب هذا التطبيق - شغّل: cloudmachine-agent vm-update", + "Template: not compared": + "القالب: لم يُقارَن", + "Template: this app's": + "القالب: قالب هذا التطبيق", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "ليس في الجهاز الافتراضي %@ - شغّل cloudmachine-agent vm-setup أولًا.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "أُعيد تشغيل الجهاز الافتراضي، لكن لا تعمل كل الخدمات - تحقق: cloudmachine-agent vm-status. القالب السابق في %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "يغيّر القالب الجهاز الافتراضي نفسه (%@) - وهذا يتطلب جهازًا افتراضيًا جديدًا لا تحديثًا.", + "The upload to Google Drive hangs": + "الرفع إلى Google Drive متعلّق", + "Time Machine is backing up - try again when it has finished.": + "Time Machine يجري نسخًا احتياطيًا - حاول مجددًا بعد انتهائه.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "الرفع: متعلّق - أجزاء قيد التنفيذ ولم يُرفع أي منها منذ %@ (الشبكة؟)؛ انظر /var/log/rclone-tm.log في الجهاز الافتراضي", + "limactl stop failed - nothing was changed.": + "فشل limactl stop - لم يتغير شيء.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "لدى rclone أجزاء قيد التنفيذ، لكن لم يُرفع أي منها منذ %@ - عادةً بسبب انقطاع اتصال الشبكة، ولا يبلّغ rclone عنه كخطأ. النسخ الاحتياطية منذ ذلك الحين موجودة في المخزن المؤقت للجهاز الافتراضي فقط. حين تعود الشبكة يستأنف الرفع تلقائيًا (في 28.10.2026 خلال 80 s)؛ وإن لم يحدث، فإعادة تشغيل الجهاز الافتراضي (prepare-shutdown ثم limactl start) تُسقط الاتصالات الميتة.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "لم يستجب tmutil - لن يُعاد تشغيل الجهاز الافتراضي ما دامت حالته غير معروفة.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+da.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+da.swift new file mode 100644 index 0000000..67db8d2 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+da.swift @@ -0,0 +1,951 @@ +// Danish translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let da: [String: String] = [ + "Space limit: %@": + "Pladsgrænse: %@", + " Time Machine quota not set to match - run: %@": + " Time Machine-kvoten er ikke indstillet til at passe - kør: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Angiver, hvor meget af Google Drive denne Mac må bruge, og udskriver kommandoen til Time Machine-kvoten.", + "Limit in GB.": + "Grænse i GB.", + "Limit for this Mac: %@ GB.": + "Grænse for denne Mac: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Indstil nu Time Machine-kvoten (kræver en administratoradgangskode):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - kontrol, konfiguration af Google Drive og installation. Kaldes af launchd efter en tidsplan eller manuelt fra Terminal.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "Opretter forbindelse til Google Drive via rclone (OAuth i browseren) og opretter denne maskines mappe.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Overskriv den eksisterende remote. RISIKABELT: erstatter token og tilladelser.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "Pakker build/CloudMachine.app til build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "FEJL: %@ mangler - kør først 'cloudmachine-agent build-app'", + "==> Preparing the staging folder": + "==> Forbereder staging-mappen", + "==> Creating %@": + "==> Opretter %@", + "ERROR: hdiutil exited with code %@.": + "FEJL: hdiutil afsluttede med kode %@.", + "==> Done: %@": + "==> Færdig: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "Ved første start (appen er ikke signeret med en Apple Developer-konto):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. Åbn %@ og træk CloudMachine.app til Programmer.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. Højreklik på CloudMachine.app i Finder -> Åbn -> Åbn\n (et almindeligt dobbeltklik viser Gatekeeper-blokeringen “ikke-identificeret udvikler”).", + "3. Later launches work normally, with a double-click.": + "3. Senere starter appen normalt med et dobbeltklik.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "Bygger CloudMachine.app (Release) - GUI + cloudmachine-agent i Contents/MacOS/ samt launchd/, vm/ og config/ som Resources.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Binære filer til både Apple Silicon og Intel (sådan bygger CI en udgivelse; unødvendigt lokalt).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> Bygger CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)", + "ERROR: swift build exited with code %@.": + "FEJL: swift build afsluttede med kode %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "FEJL: swift build --show-bin-path angav ikke mappen med de binære filer.", + "ERROR: no built binary found at %@": + "FEJL: ingen bygget binær fil fundet i %@", + "==> Assembling the .app bundle in %@": + "==> Samler .app-pakken i %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> ADVARSEL: du bygger fra et SNAVSET træ - versionen peger ikke på en commit.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "FEJL: Resources/AppIcon.icns mangler - opret den: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Signerer med det lokale certifikat '%@' (Fuld diskadgang bevares ved senere ombygninger)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Signerer ad hoc (ingen Apple Developer-konto) - kør 'cloudmachine-agent setup-signing-cert' én gang, så TCC-tilladelser bevares ved senere ombygninger", + "ERROR: codesign exited with code %@.": + "FEJL: codesign afsluttede med kode %@.", + "Next step: %@": + "Næste trin: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Opretter et lokalt selvsigneret certifikat, så Fuld diskadgang bevares ved senere ombygninger af appen.", + "Certificate '%@' already exists in %@, nothing to do.": + "Certifikatet '%@' findes allerede i %@ - der er intet at gøre.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Opretter nøgle og selvsigneret certifikat '%@'...", + "ERROR: openssl req exited with code %@.": + "FEJL: openssl req afsluttede med kode %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "FEJL: openssl pkcs12 afsluttede med kode %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Importerer certifikatet i %@ (forhåndsgodkender /usr/bin/codesign, så den ikke spørger om adgangskoden til nøgleringen hver gang)...", + "ERROR: security import exited with code %@.": + "FEJL: security import afsluttede med kode %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> Giver kun certifikatet tillid til kodesignering...", + "ERROR: security add-trusted-cert exited with code %@.": + "FEJL: security add-trusted-cert afsluttede med kode %@.", + "Done. Certificate '%@' is now available to codesign.": + "Færdig. Certifikatet '%@' er nu tilgængeligt for codesign.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "Næste 'cloudmachine-agent build-app' bruger det automatisk i stedet for en ad hoc-signatur.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "Efter DEN ENE ombygning skal du give Fuld diskadgang en sidste gang - senere\nombygninger nulstiller den ikke mere, så længe du signerer med det samme certifikat.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Kontrollerer, om den timevise cyklus STADIG virker (datoen for den sidste VELLYKKEDE backup), og melder fejl.", + "After this many hours without a successful backup we consider the cycle broken.": + "Efter så mange timer uden en vellykket backup anser vi cyklussen for brudt.", + "Only print the state, without a system notification.": + "Udskriv kun tilstanden, uden en systemnotifikation.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "En anden præferencefil til Time Machine - til at teste vagthunden på en kendt prøve.", + "Last successful backup: %@": + "Sidste vellykkede backup: %@", + "Last successful backup: NONE": + "Sidste vellykkede backup: INGEN", + "Last attempt: %@": + "Sidste forsøg: %@", + "WAITING (system startup): %@": + "VENTER (systemstart): %@", + "Backup cycle: OK": + "Backupcyklus: OK", + "FAILURE: %@": + "FEJL: %@", + " %@": + " %@", + "Check the state: %@": + "Tjek tilstanden: %@", + "Preparing for restart": + "Forbereder genstart", + "Prepare for restart": + "Forbered til genstart", + "Prepare": + "Forbered", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> ADVARSEL: git rev-list mislykkedes (%@) - datoen bruges som buildnummer.", + "Agents: %@": + "Agenter: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "KAN IKKE STARTE: %@ - åbn CloudMachine eller kør backup-health for at indlæse dem igen", + "Reloaded agents that could not start: %@": + "Genindlæste agenter, der ikke kunne starte: %@", + "Drive folder: %@": + "Drive-mappe: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Navnet på denne Macs mappe på Google Drive (standard: afledt af computerens navn). Angives én gang; kan ikke ændres senere.", + "Backup watchdog: %@": + "Backup-vagthund: %@", + "Prints the version, the build number and the commit this binary was built from.": + "Udskriver versionen, buildnummeret og den commit, som denne binære fil blev bygget fra.", + "Only one line, without a description.": + "Kun én linje, uden beskrivelse.", + "Build from the working tree (outside a bundle) - no version data.": + "Build fra arbejdstræet (uden for en pakke) - ingen versionsdata.", + "Version: %@": + "Version: %@", + "Build: %@": + "Build: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "ADVARSEL: bygget fra et SNAVSET træ - den binære fil indeholder kode, der\n ikke er i nogen commit. Commit-nummeret beskriver IKKE,\n hvad der faktisk kører.", + "Saving the space limit": + "Gemmer pladsgrænsen", + "Measuring usage on Google Drive": + "Måler forbruget på Google Drive", + "Google Drive did not answer - try again later.": + "Google Drive svarede ikke - prøv igen senere.", + "Measured.": + "Målt.", + "Space limit for this Mac": + "Pladsgrænse for denne Mac", + "Used on Google Drive": + "Brugt på Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "Målt %@. Vagthunden måler igen med få timers mellemrum.", + "Limit (GB)": + "Grænse (GB)", + "Save": + "Gem", + "Measure now": + "Mål nu", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Time Machine-kvote: %@ GB (70%% af grænsen - kopien på Drive er cirka en tredjedel større end den backup, den indeholder). Time Machine sletter de ældste backups for at holde sig inden for den.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Indstil Time Machine-kvoten: kør dette i Terminal (kræver sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Tilslut Google Drive: kør dette i Terminal, og godkend i browseren", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "Giv CloudMachine Fuld diskadgang, så den kan se, om backups bliver færdige", + "Folder on Google Drive": + "Mappe på Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Én mappe pr. Mac. Angives én gang - kan ikke ændres efter tilslutning.", + "Use lowercase letters, digits and dashes.": + "Brug små bogstaver, cifre og bindestreger.", + "Install rclone": + "Installer rclone", + "Open System Settings": + "Åbn Systemindstillinger", + "Install agents": + "Installer agenter", + "not checked": + "ikke kontrolleret", + "none at all": + "slet ingen", + "%@ ago": + "%@ siden", + "Missing: %@": + "Mangler: %@", + "Google Drive not connected": + "Google Drive er ikke tilsluttet", + "Time Machine does not point to CloudMachine": + "Time Machine peger ikke på CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "DET ER UKENDT, om Time Machine peger på CloudMachine - tmutil svarede ikke", + "Backup in progress": + "Backup i gang", + "Unknown when the last backup was made": + "Det er ukendt, hvornår den sidste backup blev lavet", + "There is no completed backup at all": + "Der er slet ingen gennemført backup", + "No completed backup for %@": + "Ingen gennemført backup i %@", + "Ready": + "Klar", + "Not saved: %@": + "Ikke gemt: %@", + "Installing rclone": + "Installerer rclone", + "Installing launchd agents": + "Installerer launchd-agenter", + "Starting backup": + "Starter backup", + "Backup started.": + "Backup startet.", + "Could not start the backup.": + "Kunne ikke starte backuppen.", + "Stopping backup": + "Stopper backup", + "Backup stopped.": + "Backup stoppet.", + "Could not stop the backup.": + "Kunne ikke stoppe backuppen.", + "Could not prepare the AppleScript.": + "Kunne ikke klargøre AppleScript.", + "Unknown authorization error.": + "Ukendt godkendelsesfejl.", + "Waiting to upload": + "Venter på upload", + "%@ files": + "%@ filer", + "nothing": + "intet", + "Back up now": + "Tag backup nu", + "Stop backup": + "Stop backup", + "Open CloudMachine": + "Åbn CloudMachine", + "Quit": + "Afslut", + "Healthy": + "Sund", + "Attention": + "Obs", + "Refreshed %@": + "Opdateret %@", + "System Status": + "Systemstatus", + "Action needed": + "Handling påkrævet", + "not measured": + "ikke målt", + "rclone did not answer": + "rclone svarede ikke", + "Backup in Progress": + "Backup i gang", + "Files processed": + "Behandlede filer", + "Write speed": + "Skrivehastighed", + "Operation phase": + "Handlingsfase", + "Required Setup Steps": + "Nødvendige konfigurationstrin", + "Copy": + "Kopiér", + "Last completed backup": + "Sidste gennemførte backup", + "Last backup watchdog run": + "Seneste kørsel af backup-vagthunden", + "not read": + "ikke læst", + "Everything uploaded": + "Alt er uploadet", + "File upload errors": + "Fejl ved upload af filer", + "Google Drive Credentials (OAuth 2.0)": + "Google Drive-legitimationsoplysninger (OAuth 2.0)", + "Keychain OK": + "Nøglering OK", + "No custom keys": + "Ingen egne nøgler", + "Paste client_id...": + "Indsæt client_id...", + "Paste client_secret...": + "Indsæt client_secret...", + "Save securely in the Keychain": + "Gem sikkert i nøgleringen", + "Refresh": + "Opdater", + "Overview": + "Oversigt", + "Backups": + "Backups", + "Storage": + "Lager", + "Settings": + "Indstillinger", + "Current status: %@": + "Aktuel status: %@", + "Does not point to CloudMachine": + "Peger ikke på CloudMachine", + "tmutil did not answer": + "tmutil svarede ikke", + "Backing up: %@ of %@": + "Tager backup: %@ af %@", + "%@ of %@": + "%@ af %@", + "Copied": + "Kopieret", + "No backup is running": + "Ingen backup kører", + "Time Machine starts the next one on its own schedule.": + "Time Machine starter den næste efter sin egen tidsplan.", + "Backup cycle": + "Backupcyklus", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB i %@ bånd, %@ uploades", + "%@ bands": + "%@ bånd", + "%@ fragments abandoned - only in the machine": + "%@ opgivne fragmenter - kun i maskinen", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 svarer på Mac'en: Lima videresender maskinens fjernstyring af rclone, som ikke har nogen adgangskode. Enhver webside, der er åben i en browser, kan sende kommandoer til den - også sletning af backuppen på Google Drive. Føj portForwards-reglen fra vm/cmsmb.yaml til maskinen, og genstart den (se vm/README.md).", + "A service in the CloudMachine machine is not running": + "En tjeneste i CloudMachine-maskinen kører ikke", + "Address": + "Adresse", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Installationen af agenter er UFULDSTÆNDIG - %@ af %@ blev ikke installeret:\n%@\n%@\nHver manglende agent er en funktion, der lydløst er holdt op med at virke (vm-guard overvåger maskinens buffer, backup-health melder fejl). Ret årsagen, og gentag installationen.", + "All running": + "Alle kører", + "Also install the launchd agents (same as install-launchd).": + "Installer også launchd-agenterne (samme som install-launchd).", + "At most this many minutes of waiting for the upload.": + "Højst så mange minutters ventetid på upload.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "Ved grænsen mislykkes hvert nyt bånd med EMFILE, og backuppen stopper. Kontrollér: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Cache på maskinens disk", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Forbundet til Google Drive, men kunne ikke oprette mappen '%@' - uden den har maskinen ingen steder at gemme backuppen. Kontrollér kontoens tilladelser, og prøv igen.", + "Convert the image": + "Konvertér diskbilledet", + "Converting the image to 32 MB bands": + "Konverterer diskbilledet til bånd på 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "Det var ikke muligt at kontrollere med den nuværende forbindelse, om backuppen findes på Google Drive (%@), så remote '%@' blev IKKE erstattet: uden det svar kan den nye login ikke kontrolleres mod den.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Henter den officielle rclone-binære fil til ~/.cloudmachine/bin (Google-login og maskinens rclone.conf).", + "Free in the machine": + "Ledig plads i maskinen", + "Free in the machine: %@": + "Ledig plads i maskinen: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "Opretter og installerer launchd-agenterne (appen, backup-vagthunden, maskinstart, maskinens vagt).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "Installer Lima, som kører CloudMachine-maskinen: kør dette i Terminal", + "Install rclone (signs in to Google Drive for the machine)": + "Installer rclone (logger maskinen ind på Google Drive)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Installer baggrundsagenterne (maskinstart, buffervagt, backup-vagthund)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Installerer rclone via Homebrew - CloudMachine selv bruger den, der kommer fra install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, token og mapped/ fra backup-diskbilledet findes kun på maskinens disk; uden dem kan båndene i %@ ikke gendannes. Kopien (tm-meta-sync, hvert 15. minut) lægges i %@. Kontrollér: cloudmachine-agent vm-status, og derefter i maskinen: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima siger, at maskinen kører, men en kommando i den vendte ikke tilbage. Uden den ved man intet om Samba, rclone eller upload. Kontrollér: cloudmachine-agent vm-status", + "Machine": + "Maskine", + "Machine %@": + "Maskine %@", + "Machine & Upload Status": + "Status for maskine og upload", + "Machine buffer": + "Maskinens buffer", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Ingen Time Machine-destination er maskinens deling (smb://tm@/CloudMachine) - der bliver ikke lavet backups dér. Kommandoen udskrives af: cloudmachine-agent vm-setup", + "Not running: %@": + "Kører ikke: %@", + "Not set up": + "Ikke konfigureret", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "Når den er opbrugt, holder rclone op med at uploade, maskinens buffer fyldes, og der bliver ikke lavet flere backups. Ved en vækst på ca. 600 MB pr. timecyklus er det omkring %@ dage.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "Eller også mangler rclone.conf: denne Mac har allerede konfigureret CloudMachine-maskinen, så den tilsluttes ikke påny i blinde. Gendan filen fra en backup (maskinen har sin egen kopi i %@). For alligevel at tilslutte skal du oprette en tom fil på den sti, som `%@ config file` udskriver, og køre igen - den eksisterende mappe bevares.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Peg Time Machine på maskinen: kør dette i Terminal (kræver sudo; Kopiér medtager adgangskoden)", + "Points to the machine": + "Peger på maskinen", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Forbereder en genstart: stopper backuppen, venter et stykke tid på upload og stopper derefter maskinen rent.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "Aflæsning af Time Machine-destinationen vendte ikke tilbage inden for %@ s. Sådan opfører tmutil sig, når dens destination hænger.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "Remote '%@' blev IKKE erstattet. Det nye login får omfanget 'drive.file', som kun kan se filer oprettet under sit eget client_id. Den eksisterende backup blev højst sandsynligt oprettet af den nuværende forbindelse og ville blive usynlig for den. Før noget skrives, kontrolleres det nye token mod den eksisterende backup, og udskiftningen opgives, hvis det ikke kan se den. Maskinen beholder sin egen kopi af konfigurationen indtil vm-setup --replace-rclone-config. For at fortsætte skal du køre igen med --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Fjernstyring: ÅBEN på Mac'en på 127.0.0.1:5572 - enhver webside kan sende rclone-kommandoer; se vm/README.md (portForwards)", + "Running": + "Kører", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone eller punchfs i maskinen er ikke aktiv, så Time Machine har ingen steder at skrive, eller båndene når ikke frem til Google Drive. Kontrollér: cloudmachine-agent vm-status", + "Service %@": + "Tjeneste %@", + "Services": + "Tjenester", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "Konfigurer CloudMachine-maskinen (første gang hentes Ubuntu - det tager flere minutter)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "Konfigurer CloudMachine-maskinen igen, så den udskriver Time Machine-kommandoen", + "Set up the machine": + "Konfigurer maskinen", + "Setting up the CloudMachine machine": + "Konfigurerer CloudMachine-maskinen", + "Start the CloudMachine machine": + "Start CloudMachine-maskinen", + "Start the machine": + "Start maskinen", + "Starting the CloudMachine machine": + "Starter CloudMachine-maskinen", + "Still to upload: %@ GiB": + "Mangler at uploade: %@ GiB", + "Stopping the Time Machine backup...": + "Stopper Time Machine-backuppen...", + "Stopping the machine %@...": + "Stopper maskinen %@...", + "The CloudMachine machine does not answer": + "CloudMachine-maskinen svarer ikke", + "The CloudMachine machine is not running": + "CloudMachine-maskinen kører ikke", + "The CloudMachine machine is not set up yet": + "CloudMachine-maskinen er endnu ikke konfigureret", + "The CloudMachine machine is stopped": + "CloudMachine-maskinen er stoppet", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "Backuppen stoppes, upload får op til 30 minutter, og derefter lukker maskinen rent ned. Den starter igen ved næste login.", + "The machine %@ is not running - nothing to prepare.": + "Maskinen %@ kører ikke - der er intet at forberede.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "Maskinen er stoppet, og alt nåede frem til Google Drive. Mac'en kan genstartes; maskinen starter igen ved login.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Maskinen er stoppet. %@ GiB var endnu ikke nået frem til Google Drive - de ligger i maskinens buffer og uploades efter næste start. Mac'en kan genstartes.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Maskinen er stoppet. rclone oplyste ikke, hvor meget der manglede at blive uploadet; det, der ikke blev uploadet, ligger i maskinens buffer og uploades efter næste start. Mac'en kan genstartes.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "Maskinens disk er en fil på denne disk og vokser, efterhånden som uploadbufferen fyldes. Uden ledig plads kan maskinen ikke skrive bufferen, og Time Machines lokale snapshots har heller ingen steder at gå hen.", + "The image's metadata has never been copied to Drive": + "Diskbilledets metadata er aldrig blevet kopieret til Drive", + "The image's metadata was last copied to Drive %@ ago": + "Diskbilledets metadata blev sidst kopieret til Drive for %@ siden", + "The machine's disk is running out of space (%@ GB)": + "Maskinens disk er ved at løbe tør for plads (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "Det nye login kan IKKE se den eksisterende backup (%@), så remote '%@' blev IKKE erstattet, og rclone.conf er uændret. Behold den nuværende forbindelse, eller log ind med den legitimation (client_id), der oprettede backuppen.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "Uploadbufferen ligger på denne disk. Vagten sætter Time Machine på pause, før den fyldes; hvis upload ikke indhenter det, forbliver backups sat på pause.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Disse bånd findes kun i maskinens buffer. Backuppen på Google Drive er UFULDSTÆNDIG og kan muligvis ikke åbnes.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine tager backup til maskinen, så uden den bliver der ikke lavet nogen backup. Start den: limactl start %@ (eller knappen Start i appen).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine stoppede ikke sin backup inden for 2 minutter (eller tmutil svarede ikke) - maskinen blev IKKE stoppet. Prøv igen om et øjeblik.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine har oprettet sit diskbillede: stop backuppen, og konvertér derefter diskbilledet til bånd på 32 MB", + "To upload": + "Skal uploades", + "Unknown whether the CloudMachine machine is running": + "Det er ukendt, om CloudMachine-maskinen kører", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Venter på upload til Google Drive (højst %@ min.)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "Med --replace-existing: bekræfter, at det nye login (omfanget 'drive.file') muligvis ikke kan se den eksisterende backup. Det nye token kontrolleres stadig først mod backuppen.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "Uden den er der ingen måde at kontrollere, om noget nåede frem til Drive - maskinens vagt er så blind.", + "limactl did not answer": + "limactl svarede ikke", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl svarede ikke (eller er ikke installeret). Det betyder ikke, at maskinen er nede - det betyder, at ingen har kontrolleret det.", + "limactl start failed: %@": + "limactl start mislykkedes: %@", + "limactl stop failed: %@": + "limactl stop mislykkedes: %@", + "punchfs is close to its open-file limit": + "punchfs nærmer sig grænsen for åbne filer", + "punchfs open files": + "Åbne filer i punchfs", + "rclone's remote control is open on this Mac": + "rclones fjernstyring er åben på denne Mac", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') returnerede en fejl, så ingen ved, om maskinens disk stadig kan vokse på denne Mac.", + "Google Drive's daily upload limit stops the upload": + "Googles daglige uploadgrænse stopper upload", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google afviste sidst en upload for %@ siden (750 GB om dagen). Backups siden da ligger kun i maskinens buffer på denne Mac. rclone forsøger igen hvert 5. minut og genoptager af sig selv, når grænsen er overstået; vagten sætter Time Machine på pause, hvis mere end %@ GiB venter.", + "Usage on Google Drive is not being measured": + "Forbruget på Google Drive måles ikke", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "Den seneste måling (%@ GB) er fra %@, for %@ siden - rclone size har ikke svaret siden. Indtil det gør, er der ingen, der overvåger grænsen på %@ GB: alarmerne ved 90%% og 100%% forbliver tavse. Tjek vm-status, eller tryk på Mål nu i vinduet.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size har ikke svaret en eneste gang. Indtil det gør, er der ingen, der overvåger grænsen på %@ GB: alarmerne ved 90%% og 100%% forbliver tavse. Tjek vm-status, eller tryk på Mål nu i vinduet.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Gemt i nøgleringen. Tilslutning af Google Drive (configure-remote) bruger dem.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Gemt i nøgleringen. Den eksisterende Google Drive-forbindelse beholder sit gamle client_id, og på denne Mac bør det forblive sådan: en forbindelse oprettet med de nye nøgler (omfanget 'drive.file') kan ikke se den backup, som den gamle oprettede. Udskift ikke forbindelsen her; de nye nøgler er til en Mac, der endnu ikke er tilsluttet.", + "it is not there for the new token": + "den findes ikke for det nye token", + "Cancel": + "Annuller", + "ACTION NEEDED": + "HANDLING PÅKRÆVET", + "WILL PASS BY ITSELF — DO NOTHING": + "GÅR OVER AF SIG SELV — GØR INTET", + "UNKNOWN — CHECK AGAIN SHORTLY": + "UKENDT — TJEK IGEN OM LIDT", + "ALL GOOD": + "ALT ER I ORDEN", + "Upload is not working": + "Upload virker ikke", + "Upload stopped — no space left on Google Drive": + "Upload stoppet — ingen ledig plads på Google Drive", + "%@ backup fragments not uploaded": + "%@ backupfragmenter er ikke uploadet", + "Upload cannot keep up with writes": + "Upload kan ikke følge med skrivningerne", + "Upload paused — Google daily limit": + "Upload sat på pause — Googles daglige grænse", + "Uploading to Google Drive — %@ queued": + "Uploader til Google Drive — %@ i kø", + "Everything uploaded to Google Drive": + "Alt er uploadet til Google Drive", + "Unknown what is waiting in the queue": + "Det er ukendt, hvad der venter i køen", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Der er ingen forbindelse til Google Drive, så backups laves kun på denne Mac. Hvis det ikke går over af sig selv inden for få minutter, skal du kontrollere netværket og forbindelsen til Drive.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Der er ingen ledig plads på Google Drive. Det går IKKE over af sig selv — du skal frigøre plads på Drive. Indtil da er Time Machine sat på pause, så den ikke fylder denne Macs disk.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ backupfragmenter kunne ikke uploades, og rclone er holdt op med at prøve. Disse fragmenter findes kun på denne Mac, så backuppen på Drive er ufuldstændig. Det skal undersøges.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine skriver hurtigere, end upload går, og bufferen er fyldt op. Backuppen sættes på pause, indtil upload har indhentet det — det er en sikring mod at fylde disken, ikke en fejl.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google accepterer 750 GB om dagen, og den grænse er brugt op. Der er intet at gøre: grænsen nulstilles af sig selv, som regel inden for få timer. Time Machine-backups laves normalt i mellemtiden og venter i bufferen — de uploades, så snart Google igen modtager data.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ backupfragmenter er i kø og på vej til Drive.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "Intet venter i køen — backuppen på Google Drive er komplet.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone svarede ikke på spørgsmålet om køen, så det er ukendt, hvor mange backups der stadig venter på at blive uploadet. Det betyder ikke, at noget er gået i stykker — under belastning kan svaret komme for sent. Det betyder blot, at ingen ved det lige nu. Hvis det fortsætter, melder kontrollen af backupcyklussen det.", + "unknown error": + "ukendt fejl", + "rclone lsf ended with an error": + "rclone lsf sluttede med en fejl", + "This Mac is close to its space limit on Google Drive": + "Denne Mac nærmer sig sin pladsgrænse på Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ GB af %@ GB brugt. Time Machine sletter de ældste backups for at holde sig inden for sin kvote; kontrollér, at kvoten er indstillet (vm-status).", + "This Mac is over its space limit on Google Drive": + "Denne Mac har overskredet sin pladsgrænse på Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ GB af %@ GB brugt. Indstil Time Machine-kvoten (kommandoen i appens vindue eller vm-status), eller hæv grænsen.", + "not set": + "ikke angivet", + "%@ GB - usage not measured yet": + "%@ GB - forbruget er endnu ikke målt", + "%@ of %@ GB used (%@%%)": + "%@ af %@ GB brugt (%@%%)", + "The limit must be a whole number of GB above zero.": + "Grænsen skal være et helt tal i GB over nul.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "machines.json kan ikke læses, så den blev ikke overskrevet. Ret eller fjern den først.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' er ikke et gyldigt mappenavn: brug små bogstaver, cifre og bindestreger.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Denne Mac tager allerede backup til mappen '%@'. Et skift til '%@' ville starte en ny, tom backup og efterlade den eksisterende forladt, så intet blev ændret.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Denne Mac har allerede en CloudMachine-installation, hvis backup ligger i mappen '%@'. Et skift til '%@' ville efterlade den forladt, så intet blev ændret.", + "Could not save the folder name to %@: %@": + "Kunne ikke gemme mappenavnet i %@: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew er ikke installeret. Installer det manuelt: https://brew.sh", + "Installing rclone failed: %@": + "Installation af rclone mislykkedes: %@", + "Installed rclone.": + "rclone er installeret.", + "Own Google credentials: set.": + "Egne Google-legitimationsoplysninger: angivet.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "UFULDSTÆNDIGT: %@ mangler - rclone bruger alligevel rclones delte client_id.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Ingen egne legitimationsoplysninger - rclone bruger det delte client_id, som har fælles hastighedsbegrænsning og udfases i 2026.", + "Empty value - not saving.": + "Tom værdi - gemmer ikke.", + "Keychain refused: %@": + "Nøgleringen afviste: %@", + "DIRTY-TREE": + "SNAVSET-TRÆ", + "Cannot create the working directory: %@": + "Kan ikke oprette arbejdsmappen: %@", + "Could not read the rclone version number.": + "Kunne ikke læse rclones versionsnummer.", + "Could not download %@.": + "Kunne ikke hente %@.", + "No entry for %@ in SHA256SUMS.": + "Ingen post for %@ i SHA256SUMS.", + "Could not compute the checksum.": + "Kunne ikke beregne kontrolsummen.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "SHA256-kontrolsummen stemmer ikke - installerer IKKE.\n forventet: %@\n beregnet: %@", + "Could not unpack the archive.": + "Kunne ikke udpakke arkivet.", + "Could not install the binary: %@": + "Kunne ikke installere den binære fil: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %@ er installeret i %@ (SHA256-kontrolsummen stemmer).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ svarede ikke inden for den tilladte tid (processen blev efterladt som forældreløs i baggrunden).", + "Cannot launch %@: %@": + "Kan ikke starte %@: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "Remote '%@' findes allerede og blev IKKE rørt.\nHvis den overskrives, erstattes token og tilladelsesomfang; en legitimation med omfanget 'drive.file' kan ikke se filer oprettet af den forrige, så den eksisterende backup bliver utilgængelig.\nHvis du virkelig vil erstatte den, så tag først en backup af ~/.config/rclone/rclone.conf og kør igen med --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "Kunne ikke kontrollere, om remote '%@' allerede findes (rclone listremotes svarede ikke eller mislykkedes), så intet blev ændret. Kør `%@ listremotes` for at se fejlen, og prøv derefter igen.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "Kunne ikke kontrollere, om denne Mac allerede har en CloudMachine-installation (rclone svarede ikke), så der blev ikke valgt nogen mappe. Prøv igen om et øjeblik.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize mislykkedes (%@). Hvis den binære fil mangler, så start med: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "Kunne ikke læse tokenet fra outputtet fra rclone authorize.", + "rclone config create failed.": + "rclone config create mislykkedes.", + "Connected to Google Drive as remote '%@', folder %@.": + "Tilsluttet Google Drive som remote '%@', mappe %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil svarer ikke - det er ukendt, hvor backuppen havner", + "No successful backup for %@": + "Ingen vellykket backup i %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Sidste GENNEMFØRTE backup: %@. Cyklussen er time-baseret, så det er %@ oversprungne kørsler.", + "There is NOT A SINGLE successful backup": + "Der er INGEN ENESTE vellykket backup", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Time Machine-præferencerne indeholder ingen dato for en gennemført backup til denne destination.", + "The last backup attempt did not end in a backup": + "Det sidste backupforsøg endte ikke i en backup", + "The attempt at %@ is newer than the last successful backup at %@.": + "Forsøget kl. %@ er nyere end den sidste vellykkede backup kl. %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine melder en fejl i den sidste kørsel (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Et RESULT forskelligt fra nul i Time Machine-præferencerne betyder, at kørslen ikke lykkedes.", + "rclone failed to upload %@ files": + "rclone kunne ikke uploade %@ filer", + "Buffer full of nothing but unsent data": + "Bufferen er fuld af ikke-sendte data", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone har intet tilbage at fjerne fra bufferen - upload kan ikke følge med eller er gået i stå.", + "The rclone control interface is not responding": + "rclones kontrolgrænseflade svarer ikke", + "Google Drive is running out of space (%@ GB)": + "Google Drive er ved at løbe tør for plads (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Mac'ens disk er ved at løbe tør for plads (%@ GB)", + "Cannot read the Time Machine preferences": + "Kan ikke læse Time Machine-præferencerne", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ kan ikke læses - oftest mangler Fuld diskadgang. Uden denne fil er det UKENDT, hvornår den sidste backup blev lavet, så vi behandler det som en fejl og ikke som fravær af et problem.", + "Cannot measure free space on the Mac's disk": + "Kan ikke måle ledig plads på Mac'ens disk", + "%@ days": + "%@ dage", + "CloudMachine: backup is not working": + "CloudMachine: backup virker ikke", + "unknown reason": + "ukendt årsag", + "osascript did not show the notification (permissions or no graphical session)": + "osascript viste ikke notifikationen (tilladelser eller ingen grafisk session)", + "UNDELIVERED ALARM: %@": + "UDELEVERET ALARM: %@", + "from %@, reason: %@": + "fra %@, årsag: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "Systemnotifikationen blev ikke leveret - du ser denne alarm KUN her.", + "%@ (%@ ago)": + "%@ (%@ siden)", + "%@ - marker from the FUTURE": + "%@ - markør fra FREMTIDEN", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (%@ siden) - VAGTHUNDEN KØRER MULIGVIS IKKE", + "NEVER - the watchdog has not recorded a single run": + "ALDRIG - vagthunden har ikke registreret en eneste kørsel", + "Could not find the launchd/ directory with templates.": + "Kunne ikke finde mappen launchd/ med skabeloner.", + "Could not find the compiled cloudmachine-agent binary.": + "Kunne ikke finde den kompilerede binære fil cloudmachine-agent.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "AFBRUDT: kunne ikke placere cloudmachine-agent et stabilt sted\n(%@) - oftest mangel på plads eller tilladelser.\nInstallerer IKKE agenter, der peger på %@: den sti\nforsvinder ved næste `swift build` eller `git clean`, og backups stopper\nuden noget synligt signal.", + "ABORTED: %@": + "AFBRUDT: %@", + "Could not list the templates in %@.": + "Kunne ikke vise skabelonerne i %@.", + "could not read the template %@": + "kunne ikke læse skabelonen %@", + "could not write %@ (lack of space or permissions)": + "kunne ikke skrive %@ (mangel på plads eller tilladelser)", + "launchctl load refused to load %@": + "launchctl load nægtede at indlæse %@", + "NOT A SINGLE agent was loaded.": + "INGEN ENESTE agent blev indlæst.", + "Only these went in: %@.": + "Kun disse blev installeret: %@.", + "Could not load any launchd agent.": + "Kunne ikke indlæse nogen launchd-agent.", + "Installed agents: %@": + "Installerede agenter: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " ADVARSEL: tæt på grænsen - nye bånd mislykkes med EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands på Google Drive er ikke tom - den kan indeholde en anden backup. Overskriver den IKKE; kontrollér den manuelt.", + "Address: %@": + "Adresse: %@", + "Already prepared (%@ exists) - nothing to do.": + "Allerede forberedt (%@ findes) - der er intet at gøre.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Konverterer Time Machines nye, tomme diskbillede i maskinen til bånd på 32 MB og flytter båndene til Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "Kopiér rclone.conf ind i maskinen, selv om den allerede har en.", + "Copying the converted image into the machine failed: %@": + "Kopiering af det konverterede diskbillede ind i maskinen mislykkedes: %@", + "Copying the image to the Mac failed: %@": + "Kopiering af diskbilledet til Mac'en mislykkedes: %@", + "Could not ask Lima about the machine: %@": + "Kunne ikke spørge Lima om maskinen: %@", + "Could not carry the Time Machine files over: %@": + "Kunne ikke overføre Time Machine-filerne: %@", + "Could not check the image in the machine.": + "Kunne ikke kontrollere diskbilledet i maskinen.", + "Could not copy the rclone configuration into the machine.": + "Kunne ikke kopiere rclone-konfigurationen ind i maskinen.", + "Could not create %@ on Google Drive: %@": + "Kunne ikke oprette %@ på Google Drive: %@", + "Could not create %@: %@": + "Kunne ikke oprette %@: %@", + "Could not find the vm/ directory with the machine template.": + "Kunne ikke finde mappen vm/ med maskinens skabelon.", + "Could not read the image size.": + "Kunne ikke læse diskbilledets størrelse.", + "Could not set the SMB password of user %@ in the machine.": + "Kunne ikke angive SMB-adgangskoden for brugeren %@ i maskinen.", + "Could not stop smbd in the machine.": + "Kunne ikke stoppe smbd i maskinen.", + "Could not write %@ in the machine.": + "Kunne ikke skrive %@ i maskinen.", + "Could not write the password file %@.": + "Kunne ikke skrive adgangskodefilen %@.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "Opretter eller starter CloudMachine-maskinen (Lima), giver den rclones konfiguration og en SMB-adgangskode og udskriver Time Machine-kommandoen.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "Opretter maskinen %@ (første start henter Ubuntu og installerer pakker - det tager flere minutter)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Færdig: %@ har bånd på %@ MB på Google Drive; originalen opbevares i %@ i maskinen. Start backuppen: tmutil startbackup", + "exit code %@, no message": + "afslutningskode %@, ingen meddelelse", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Diskbilledmetadata: ALDRIG kopieret til %@ - tjek tm-meta-sync i maskinen", + "Image metadata: copied %@ ago to %@": + "Diskbilledmetadata: kopieret for %@ siden til %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Diskbilledmetadata: sidst kopieret for %@ siden - FORSINKET (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Diskbilledmetadata: endnu ikke kopieret - venter på vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "Backup %@, sat på pause af vagten %@: %@", + "Free in machine: %@ GiB": + "Ledig i maskinen: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n fandt problemer: %@", + "Google Drive folder: %@": + "Google Drive-mappe: %@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach af det konverterede diskbillede mislykkedes: %@", + "hdiutil convert failed: %@": + "hdiutil convert mislykkedes: %@", + "Image name in the machine (default: from the computer name).": + "Diskbilledets navn i maskinen (standard: afledt af computerens navn).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "Installation af det konverterede diskbillede MISLYKKEDES: %@\nsmbd er efterladt STOPPET, så Time Machine ikke åbner et halvt installeret diskbillede. Originalen ligger i %@ i maskinen.", + "limactl create failed: %@": + "limactl create mislykkedes: %@", + "limactl list failed: %@": + "limactl list mislykkedes: %@", + "limactl not found - install Lima: brew install lima": + "limactl blev ikke fundet - installer Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start mislykkedes: %@\nMaskinens egen log: %@", + "Machine %@ is running.": + "Maskinen %@ kører.", + "Machine %@ was already running.": + "Maskinen %@ kørte allerede.", + "Machine: %@ (%@)": + "Maskine: %@ (%@)", + "Machine: %@": + "Maskine: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Maskine: ikke oprettet - kør: cloudmachine-agent vm-setup", + "no answer within the time limit": + "intet svar inden for tidsgrænsen", + "No image %@ in the machine.": + "Intet diskbillede %@ i maskinen.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "Endnu intet diskbillede i maskinen - peg Time Machine på delingen, og lad den først oprette et.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "Ingen rclone-konfiguration i %@ - tilslut først Google Drive (configure-remote).", + "no SMB destination": + "ingen SMB-destination", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "Én kontrol af maskinens uploadbuffer: sætter Time Machine på pause, når den fyldes, og genoptager det, den satte på pause.", + "Packing the converted image failed: %@": + "Pakning af det konverterede diskbillede mislykkedes: %@", + "Packing the image failed: %@": + "Pakning af diskbilledet mislykkedes: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "Intet svar fra maskinen (rclone rc) - vagten ville ikke gøre noget.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Udskriv kun, hvad vagten ville beslutte - til afprøvning af tærskler på en engangsmaskine.", + "Pause above this many GiB in the buffer.": + "Sæt på pause over så mange GiB i bufferen.", + "Pause when the machine has less free than this, in GiB.": + "Sæt på pause, når maskinen har mindre ledig plads end dette, i GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Peg Time Machine på maskinen (én gang, kræver en administratoradgangskode):", + "punchfs files: %@ open, limit %@": + "punchfs-filer: %@ åbne, grænse %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "rclone-konfigurationen findes allerede i maskinen - beholdt (--replace-rclone-config erstatter den).", + "rclone configuration copied into the machine.": + "rclone-konfigurationen er kopieret ind i maskinen.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm eller punchfs kører ikke i maskinen - se cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Genoptag under så mange GiB (kun en backup, som vagten satte på pause).", + "Service %@: %@": + "Tjeneste %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "Flere diskbilleder i maskinen (%@) - vælg ét med --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Viser maskinen: adresse, tjenester, uploadbuffer, ledig plads og Time Machine-destinationen.", + "SMB password stored in %@ (mode 600).": + "SMB-adgangskoden er gemt i %@ (tilstand 600).", + "The converted image does not have %@-byte bands.": + "Det konverterede diskbillede har ikke bånd på %@ byte.", + "The converted image has no APFS partition.": + "Det konverterede diskbillede har ingen APFS-partition.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "Diskbilledet fylder allerede %@ MB - denne kommando konverterer kun et nyt, tomt diskbillede (under %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "Diskbilledet er krypteret - konvertering af krypterede diskbilleder understøttes ikke.", + "The image was not changed; smbd started again.": + "Diskbilledet blev ikke ændret; smbd startede igen.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "Maskinen svarer ikke - kører den? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "Maskinen har ingen adresse på vzNAT-netværket.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "Tjenesterne i maskinen startede ikke - kontrollér: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine tager backup - stop den først: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: PEGER IKKE på maskinen (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil svarede ikke", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil svarede ikke - rører ikke ved diskbilledet, mens dets tilstand er ukendt.", + "unknown": + "ukendt", + "Unpacking the image failed: %@": + "Udpakning af diskbilledet mislykkedes: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "Mangler at uploade: %@ GiB i %@ bånd, uploader %@ (cache på disk %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "%@ (maskinen og dens uploadbuffer) er udelukket fra Time Machine.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "ADVARSEL: kunne ikke udelukke %@ fra Time Machine - kør: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Uploadbuffer: intet svar fra rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Når Time Machine har oprettet sit tomme diskbillede, skal du stoppe backuppen (tmutil stopbackup) og køre: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "Ikke sendt %@ GiB, ledig %@ GiB (pause over %@ GiB ikke sendt eller under %@ GiB ledig, genoptag under %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Upload: Googles daglige grænse afviste en upload for %@ siden - rclone forsøger igen hvert 5. minut og genoptager af sig selv", + "no": + "nej", + "running": + "kører", + "stopped": + "stoppet", + "yes": + "ja", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nDen forrige skabelon ligger i %@ - kopiér den tilbage over lima.yaml, og kør limactl start %@.", + "Could not read this app's machine template (limactl template copy).": + "Kunne ikke læse denne apps maskinskabelon (limactl template copy).", + "Could not replace %@: %@": + "Kunne ikke erstatte %@: %@", + "Machine %@ already runs this app's template.": + "Maskinen %@ kører allerede denne apps skabelon.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "Maskinen %@ kører nu denne apps skabelon; den forrige ligger i %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Flytter maskinen over på denne apps skabelon (to genstarter, aldrig under en backup).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "Ingen maskine %@ - opret den med: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Skabelon: ÆLDRE end denne apps - kør: cloudmachine-agent vm-update", + "Template: not compared": + "Skabelon: ikke sammenlignet", + "Template: this app's": + "Skabelon: denne apps", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "Maskinen har ingen %@ - kør først cloudmachine-agent vm-setup.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "Maskinen blev genstartet, men ikke alle tjenester kører - kontrollér: cloudmachine-agent vm-status. Den forrige skabelon ligger i %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "Skabelonen ændrer selve maskinen (%@) - det kræver en ny maskine, ikke en opdatering.", + "The upload to Google Drive hangs": + "Upload til Google Drive hænger", + "Time Machine is backing up - try again when it has finished.": + "Time Machine tager backup - prøv igen, når den er færdig.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Upload: HÆNGER - bånd i gang, ingen uploadet i %@ (netværk?); se /var/log/rclone-tm.log i maskinen", + "limactl stop failed - nothing was changed.": + "limactl stop mislykkedes - intet blev ændret.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone har bånd i gang, men ingen er blevet uploadet i %@ - som regel en afbrudt netværksforbindelse, som rclone ikke melder som en fejl. Backups siden da ligger kun i maskinens buffer. Når netværket vender tilbage, genoptages upload af sig selv (den 28.10.2026 inden for 80 s); hvis det ikke sker, fjerner en genstart af maskinen (prepare-shutdown, limactl start) de døde forbindelser.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil svarede ikke - genstarter ikke maskinen, mens dens tilstand er ukendt.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+de.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+de.swift new file mode 100644 index 0000000..ea676f6 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+de.swift @@ -0,0 +1,951 @@ +// German translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let de: [String: String] = [ + "Space limit: %@": + "Speicherlimit: %@", + " Time Machine quota not set to match - run: %@": + " Kontingent für Time Machine nicht passend gesetzt – ausführen: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Legt fest, wie viel von Google Drive dieser Mac nutzen darf, und gibt den Befehl für das Time-Machine-Kontingent aus.", + "Limit in GB.": + "Limit in GB.", + "Limit for this Mac: %@ GB.": + "Limit für diesen Mac: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Jetzt das Kontingent für Time Machine festlegen (Administratorkennwort erforderlich):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine – Prüfung, Einrichtung von Google Drive und Installation. Wird von launchd nach Zeitplan oder manuell im Terminal aufgerufen.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "Verbindet sich über rclone mit Google Drive (OAuth im Browser) und legt den Ordner dieser Maschine an.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Vorhandenes Remote überschreiben. RISKANT: ersetzt Token und Berechtigungen.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "Packt build/CloudMachine.app in build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "FEHLER: %@ fehlt – zuerst 'cloudmachine-agent build-app' ausführen", + "==> Preparing the staging folder": + "==> Bereitstellungsordner wird vorbereitet", + "==> Creating %@": + "==> %@ wird erstellt", + "ERROR: hdiutil exited with code %@.": + "FEHLER: hdiutil wurde mit Code %@ beendet.", + "==> Done: %@": + "==> Fertig: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "Beim ersten Start (die App ist nicht mit einem Apple-Developer-Account signiert):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. %@ öffnen und CloudMachine.app in den Ordner „Programme“ ziehen.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. Im Finder CloudMachine.app mit der RECHTEN Maustaste anklicken -> Öffnen -> Öffnen\n (ein einfacher Doppelklick zeigt die Gatekeeper-Sperre „nicht identifizierter Entwickler“).", + "3. Later launches work normally, with a double-click.": + "3. Spätere Starts funktionieren normal, per Doppelklick.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "Erstellt CloudMachine.app (Release) – GUI + cloudmachine-agent in Contents/MacOS/, dazu launchd/, vm/ und config/ als Ressourcen.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Programmdateien für Apple Silicon und Intel zugleich (so baut CI ein Release; lokal unnötig).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> CloudMachineApp + cloudmachine-agent werden erstellt (Release) – Version %@ (%@)", + "ERROR: swift build exited with code %@.": + "FEHLER: swift build wurde mit Code %@ beendet.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "FEHLER: swift build --show-bin-path hat das Verzeichnis der Programmdateien nicht gemeldet.", + "ERROR: no built binary found at %@": + "FEHLER: keine erstellte Programmdatei unter %@ gefunden", + "==> Assembling the .app bundle in %@": + "==> .app-Bundle wird in %@ zusammengestellt", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> WARNUNG: Build aus einem UNSAUBEREN Verzeichnisbaum – die Version verweist nicht auf einen Commit.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "FEHLER: Resources/AppIcon.icns fehlt – erzeugen mit: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Signierung mit dem lokalen Zertifikat '%@' (Festplattenvollzugriff bleibt bei späteren Builds erhalten)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Ad-hoc-Signierung (kein Apple-Developer-Account) – einmal 'cloudmachine-agent setup-signing-cert' ausführen, damit TCC-Berechtigungen spätere Builds überdauern", + "ERROR: codesign exited with code %@.": + "FEHLER: codesign wurde mit Code %@ beendet.", + "Next step: %@": + "Nächster Schritt: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Erstellt ein lokales selbstsigniertes Zertifikat, damit der Festplattenvollzugriff spätere Builds der App überdauert.", + "Certificate '%@' already exists in %@, nothing to do.": + "Zertifikat '%@' ist bereits in %@ vorhanden, nichts zu tun.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Schlüssel und selbstsigniertes Zertifikat '%@' werden erzeugt ...", + "ERROR: openssl req exited with code %@.": + "FEHLER: openssl req wurde mit Code %@ beendet.", + "ERROR: openssl pkcs12 exited with code %@.": + "FEHLER: openssl pkcs12 wurde mit Code %@ beendet.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Zertifikat wird in %@ importiert (/usr/bin/codesign wird vorab autorisiert, damit nicht jedes Mal nach dem Schlüsselbund-Kennwort gefragt wird) ...", + "ERROR: security import exited with code %@.": + "FEHLER: security import wurde mit Code %@ beendet.", + "==> Trusting the certificate ONLY for code signing...": + "==> Zertifikat wird NUR für die Codesignierung als vertrauenswürdig markiert ...", + "ERROR: security add-trusted-cert exited with code %@.": + "FEHLER: security add-trusted-cert wurde mit Code %@ beendet.", + "Done. Certificate '%@' is now available to codesign.": + "Fertig. Zertifikat '%@' steht jetzt für codesign zur Verfügung.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "Der nächste 'cloudmachine-agent build-app' verwendet es automatisch statt einer Ad-hoc-Signatur.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "Nach DIESEM EINEN Neubau den Festplattenvollzugriff ein letztes Mal erteilen – spätere\nNeubauten setzen ihn nicht mehr zurück, solange mit demselben Zertifikat signiert wird.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Prüft, ob der stündliche Zyklus NOCH funktioniert (Datum des letzten ERFOLGREICHEN Backups), und meldet Fehler.", + "After this many hours without a successful backup we consider the cycle broken.": + "Nach so vielen Stunden ohne erfolgreiches Backup gilt der Zyklus als defekt.", + "Only print the state, without a system notification.": + "Nur den Status ausgeben, ohne Systemmitteilung.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "Eine andere Time-Machine-Einstellungsdatei – um den Wächter an einer bekannten Probe zu testen.", + "Last successful backup: %@": + "Letztes erfolgreiches Backup: %@", + "Last successful backup: NONE": + "Letztes erfolgreiches Backup: KEINES", + "Last attempt: %@": + "Letzter Versuch: %@", + "WAITING (system startup): %@": + "WARTET (Systemstart): %@", + "Backup cycle: OK": + "Backup-Zyklus: OK", + "FAILURE: %@": + "FEHLER: %@", + " %@": + " %@", + "Check the state: %@": + "Status prüfen: %@", + "Preparing for restart": + "Vorbereitung auf Neustart", + "Prepare for restart": + "Auf Neustart vorbereiten", + "Prepare": + "Vorbereiten", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> WARNUNG: git rev-list ist fehlgeschlagen (%@) – das Datum wird als Build-Nummer verwendet.", + "Agents: %@": + "Agents: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "KANN NICHT STARTEN: %@ – CloudMachine öffnen oder backup-health ausführen, um sie neu zu laden", + "Reloaded agents that could not start: %@": + "Agents neu geladen, die nicht starten konnten: %@", + "Drive folder: %@": + "Drive-Ordner: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Name des Ordners dieses Macs in Google Drive (Standard: vom Computernamen abgeleitet). Wird einmal festgelegt und lässt sich später nicht ändern.", + "Backup watchdog: %@": + "Backup-Wächter: %@", + "Prints the version, the build number and the commit this binary was built from.": + "Gibt die Version, die Build-Nummer und den Commit aus, aus dem diese Programmdatei gebaut wurde.", + "Only one line, without a description.": + "Nur eine Zeile, ohne Beschreibung.", + "Build from the working tree (outside a bundle) - no version data.": + "Build aus dem Arbeitsverzeichnis (außerhalb eines Bundles) – keine Versionsdaten.", + "Version: %@": + "Version: %@", + "Build: %@": + "Build: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "WARNUNG: aus einem UNSAUBEREN Verzeichnisbaum gebaut – die Programmdatei enthält Code,\n der in keinem Commit steht. Die Commit-Nummer beschreibt NICHT,\n was tatsächlich läuft.", + "Saving the space limit": + "Speicherlimit wird gesichert", + "Measuring usage on Google Drive": + "Nutzung auf Google Drive wird gemessen", + "Google Drive did not answer - try again later.": + "Google Drive hat nicht geantwortet – später erneut versuchen.", + "Measured.": + "Gemessen.", + "Space limit for this Mac": + "Speicherlimit für diesen Mac", + "Used on Google Drive": + "Auf Google Drive belegt", + "Measured %@. The watchdog measures again every few hours.": + "Gemessen am %@. Der Backup-Wächter misst alle paar Stunden erneut.", + "Limit (GB)": + "Limit (GB)", + "Save": + "Sichern", + "Measure now": + "Jetzt messen", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Kontingent für Time Machine: %@ GB (70%% des Limits – die Kopie auf Drive ist etwa ein Drittel größer als das darin enthaltene Backup). Time Machine löscht die ältesten Backups, um darunter zu bleiben.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Kontingent für Time Machine festlegen: im Terminal ausführen (erfordert sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Google Drive verbinden: im Terminal ausführen und im Browser bestätigen", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "CloudMachine den Festplattenvollzugriff erteilen, damit erkannt wird, ob Backups abgeschlossen sind", + "Folder on Google Drive": + "Ordner auf Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Ein Ordner pro Mac. Wird einmal festgelegt und lässt sich nach dem Verbinden nicht mehr ändern.", + "Use lowercase letters, digits and dashes.": + "Nur Kleinbuchstaben, Ziffern und Bindestriche verwenden.", + "Install rclone": + "rclone installieren", + "Open System Settings": + "Systemeinstellungen öffnen", + "Install agents": + "Agents installieren", + "not checked": + "nicht geprüft", + "none at all": + "überhaupt keine", + "%@ ago": + "vor %@", + "Missing: %@": + "Fehlt: %@", + "Google Drive not connected": + "Google Drive nicht verbunden", + "Time Machine does not point to CloudMachine": + "Time Machine verweist nicht auf CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "UNKLAR, ob Time Machine auf CloudMachine verweist – tmutil hat nicht geantwortet", + "Backup in progress": + "Backup läuft", + "Unknown when the last backup was made": + "Unbekannt, wann das letzte Backup erstellt wurde", + "There is no completed backup at all": + "Es gibt überhaupt kein abgeschlossenes Backup", + "No completed backup for %@": + "Seit %@ kein abgeschlossenes Backup", + "Ready": + "Bereit", + "Not saved: %@": + "Nicht gesichert: %@", + "Installing rclone": + "rclone wird installiert", + "Installing launchd agents": + "launchd-Agents werden installiert", + "Starting backup": + "Backup wird gestartet", + "Backup started.": + "Backup gestartet.", + "Could not start the backup.": + "Das Backup konnte nicht gestartet werden.", + "Stopping backup": + "Backup wird angehalten", + "Backup stopped.": + "Backup angehalten.", + "Could not stop the backup.": + "Das Backup konnte nicht angehalten werden.", + "Could not prepare the AppleScript.": + "Das AppleScript konnte nicht vorbereitet werden.", + "Unknown authorization error.": + "Unbekannter Autorisierungsfehler.", + "Waiting to upload": + "Wartet auf Upload", + "%@ files": + "%@ Dateien", + "nothing": + "nichts", + "Back up now": + "Backup jetzt erstellen", + "Stop backup": + "Backup anhalten", + "Open CloudMachine": + "CloudMachine öffnen", + "Quit": + "Beenden", + "Healthy": + "Einwandfrei", + "Attention": + "Achtung", + "Refreshed %@": + "Aktualisiert um %@", + "System Status": + "Systemstatus", + "Action needed": + "Handlung erforderlich", + "not measured": + "nicht gemessen", + "rclone did not answer": + "rclone hat nicht geantwortet", + "Backup in Progress": + "Backup läuft", + "Files processed": + "Verarbeitete Dateien", + "Write speed": + "Schreibgeschwindigkeit", + "Operation phase": + "Vorgangsphase", + "Required Setup Steps": + "Erforderliche Einrichtungsschritte", + "Copy": + "Kopieren", + "Last completed backup": + "Letztes abgeschlossenes Backup", + "Last backup watchdog run": + "Letzter Lauf des Backup-Wächters", + "not read": + "nicht gelesen", + "Everything uploaded": + "Alles hochgeladen", + "File upload errors": + "Fehler beim Datei-Upload", + "Google Drive Credentials (OAuth 2.0)": + "Google-Drive-Zugangsdaten (OAuth 2.0)", + "Keychain OK": + "Schlüsselbund OK", + "No custom keys": + "Keine eigenen Schlüssel", + "Paste client_id...": + "client_id einsetzen ...", + "Paste client_secret...": + "client_secret einsetzen ...", + "Save securely in the Keychain": + "Sicher im Schlüsselbund ablegen", + "Refresh": + "Aktualisieren", + "Overview": + "Übersicht", + "Backups": + "Backups", + "Storage": + "Speicher", + "Settings": + "Einstellungen", + "Current status: %@": + "Aktueller Status: %@", + "Does not point to CloudMachine": + "Verweist nicht auf CloudMachine", + "tmutil did not answer": + "tmutil hat nicht geantwortet", + "Backing up: %@ of %@": + "Backup: %@ von %@", + "%@ of %@": + "%@ von %@", + "Copied": + "Kopiert", + "No backup is running": + "Es läuft kein Backup", + "Time Machine starts the next one on its own schedule.": + "Time Machine startet das nächste nach eigenem Zeitplan.", + "Backup cycle": + "Backup-Zyklus", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB in %@ Bändern, %@ werden hochgeladen", + "%@ bands": + "%@ Bänder", + "%@ fragments abandoned - only in the machine": + "%@ Fragmente aufgegeben – nur in der Maschine vorhanden", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 antwortet auf dem Mac: Lima leitet die rclone-Fernsteuerung der Maschine weiter, die kein Kennwort hat. Jede im Browser geöffnete Webseite kann ihr Befehle senden – auch zum Löschen des Backups auf Google Drive. Die portForwards-Regel aus vm/cmsmb.yaml zur Maschine hinzufügen und sie neu starten (siehe vm/README.md).", + "A service in the CloudMachine machine is not running": + "Ein Dienst in der CloudMachine-Maschine läuft nicht", + "Address": + "Adresse", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Installation der Agents UNVOLLSTÄNDIG – %@ von %@ wurden nicht installiert:\n%@\n%@\nJeder fehlende Agent ist eine Funktion, die unbemerkt ausgefallen ist (vm-guard überwacht den Puffer der Maschine, backup-health meldet Fehler). Ursache beheben und die Installation wiederholen.", + "All running": + "Alle laufen", + "Also install the launchd agents (same as install-launchd).": + "Auch die launchd-Agents installieren (wie install-launchd).", + "At most this many minutes of waiting for the upload.": + "Höchstens so viele Minuten auf den Upload warten.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "Am Limit schlägt jedes neue Band mit EMFILE fehl und das Backup hält an. Prüfen: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Cache auf der Festplatte der Maschine", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Mit Google Drive verbunden, aber der Ordner '%@' konnte nicht angelegt werden – ohne ihn kann die Maschine das Backup nirgends ablegen. Berechtigungen des Kontos prüfen und erneut versuchen.", + "Convert the image": + "Image konvertieren", + "Converting the image to 32 MB bands": + "Image wird in 32-MB-Bänder konvertiert", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "Mit der aktuellen Verbindung konnte nicht geprüft werden, ob das Backup auf Google Drive liegt (%@); Remote '%@' wurde daher NICHT ersetzt: ohne diese Antwort lässt sich die neue Anmeldung nicht dagegen prüfen.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Lädt die offizielle rclone-Programmdatei nach ~/.cloudmachine/bin herunter (Google-Anmeldung und rclone.conf der Maschine).", + "Free in the machine": + "Frei in der Maschine", + "Free in the machine: %@": + "Frei in der Maschine: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "Erzeugt und installiert die launchd-Agents (App, Backup-Wächter, Maschinenstart, Maschinenwächter).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "Lima installieren, das die CloudMachine-Maschine ausführt: im Terminal ausführen", + "Install rclone (signs in to Google Drive for the machine)": + "rclone installieren (meldet die Maschine bei Google Drive an)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Die Hintergrund-Agents installieren (Maschinenstart, Pufferwächter, Backup-Wächter)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Installiert rclone über Homebrew – CloudMachine selbst verwendet die Version aus install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, Token und mapped/ des Backup-Images existieren nur auf der Festplatte der Maschine; ohne sie lassen sich die Bänder in %@ nicht wiederherstellen. Die Kopie (tm-meta-sync, alle 15 Min.) geht nach %@. Prüfen: cloudmachine-agent vm-status, dann in der Maschine: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima meldet, dass die Maschine läuft, aber ein Befehl darin ist nicht zurückgekehrt. Ohne ihn ist nichts über Samba, rclone oder den Upload bekannt. Prüfen: cloudmachine-agent vm-status", + "Machine": + "Maschine", + "Machine %@": + "Maschine %@", + "Machine & Upload Status": + "Status von Maschine und Upload", + "Machine buffer": + "Puffer der Maschine", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Kein Time-Machine-Ziel ist die Freigabe der Maschine (smb://tm@
/CloudMachine) – dort werden keine Backups erstellt. Der Befehl wird ausgegeben von: cloudmachine-agent vm-setup", + "Not running: %@": + "Läuft nicht: %@", + "Not set up": + "Nicht eingerichtet", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "Sobald er erschöpft ist, lädt rclone nichts mehr hoch, der Puffer der Maschine füllt sich und es werden keine Backups mehr erstellt. Bei einem Zuwachs von ca. 600 MB pro stündlichem Zyklus sind das etwa %@ Tage.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "Oder rclone.conf fehlt: Dieser Mac hat die CloudMachine-Maschine bereits eingerichtet, daher wird nicht blind neu verbunden. Die Datei aus einem Backup wiederherstellen (die Maschine hält eine eigene Kopie in %@). Um trotzdem zu verbinden, eine leere Datei am Pfad anlegen, den `%@ config file` ausgibt, und erneut ausführen – der vorhandene Ordner bleibt erhalten.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Time Machine auf die Maschine ausrichten: im Terminal ausführen (erfordert sudo; „Kopieren“ enthält das Kennwort)", + "Points to the machine": + "Verweist auf die Maschine", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Bereitet einen Neustart vor: hält das Backup an, wartet eine Weile auf den Upload und fährt dann die Maschine sauber herunter.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "Das Lesen des Time-Machine-Ziels kam innerhalb von %@ s nicht zurück. So verhält sich tmutil, wenn sein Ziel hängt.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "Remote '%@' wurde NICHT ersetzt. Die neue Anmeldung erhält den Bereich 'drive.file', der nur Dateien sieht, die unter ihrer eigenen client_id erstellt wurden. Das vorhandene Backup wurde höchstwahrscheinlich von der aktuellen Verbindung erstellt und würde für sie unsichtbar. Bevor etwas geschrieben wird, wird das neue Token am vorhandenen Backup geprüft, und der Austausch wird abgebrochen, wenn es dieses nicht sehen kann. Die Maschine behält ihre eigene Kopie der Konfiguration bis vm-setup --replace-rclone-config. Um fortzufahren, erneut mit --replace-existing --accept-scope-change ausführen.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Fernsteuerung: OFFEN auf dem Mac unter 127.0.0.1:5572 – jede Webseite kann rclone-Befehle senden; siehe vm/README.md (portForwards)", + "Running": + "Läuft", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone oder punchfs in der Maschine ist nicht aktiv, daher kann Time Machine nirgends schreiben oder die Bänder erreichen Google Drive nicht. Prüfen: cloudmachine-agent vm-status", + "Service %@": + "Dienst %@", + "Services": + "Dienste", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "Die CloudMachine-Maschine einrichten (beim ersten Mal wird Ubuntu geladen – mehrere Minuten)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "Die CloudMachine-Maschine erneut einrichten, damit sie den Time-Machine-Befehl ausgibt", + "Set up the machine": + "Maschine einrichten", + "Setting up the CloudMachine machine": + "CloudMachine-Maschine wird eingerichtet", + "Start the CloudMachine machine": + "Die CloudMachine-Maschine starten", + "Start the machine": + "Maschine starten", + "Starting the CloudMachine machine": + "CloudMachine-Maschine wird gestartet", + "Still to upload: %@ GiB": + "Noch hochzuladen: %@ GiB", + "Stopping the Time Machine backup...": + "Time-Machine-Backup wird angehalten ...", + "Stopping the machine %@...": + "Maschine %@ wird angehalten ...", + "The CloudMachine machine does not answer": + "Die CloudMachine-Maschine antwortet nicht", + "The CloudMachine machine is not running": + "Die CloudMachine-Maschine läuft nicht", + "The CloudMachine machine is not set up yet": + "Die CloudMachine-Maschine ist noch nicht eingerichtet", + "The CloudMachine machine is stopped": + "Die CloudMachine-Maschine ist angehalten", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "Das Backup wird angehalten, der Upload erhält bis zu 30 Minuten, dann fährt die Maschine sauber herunter. Sie startet bei der nächsten Anmeldung wieder.", + "The machine %@ is not running - nothing to prepare.": + "Die Maschine %@ läuft nicht – nichts vorzubereiten.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "Die Maschine ist angehalten und alles hat Google Drive erreicht. Der Mac kann neu gestartet werden; die Maschine startet bei der Anmeldung wieder.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Die Maschine ist angehalten. %@ GiB hatten Google Drive noch nicht erreicht – sie bleiben im Puffer der Maschine und werden nach dem nächsten Start hochgeladen. Der Mac kann neu gestartet werden.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Die Maschine ist angehalten. rclone hat nicht gemeldet, wie viel noch hochzuladen war; was nicht hochgeladen wurde, bleibt im Puffer der Maschine und wird nach dem nächsten Start hochgeladen. Der Mac kann neu gestartet werden.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "Die Festplatte der Maschine ist eine Datei auf diesem Volume und wächst, während sich der Upload-Puffer füllt. Ohne freien Platz kann die Maschine den Puffer nicht schreiben, und auch die lokalen Schnappschüsse von Time Machine haben keinen Platz.", + "The image's metadata has never been copied to Drive": + "Die Metadaten des Images wurden noch nie nach Drive kopiert", + "The image's metadata was last copied to Drive %@ ago": + "Die Metadaten des Images wurden zuletzt vor %@ nach Drive kopiert", + "The machine's disk is running out of space (%@ GB)": + "Der Festplatte der Maschine geht der Speicherplatz aus (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "Die neue Anmeldung sieht das vorhandene Backup NICHT (%@), daher wurde Remote '%@' NICHT ersetzt und rclone.conf ist unverändert. Die aktuelle Verbindung beibehalten oder sich mit den Zugangsdaten (client_id) anmelden, mit denen das Backup erstellt wurde.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "Der Upload-Puffer liegt auf dieser Festplatte. Der Pufferwächter hält Time Machine an, bevor er sich füllt; holt der Upload nicht auf, bleiben die Backups angehalten.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Diese Bänder existieren nur im Puffer der Maschine. Das Backup auf Google Drive ist UNVOLLSTÄNDIG und lässt sich eventuell nicht öffnen.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine sichert auf die Maschine, ohne sie wird also kein Backup erstellt. Starten mit: limactl start %@ (oder mit der Taste „Maschine starten“ in der App).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine hat sein Backup nicht innerhalb von 2 Minuten angehalten (oder tmutil hat nicht geantwortet) – die Maschine wurde NICHT angehalten. In einem Moment erneut versuchen.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine hat sein Image erstellt: das Backup anhalten, dann das Image in 32-MB-Bänder konvertieren", + "To upload": + "Noch hochzuladen", + "Unknown whether the CloudMachine machine is running": + "Unklar, ob die CloudMachine-Maschine läuft", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Warten auf den Upload zu Google Drive (höchstens %@ Min.) ...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "Mit --replace-existing: bestätigt, dass die neue Anmeldung (Bereich 'drive.file') das vorhandene Backup eventuell nicht sieht. Das neue Token wird zuvor trotzdem am Backup geprüft.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "Ohne ihn lässt sich nicht prüfen, ob etwas Drive erreicht hat – der Pufferwächter der Maschine ist dann blind.", + "limactl did not answer": + "limactl hat nicht geantwortet", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl hat nicht geantwortet (oder ist nicht installiert). Das heißt nicht, dass die Maschine ausgefallen ist – es heißt, dass es niemand geprüft hat.", + "limactl start failed: %@": + "limactl start fehlgeschlagen: %@", + "limactl stop failed: %@": + "limactl stop fehlgeschlagen: %@", + "punchfs is close to its open-file limit": + "punchfs nähert sich seinem Limit für offene Dateien", + "punchfs open files": + "Offene Dateien von punchfs", + "rclone's remote control is open on this Mac": + "Die Fernsteuerung von rclone ist auf diesem Mac offen", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') hat einen Fehler zurückgegeben, daher ist unklar, ob die Festplatte der Maschine auf diesem Mac noch wachsen kann.", + "Google Drive's daily upload limit stops the upload": + "Das tägliche Upload-Limit von Google Drive stoppt den Upload", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google hat vor %@ zuletzt einen Upload abgelehnt (750 GB pro Tag). Backups seitdem liegen nur im Puffer der Maschine auf diesem Mac. rclone versucht es alle 5 Min. erneut und macht von selbst weiter, sobald das Limit vorbei ist; der Pufferwächter hält Time Machine an, wenn mehr als %@ GiB warten.", + "Usage on Google Drive is not being measured": + "Die Nutzung auf Google Drive wird nicht gemessen", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "Die letzte Messung (%@ GB) stammt von %@, vor %@ – rclone size hat seitdem nicht geantwortet. Bis dahin überwacht nichts das Limit von %@ GB: die Alarme bei 90%% und 100%% bleiben stumm. vm-status prüfen oder im Fenster auf „Jetzt messen“ klicken.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size hat noch kein einziges Mal geantwortet. Bis dahin überwacht nichts das Limit von %@ GB: die Alarme bei 90%% und 100%% bleiben stumm. vm-status prüfen oder im Fenster auf „Jetzt messen“ klicken.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Im Schlüsselbund gesichert. Die Verbindung zu Google Drive (configure-remote) verwendet sie.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Im Schlüsselbund gesichert. Die vorhandene Verbindung zu Google Drive behält ihre alte client_id, und auf diesem Mac sollte das so bleiben: Eine mit den neuen Schlüsseln hergestellte Verbindung (Bereich 'drive.file') kann das mit der alten erstellte Backup nicht sehen. Die Verbindung hier nicht ersetzen; die neuen Schlüssel sind für einen Mac, der noch nicht verbunden ist.", + "it is not there for the new token": + "für das neue Token ist es nicht vorhanden", + "Cancel": + "Abbrechen", + "ACTION NEEDED": + "HANDLUNG ERFORDERLICH", + "WILL PASS BY ITSELF — DO NOTHING": + "ERLEDIGT SICH VON SELBST – NICHTS TUN", + "UNKNOWN — CHECK AGAIN SHORTLY": + "UNKLAR – BALD ERNEUT PRÜFEN", + "ALL GOOD": + "ALLES IN ORDNUNG", + "Upload is not working": + "Upload funktioniert nicht", + "Upload stopped — no space left on Google Drive": + "Upload angehalten – kein Speicherplatz mehr auf Google Drive", + "%@ backup fragments not uploaded": + "%@ Backup-Fragmente nicht hochgeladen", + "Upload cannot keep up with writes": + "Upload kommt mit dem Schreiben nicht mit", + "Upload paused — Google daily limit": + "Upload pausiert – Tageslimit von Google", + "Uploading to Google Drive — %@ queued": + "Upload zu Google Drive – %@ in der Warteschlange", + "Everything uploaded to Google Drive": + "Alles zu Google Drive hochgeladen", + "Unknown what is waiting in the queue": + "Unklar, was in der Warteschlange wartet", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Es besteht keine Verbindung zu Google Drive, daher werden Backups nur auf diesem Mac erstellt. Falls sich das nicht innerhalb weniger Minuten von selbst löst, das Netzwerk und die Verbindung zu Drive prüfen.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Auf Google Drive ist kein Speicherplatz mehr frei. Das erledigt sich NICHT von selbst – auf Drive muss Speicherplatz freigegeben werden. Bis dahin ist Time Machine angehalten, damit es die Festplatte dieses Macs nicht füllt.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ Backup-Fragmente konnten nicht hochgeladen werden und rclone hat aufgegeben. Diese Fragmente existieren nur auf diesem Mac, das Backup auf Drive ist also unvollständig. Das muss geprüft werden.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine schreibt schneller, als der Upload läuft, und der Puffer ist voll. Das Backup wird angehalten, bis der Upload aufgeholt hat – das ist ein Schutz vor dem Füllen der Festplatte, kein Fehler.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google akzeptiert 750 GB pro Tag und dieses Limit ist ausgeschöpft. Es gibt nichts zu tun: Das Limit erneuert sich von selbst, meist innerhalb weniger Stunden. Time-Machine-Backups werden in der Zwischenzeit normal erstellt und warten im Puffer – sie werden hochgeladen, sobald Google wieder annimmt.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ Backup-Fragmente sind in der Warteschlange und auf dem Weg zu Drive.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "In der Warteschlange wartet nichts – das Backup auf Google Drive ist vollständig.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone hat die Frage nach der Warteschlange nicht beantwortet, daher ist unklar, wie viele Backups noch auf den Upload warten. Das heißt nicht, dass etwas kaputt ist – unter Last kann die Antwort verspätet kommen. Es heißt nur, dass es im Moment niemand weiß. Besteht das Problem fort, meldet es die Prüfung des Backup-Zyklus.", + "unknown error": + "unbekannter Fehler", + "rclone lsf ended with an error": + "rclone lsf wurde mit einem Fehler beendet", + "This Mac is close to its space limit on Google Drive": + "Dieser Mac nähert sich seinem Speicherlimit auf Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ GB von %@ GB belegt. Time Machine löscht die ältesten Backups, um sein Kontingent einzuhalten; prüfen, ob das Kontingent gesetzt ist (vm-status).", + "This Mac is over its space limit on Google Drive": + "Dieser Mac hat sein Speicherlimit auf Google Drive überschritten", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ GB von %@ GB belegt. Das Kontingent für Time Machine festlegen (Befehl im App-Fenster oder in vm-status) oder das Limit erhöhen.", + "not set": + "nicht gesetzt", + "%@ GB - usage not measured yet": + "%@ GB – Nutzung noch nicht gemessen", + "%@ of %@ GB used (%@%%)": + "%@ von %@ GB belegt (%@%%)", + "The limit must be a whole number of GB above zero.": + "Das Limit muss eine ganze Zahl von GB größer als null sein.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "machines.json kann nicht gelesen werden und wurde daher nicht überschrieben. Zuerst korrigieren oder entfernen.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' ist kein gültiger Ordnername: Kleinbuchstaben, Ziffern und Bindestriche verwenden.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Dieser Mac sichert bereits in den Ordner '%@'. Der Wechsel zu '%@' würde ein neues, leeres Backup beginnen und das vorhandene verwaisen lassen, daher wurde nichts geändert.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Dieser Mac hat bereits eine CloudMachine-Installation, deren Backup im Ordner '%@' liegt. Der Wechsel zu '%@' würde es verwaisen lassen, daher wurde nichts geändert.", + "Could not save the folder name to %@: %@": + "Der Ordnername konnte nicht in %@ gesichert werden: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew ist nicht installiert. Manuell installieren: https://brew.sh", + "Installing rclone failed: %@": + "Installation von rclone fehlgeschlagen: %@", + "Installed rclone.": + "rclone installiert.", + "Own Google credentials: set.": + "Eigene Google-Zugangsdaten: gesetzt.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "UNVOLLSTÄNDIG: %@ fehlt – rclone verwendet trotzdem die gemeinsame client_id von rclone.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Keine eigenen Zugangsdaten – rclone verwendet die gemeinsame client_id, die gemeinsam ratenbegrenzt ist und 2026 eingestellt wird.", + "Empty value - not saving.": + "Leerer Wert – wird nicht gesichert.", + "Keychain refused: %@": + "Schlüsselbund hat abgelehnt: %@", + "DIRTY-TREE": + "UNSAUBERER-BAUM", + "Cannot create the working directory: %@": + "Das Arbeitsverzeichnis kann nicht angelegt werden: %@", + "Could not read the rclone version number.": + "Die Versionsnummer von rclone konnte nicht gelesen werden.", + "Could not download %@.": + "%@ konnte nicht geladen werden.", + "No entry for %@ in SHA256SUMS.": + "Kein Eintrag für %@ in SHA256SUMS.", + "Could not compute the checksum.": + "Die Prüfsumme konnte nicht berechnet werden.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "SHA256-Prüfsumme stimmt nicht überein – wird NICHT installiert.\n erwartet: %@\n berechnet: %@", + "Could not unpack the archive.": + "Das Archiv konnte nicht entpackt werden.", + "Could not install the binary: %@": + "Die Programmdatei konnte nicht installiert werden: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %@ in %@ installiert (SHA256-Prüfsumme stimmt überein).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ hat nicht innerhalb der vorgesehenen Zeit geantwortet (der Prozess blieb verwaist im Hintergrund).", + "Cannot launch %@: %@": + "%@ kann nicht gestartet werden: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "Remote '%@' existiert bereits und wurde NICHT angetastet.\nDas Überschreiben ersetzt Token und Berechtigungsbereich; Zugangsdaten mit dem Bereich 'drive.file' sehen keine Dateien, die von den vorherigen erstellt wurden, das vorhandene Backup wäre also nicht mehr erreichbar.\nUm es wirklich zu ersetzen, zuerst ~/.config/rclone/rclone.conf sichern und erneut mit --replace-existing ausführen.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "Es konnte nicht geprüft werden, ob Remote '%@' bereits existiert (rclone listremotes hat nicht geantwortet oder ist fehlgeschlagen), daher wurde nichts geändert. `%@ listremotes` ausführen, um den Fehler zu sehen, und dann erneut versuchen.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "Es konnte nicht geprüft werden, ob dieser Mac bereits eine CloudMachine-Installation hat (rclone hat nicht geantwortet), daher wurde kein Ordner gewählt. In einem Moment erneut versuchen.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize fehlgeschlagen (%@). Falls die Programmdatei fehlt, zuerst ausführen: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "Das Token konnte aus der Ausgabe von rclone authorize nicht gelesen werden.", + "rclone config create failed.": + "rclone config create fehlgeschlagen.", + "Connected to Google Drive as remote '%@', folder %@.": + "Mit Google Drive als Remote '%@' verbunden, Ordner %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil antwortet nicht – unklar, wohin das Backup geht", + "No successful backup for %@": + "Seit %@ kein erfolgreiches Backup", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Letztes ABGESCHLOSSENES Backup: %@. Der Zyklus ist stündlich, das sind also %@ verpasste Läufe.", + "There is NOT A SINGLE successful backup": + "Es gibt KEIN EINZIGES erfolgreiches Backup", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Die Time-Machine-Einstellungen enthalten kein Datum eines abgeschlossenen Backups für dieses Ziel.", + "The last backup attempt did not end in a backup": + "Der letzte Backup-Versuch hat nicht zu einem Backup geführt", + "The attempt at %@ is newer than the last successful backup at %@.": + "Der Versuch um %@ ist neuer als das letzte erfolgreiche Backup um %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine meldet einen Fehler im letzten Lauf (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Ein RESULT ungleich null in den Time-Machine-Einstellungen bedeutet, dass der Lauf nicht erfolgreich war.", + "rclone failed to upload %@ files": + "rclone konnte %@ Dateien nicht hochladen", + "Buffer full of nothing but unsent data": + "Puffer nur noch voll mit ungesendeten Daten", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone kann nichts mehr aus dem Puffer verdrängen – der Upload kommt nicht mit oder ist ins Stocken geraten.", + "The rclone control interface is not responding": + "Die rclone-Steuerschnittstelle antwortet nicht", + "Google Drive is running out of space (%@ GB)": + "Auf Google Drive wird der Speicherplatz knapp (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Auf der Festplatte des Macs wird der Speicherplatz knapp (%@ GB)", + "Cannot read the Time Machine preferences": + "Die Time-Machine-Einstellungen können nicht gelesen werden", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ ist nicht lesbar – meistens fehlt der Festplattenvollzugriff. Ohne diese Datei ist UNKLAR, wann das letzte Backup erstellt wurde, daher wird es als Fehler behandelt und nicht als Abwesenheit eines Problems.", + "Cannot measure free space on the Mac's disk": + "Freier Speicherplatz auf der Festplatte des Macs kann nicht gemessen werden", + "%@ days": + "%@ Tage", + "CloudMachine: backup is not working": + "CloudMachine: Backup funktioniert nicht", + "unknown reason": + "unbekannter Grund", + "osascript did not show the notification (permissions or no graphical session)": + "osascript hat die Mitteilung nicht angezeigt (Berechtigungen oder keine grafische Sitzung)", + "UNDELIVERED ALARM: %@": + "NICHT ZUGESTELLTER ALARM: %@", + "from %@, reason: %@": + "von %@, Grund: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "Die Systemmitteilung wurde nicht zugestellt – dieser Alarm ist NUR hier zu sehen.", + "%@ (%@ ago)": + "%@ (vor %@)", + "%@ - marker from the FUTURE": + "%@ – Markierung aus der ZUKUNFT", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (vor %@) – DER WÄCHTER LÄUFT EVENTUELL NICHT", + "NEVER - the watchdog has not recorded a single run": + "NIE – der Wächter hat keinen einzigen Lauf aufgezeichnet", + "Could not find the launchd/ directory with templates.": + "Das launchd/-Verzeichnis mit den Vorlagen wurde nicht gefunden.", + "Could not find the compiled cloudmachine-agent binary.": + "Die kompilierte Programmdatei cloudmachine-agent wurde nicht gefunden.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "ABGEBROCHEN: cloudmachine-agent konnte nicht an einen stabilen Ort gelegt werden\n(%@) – meistens fehlt Speicherplatz oder eine Berechtigung.\nAgents, die auf %@ verweisen, werden NICHT installiert: dieser Pfad\nverschwindet beim nächsten `swift build` oder `git clean`, und Backups enden\nohne jedes sichtbare Signal.", + "ABORTED: %@": + "ABGEBROCHEN: %@", + "Could not list the templates in %@.": + "Die Vorlagen in %@ konnten nicht aufgelistet werden.", + "could not read the template %@": + "Die Vorlage %@ konnte nicht gelesen werden", + "could not write %@ (lack of space or permissions)": + "%@ konnte nicht geschrieben werden (Speicherplatz oder Berechtigung fehlt)", + "launchctl load refused to load %@": + "launchctl load hat das Laden von %@ abgelehnt", + "NOT A SINGLE agent was loaded.": + "KEIN EINZIGER Agent wurde geladen.", + "Only these went in: %@.": + "Nur diese wurden installiert: %@.", + "Could not load any launchd agent.": + "Kein launchd-Agent konnte geladen werden.", + "Installed agents: %@": + "Installierte Agents: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " WARNUNG: nahe am Limit – neue Bänder schlagen mit EMFILE fehl", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands auf Google Drive ist nicht leer – es enthält eventuell ein anderes Backup. Wird NICHT überschrieben; von Hand prüfen.", + "Address: %@": + "Adresse: %@", + "Already prepared (%@ exists) - nothing to do.": + "Bereits vorbereitet (%@ existiert) – nichts zu tun.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Konvertiert das neue, leere Image von Time Machine in der Maschine in 32-MB-Bänder und verschiebt die Bänder nach Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "rclone.conf in die Maschine kopieren, auch wenn sie bereits eine hat.", + "Copying the converted image into the machine failed: %@": + "Das Kopieren des konvertierten Images in die Maschine ist fehlgeschlagen: %@", + "Copying the image to the Mac failed: %@": + "Das Kopieren des Images auf den Mac ist fehlgeschlagen: %@", + "Could not ask Lima about the machine: %@": + "Lima konnte nicht zur Maschine befragt werden: %@", + "Could not carry the Time Machine files over: %@": + "Die Time-Machine-Dateien konnten nicht übertragen werden: %@", + "Could not check the image in the machine.": + "Das Image in der Maschine konnte nicht geprüft werden.", + "Could not copy the rclone configuration into the machine.": + "Die rclone-Konfiguration konnte nicht in die Maschine kopiert werden.", + "Could not create %@ on Google Drive: %@": + "%@ konnte nicht auf Google Drive angelegt werden: %@", + "Could not create %@: %@": + "%@ konnte nicht angelegt werden: %@", + "Could not find the vm/ directory with the machine template.": + "Das vm/-Verzeichnis mit der Maschinenvorlage wurde nicht gefunden.", + "Could not read the image size.": + "Die Größe des Images konnte nicht gelesen werden.", + "Could not set the SMB password of user %@ in the machine.": + "Das SMB-Kennwort des Benutzers %@ in der Maschine konnte nicht gesetzt werden.", + "Could not stop smbd in the machine.": + "smbd in der Maschine konnte nicht angehalten werden.", + "Could not write %@ in the machine.": + "%@ konnte in der Maschine nicht geschrieben werden.", + "Could not write the password file %@.": + "Die Kennwortdatei %@ konnte nicht geschrieben werden.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "Erstellt oder startet die CloudMachine-Maschine (Lima), gibt ihr die Konfiguration von rclone und ein SMB-Kennwort und gibt den Time-Machine-Befehl aus.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "Maschine %@ wird erstellt (beim ersten Start werden Ubuntu und Pakete geladen – mehrere Minuten) ...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Fertig: %@ hat %@-MB-Bänder auf Google Drive; das Original bleibt in %@ in der Maschine erhalten. Backup starten: tmutil startbackup", + "exit code %@, no message": + "Exit-Code %@, keine Meldung", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Image-Metadaten: NIE nach %@ kopiert – tm-meta-sync in der Maschine prüfen", + "Image metadata: copied %@ ago to %@": + "Image-Metadaten: vor %@ nach %@ kopiert", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Image-Metadaten: zuletzt vor %@ kopiert – ÜBERFÄLLIG (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Image-Metadaten: noch nicht kopiert – wartet auf vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "Backup %@, vom Pufferwächter angehalten %@: %@", + "Free in machine: %@ GiB": + "Frei in Maschine: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n hat Probleme gefunden: %@", + "Google Drive folder: %@": + "Google-Drive-Ordner: %@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach des konvertierten Images fehlgeschlagen: %@", + "hdiutil convert failed: %@": + "hdiutil convert fehlgeschlagen: %@", + "Image name in the machine (default: from the computer name).": + "Name des Images in der Maschine (Standard: vom Computernamen abgeleitet).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "Installation des konvertierten Images FEHLGESCHLAGEN: %@\nsmbd bleibt ANGEHALTEN, damit Time Machine kein halb installiertes Image öffnet. Das Original liegt in %@ in der Maschine.", + "limactl create failed: %@": + "limactl create fehlgeschlagen: %@", + "limactl list failed: %@": + "limactl list fehlgeschlagen: %@", + "limactl not found - install Lima: brew install lima": + "limactl nicht gefunden – Lima installieren: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start fehlgeschlagen: %@\nDas eigene Protokoll der Maschine: %@", + "Machine %@ is running.": + "Maschine %@ läuft.", + "Machine %@ was already running.": + "Maschine %@ lief bereits.", + "Machine: %@ (%@)": + "Maschine: %@ (%@)", + "Machine: %@": + "Maschine: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Maschine: nicht angelegt – ausführen: cloudmachine-agent vm-setup", + "no answer within the time limit": + "keine Antwort innerhalb des Zeitlimits", + "No image %@ in the machine.": + "Kein Image %@ in der Maschine.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "Noch kein Image in der Maschine – Time Machine auf die Freigabe ausrichten und zuerst eines erstellen lassen.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "Keine rclone-Konfiguration unter %@ – zuerst Google Drive verbinden (configure-remote).", + "no SMB destination": + "kein SMB-Ziel", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "Eine Prüfung des Upload-Puffers der Maschine: hält Time Machine an, wenn er sich füllt, und setzt fort, was angehalten wurde.", + "Packing the converted image failed: %@": + "Das Packen des konvertierten Images ist fehlgeschlagen: %@", + "Packing the image failed: %@": + "Das Packen des Images ist fehlgeschlagen: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "Keine Antwort der Maschine (rclone rc) – der Pufferwächter würde nichts tun.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Nur ausgeben, was der Pufferwächter entscheiden würde – zum Ausprobieren von Schwellenwerten auf einer Wegwerf-Maschine.", + "Pause above this many GiB in the buffer.": + "Anhalten, wenn mehr als so viele GiB im Puffer liegen.", + "Pause when the machine has less free than this, in GiB.": + "Anhalten, wenn die Maschine weniger als so viel frei hat, in GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Time Machine auf die Maschine ausrichten (einmalig, erfordert ein Administratorkennwort):", + "punchfs files: %@ open, limit %@": + "punchfs-Dateien: %@ offen, Limit %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "rclone-Konfiguration ist bereits in der Maschine – bleibt erhalten (--replace-rclone-config ersetzt sie).", + "rclone configuration copied into the machine.": + "rclone-Konfiguration in die Maschine kopiert.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm oder punchfs läuft nicht in der Maschine – siehe cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Fortsetzen unterhalb von so vielen GiB (nur bei einem vom Pufferwächter angehaltenen Backup).", + "Service %@: %@": + "Dienst %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "Mehrere Images in der Maschine (%@) – eines mit --bundle wählen.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Zeigt die Maschine: Adresse, Dienste, Upload-Puffer, freien Speicherplatz und das Time-Machine-Ziel.", + "SMB password stored in %@ (mode 600).": + "SMB-Kennwort in %@ gesichert (Modus 600).", + "The converted image does not have %@-byte bands.": + "Das konvertierte Image hat keine Bänder mit %@ Byte.", + "The converted image has no APFS partition.": + "Das konvertierte Image hat keine APFS-Partition.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "Das Image belegt bereits %@ MB – dieser Befehl konvertiert nur ein neues, leeres Image (unter %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "Das Image ist verschlüsselt – das Konvertieren verschlüsselter Images wird nicht unterstützt.", + "The image was not changed; smbd started again.": + "Das Image wurde nicht geändert; smbd wurde wieder gestartet.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "Die Maschine antwortet nicht – läuft sie? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "Die Maschine hat keine Adresse im vzNAT-Netzwerk.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "Die Dienste in der Maschine sind nicht gestartet – prüfen: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine sichert gerade – zuerst anhalten: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: zeigt NICHT auf die Maschine (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil hat nicht geantwortet", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil hat nicht geantwortet – das Image wird nicht angefasst, solange sein Zustand unbekannt ist.", + "unknown": + "unbekannt", + "Unpacking the image failed: %@": + "Das Entpacken des Images ist fehlgeschlagen: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "Noch hochzuladen: %@ GiB in %@ Bändern, %@ werden hochgeladen (Cache auf Festplatte %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "%@ (die Maschine und ihr Upload-Puffer) von Time Machine ausgeschlossen.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "WARNUNG: %@ konnte nicht von Time Machine ausgeschlossen werden – ausführen: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Upload-Puffer: keine Antwort von rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Wenn Time Machine sein leeres Image erstellt hat, das Backup anhalten (tmutil stopbackup) und ausführen: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "Ungesendet %@ GiB, frei %@ GiB (Anhalten bei mehr als %@ GiB ungesendet oder weniger als %@ GiB frei, Fortsetzen unterhalb von %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Upload: Das Tageslimit von Google hat vor %@ einen Upload abgelehnt – rclone versucht es alle 5 Min. erneut und macht von selbst weiter", + "no": + "nein", + "running": + "läuft", + "stopped": + "angehalten", + "yes": + "ja", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nDie vorherige Vorlage liegt in %@ – über lima.yaml zurückkopieren und limactl start %@ ausführen.", + "Could not read this app's machine template (limactl template copy).": + "Die Maschinenvorlage dieser App konnte nicht gelesen werden (limactl template copy).", + "Could not replace %@: %@": + "%@ konnte nicht ersetzt werden: %@", + "Machine %@ already runs this app's template.": + "Maschine %@ läuft bereits mit der Vorlage dieser App.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "Maschine %@ läuft jetzt mit der Vorlage dieser App; die vorherige liegt in %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Stellt die Maschine auf die Vorlage dieser App um (zwei Neustarts, nie während eines Backups).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "Keine Maschine %@ – anlegen mit: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Vorlage: ÄLTER als die dieser App – ausführen: cloudmachine-agent vm-update", + "Template: not compared": + "Vorlage: nicht verglichen", + "Template: this app's": + "Vorlage: die dieser App", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "Die Maschine hat kein %@ – zuerst cloudmachine-agent vm-setup ausführen.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "Die Maschine wurde neu gestartet, aber nicht alle Dienste laufen – prüfen: cloudmachine-agent vm-status. Die vorherige Vorlage liegt in %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "Die Vorlage ändert die Maschine selbst (%@) – dafür ist eine neue Maschine nötig, kein Update.", + "The upload to Google Drive hangs": + "Der Upload zu Google Drive hängt", + "Time Machine is backing up - try again when it has finished.": + "Time Machine sichert gerade – erneut versuchen, wenn es fertig ist.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Upload: HÄNGT – Bänder in Bearbeitung, seit %@ keines hochgeladen (Netzwerk?); siehe /var/log/rclone-tm.log in der Maschine", + "limactl stop failed - nothing was changed.": + "limactl stop fehlgeschlagen – nichts wurde geändert.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone hat Bänder in Bearbeitung, aber seit %@ wurde keines hochgeladen – meist eine unterbrochene Netzwerkverbindung, die rclone nicht als Fehler meldet. Backups seitdem liegen nur im Puffer der Maschine. Sobald das Netzwerk wieder da ist, macht der Upload von selbst weiter (am 28.10.2026 innerhalb von 80 s); falls nicht, verwirft ein Neustart der Maschine (prepare-shutdown, limactl start) die toten Verbindungen.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil hat nicht geantwortet – die Maschine wird nicht neu gestartet, solange ihr Zustand unbekannt ist.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+es.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+es.swift new file mode 100644 index 0000000..9bf6b3e --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+es.swift @@ -0,0 +1,951 @@ +// Spanish translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let es: [String: String] = [ + "Space limit: %@": + "Límite de espacio: %@", + " Time Machine quota not set to match - run: %@": + " La cuota de Time Machine no coincide - ejecuta: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Define cuánto espacio de Google Drive puede usar este Mac e imprime el comando de la cuota de Time Machine.", + "Limit in GB.": + "Límite en GB.", + "Limit for this Mac: %@ GB.": + "Límite para este Mac: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Ahora ajusta la cuota de Time Machine (requiere una contraseña de administrador):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - verificación, configuración de Google Drive e instalación. Lo ejecuta launchd de forma programada, o tú mismo desde Terminal.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "Se conecta a Google Drive mediante rclone (OAuth en el navegador) y crea la carpeta de esta máquina.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Sobrescribe el remote existente. ARRIESGADO: reemplaza el token y los permisos.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "Empaqueta build/CloudMachine.app en build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "ERROR: falta %@ - ejecuta antes 'cloudmachine-agent build-app'", + "==> Preparing the staging folder": + "==> Preparando la carpeta temporal", + "==> Creating %@": + "==> Creando %@", + "ERROR: hdiutil exited with code %@.": + "ERROR: hdiutil terminó con el código %@.", + "==> Done: %@": + "==> Listo: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "La primera vez que la abras (la app no está firmada con una cuenta de Apple Developer):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. Abre %@ y arrastra CloudMachine.app a la carpeta Aplicaciones.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. En el Finder, haz clic DERECHO en CloudMachine.app -> Abrir -> Abrir\n (un doble clic normal muestra el bloqueo de Gatekeeper \"desarrollador no identificado\").", + "3. Later launches work normally, with a double-click.": + "3. Las siguientes veces se abre con normalidad, con doble clic.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "Compila CloudMachine.app (Release) - interfaz + cloudmachine-agent en Contents/MacOS/, además de launchd/, vm/ y config/ como Resources.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Binarios para Apple Silicon e Intel a la vez (así compila CI una versión; innecesario en local).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> Compilando CloudMachineApp + cloudmachine-agent (release) - versión %@ (%@)", + "ERROR: swift build exited with code %@.": + "ERROR: swift build terminó con el código %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "ERROR: swift build --show-bin-path no indicó el directorio de los binarios.", + "ERROR: no built binary found at %@": + "ERROR: no se encontró ningún binario compilado en %@", + "==> Assembling the .app bundle in %@": + "==> Montando el paquete .app en %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> ADVERTENCIA: compilas desde un árbol SUCIO - la versión no apuntará a ningún commit.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "ERROR: falta Resources/AppIcon.icns - genéralo: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Firmando con el certificado local '%@' (el Acceso total al disco se conservará en las próximas compilaciones)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Firmando ad hoc (sin cuenta de Apple Developer) - ejecuta una vez 'cloudmachine-agent setup-signing-cert' para que los permisos de TCC se conserven en las próximas compilaciones", + "ERROR: codesign exited with code %@.": + "ERROR: codesign terminó con el código %@.", + "Next step: %@": + "Siguiente paso: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Crea un certificado local autofirmado para que el Acceso total al disco se conserve al recompilar la app.", + "Certificate '%@' already exists in %@, nothing to do.": + "El certificado '%@' ya existe en %@, no hay nada que hacer.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Generando la clave y el certificado autofirmado '%@'...", + "ERROR: openssl req exited with code %@.": + "ERROR: openssl req terminó con el código %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "ERROR: openssl pkcs12 terminó con el código %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Importando el certificado en %@ (con autorización previa de /usr/bin/codesign, para que no pida la contraseña del llavero cada vez)...", + "ERROR: security import exited with code %@.": + "ERROR: security import terminó con el código %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> Confiando en el certificado SOLO para firmar código...", + "ERROR: security add-trusted-cert exited with code %@.": + "ERROR: security add-trusted-cert terminó con el código %@.", + "Done. Certificate '%@' is now available to codesign.": + "Listo. El certificado '%@' ya está disponible para codesign.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "El próximo 'cloudmachine-agent build-app' lo usará automáticamente en lugar de una firma ad hoc.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "Tras ESA ÚNICA recompilación, concede el Acceso total al disco una última vez - las\nrecompilaciones posteriores ya no lo restablecerán, mientras firmes con el mismo certificado.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Comprueba si el ciclo cada hora SIGUE funcionando (fecha de la última copia CORRECTA) e informa de los fallos.", + "After this many hours without a successful backup we consider the cycle broken.": + "Pasadas tantas horas sin una copia correcta, consideramos que el ciclo está roto.", + "Only print the state, without a system notification.": + "Solo muestra el estado, sin notificación del sistema.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "Otro archivo de preferencias de Time Machine - para probar el supervisor con una muestra conocida.", + "Last successful backup: %@": + "Última copia correcta: %@", + "Last successful backup: NONE": + "Última copia correcta: NINGUNA", + "Last attempt: %@": + "Último intento: %@", + "WAITING (system startup): %@": + "EN ESPERA (arranque del sistema): %@", + "Backup cycle: OK": + "Ciclo de copias: OK", + "FAILURE: %@": + "FALLO: %@", + " %@": + " %@", + "Check the state: %@": + "Comprobar estado: %@", + "Preparing for restart": + "Preparando para reiniciar", + "Prepare for restart": + "Preparar para reiniciar", + "Prepare": + "Preparar", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> ADVERTENCIA: git rev-list falló (%@) - se usa la fecha como número de compilación.", + "Agents: %@": + "Agentes: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "NO PUEDEN INICIARSE: %@ - abre CloudMachine o ejecuta backup-health para volver a cargarlos", + "Reloaded agents that could not start: %@": + "Agentes recargados que no podían iniciarse: %@", + "Drive folder: %@": + "Carpeta de Drive: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Nombre de la carpeta de este Mac en Google Drive (por defecto, derivado del nombre del ordenador). Se define una sola vez; después no se puede cambiar.", + "Backup watchdog: %@": + "Supervisor copias: %@", + "Prints the version, the build number and the commit this binary was built from.": + "Muestra la versión, el número de compilación y el commit a partir del cual se compiló este binario.", + "Only one line, without a description.": + "Solo una línea, sin descripción.", + "Build from the working tree (outside a bundle) - no version data.": + "Compilación desde el árbol de trabajo (fuera de un paquete) - sin datos de versión.", + "Version: %@": + "Versión: %@", + "Build: %@": + "Compilación: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "ADVERTENCIA: compilado desde un árbol SUCIO - el binario contiene código que\n no está en ningún commit. El número de commit NO describe\n lo que realmente se ejecuta.", + "Saving the space limit": + "Guardando el límite de espacio", + "Measuring usage on Google Drive": + "Midiendo el uso en Google Drive", + "Google Drive did not answer - try again later.": + "Google Drive no respondió - inténtalo de nuevo más tarde.", + "Measured.": + "Medido.", + "Space limit for this Mac": + "Límite de espacio para este Mac", + "Used on Google Drive": + "Usado en Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "Medido %@. El supervisor vuelve a medir cada pocas horas.", + "Limit (GB)": + "Límite (GB)", + "Save": + "Guardar", + "Measure now": + "Medir ahora", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Cuota de Time Machine: %@ GB (70%% del límite - la copia en Drive es aproximadamente un tercio mayor que la copia de seguridad que contiene). Time Machine elimina las copias más antiguas para no superarla.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Ajusta la cuota de Time Machine: ejecuta esto en Terminal (requiere sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Conecta Google Drive: ejecuta esto en Terminal y aprueba en el navegador", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "Concede a CloudMachine el Acceso total al disco para que pueda saber si las copias se completan", + "Folder on Google Drive": + "Carpeta en Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Una carpeta por Mac. Se define una sola vez: no se puede cambiar después de conectar.", + "Use lowercase letters, digits and dashes.": + "Usa letras minúsculas, dígitos y guiones.", + "Install rclone": + "Instalar rclone", + "Open System Settings": + "Abrir Ajustes del Sistema", + "Install agents": + "Instalar agentes", + "not checked": + "sin comprobar", + "none at all": + "ninguna", + "%@ ago": + "hace %@", + "Missing: %@": + "Falta: %@", + "Google Drive not connected": + "Google Drive no conectado", + "Time Machine does not point to CloudMachine": + "Time Machine no apunta a CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "NO SE SABE si Time Machine apunta a CloudMachine - tmutil no respondió", + "Backup in progress": + "Copia en curso", + "Unknown when the last backup was made": + "Se desconoce cuándo se hizo la última copia", + "There is no completed backup at all": + "No hay ninguna copia completada", + "No completed backup for %@": + "Ninguna copia completada desde hace %@", + "Ready": + "Listo", + "Not saved: %@": + "No guardado: %@", + "Installing rclone": + "Instalando rclone", + "Installing launchd agents": + "Instalando agentes de launchd", + "Starting backup": + "Iniciando la copia", + "Backup started.": + "Copia iniciada.", + "Could not start the backup.": + "No se pudo iniciar la copia.", + "Stopping backup": + "Deteniendo la copia", + "Backup stopped.": + "Copia detenida.", + "Could not stop the backup.": + "No se pudo detener la copia.", + "Could not prepare the AppleScript.": + "No se pudo preparar el AppleScript.", + "Unknown authorization error.": + "Error de autorización desconocido.", + "Waiting to upload": + "Pendiente de subir", + "%@ files": + "%@ archivos", + "nothing": + "nada", + "Back up now": + "Hacer copia ahora", + "Stop backup": + "Detener copia", + "Open CloudMachine": + "Abrir CloudMachine", + "Quit": + "Salir", + "Healthy": + "Correcto", + "Attention": + "Atención", + "Refreshed %@": + "Actualizado %@", + "System Status": + "Estado del sistema", + "Action needed": + "Acción necesaria", + "not measured": + "sin medir", + "rclone did not answer": + "rclone no respondió", + "Backup in Progress": + "Copia en curso", + "Files processed": + "Archivos procesados", + "Write speed": + "Velocidad de escritura", + "Operation phase": + "Fase de la operación", + "Required Setup Steps": + "Pasos de configuración necesarios", + "Copy": + "Copiar", + "Last completed backup": + "Última copia completada", + "Last backup watchdog run": + "Última ejecución del supervisor de copias", + "not read": + "sin leer", + "Everything uploaded": + "Todo subido", + "File upload errors": + "Errores al subir archivos", + "Google Drive Credentials (OAuth 2.0)": + "Credenciales de Google Drive (OAuth 2.0)", + "Keychain OK": + "Llavero correcto", + "No custom keys": + "Sin claves propias", + "Paste client_id...": + "Pega client_id...", + "Paste client_secret...": + "Pega client_secret...", + "Save securely in the Keychain": + "Guardar de forma segura en el Llavero", + "Refresh": + "Actualizar", + "Overview": + "Resumen", + "Backups": + "Copias", + "Storage": + "Almacenamiento", + "Settings": + "Ajustes", + "Current status: %@": + "Estado actual: %@", + "Does not point to CloudMachine": + "No apunta a CloudMachine", + "tmutil did not answer": + "tmutil no respondió", + "Backing up: %@ of %@": + "Copiando: %@ de %@", + "%@ of %@": + "%@ de %@", + "Copied": + "Copiado", + "No backup is running": + "No hay ninguna copia en curso", + "Time Machine starts the next one on its own schedule.": + "Time Machine inicia la siguiente según su propio calendario.", + "Backup cycle": + "Ciclo de copias", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB en %@ bandas, %@ subiendo", + "%@ bands": + "%@ bandas", + "%@ fragments abandoned - only in the machine": + "%@ fragmentos abandonados - solo en la máquina", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 responde en el Mac: Lima reenvía el control remoto de rclone de la máquina, que no tiene contraseña. Cualquier página web abierta en un navegador puede enviarle comandos, incluido borrar la copia en Google Drive. Añade a la máquina la regla portForwards de vm/cmsmb.yaml y reiníciala (consulta vm/README.md).", + "A service in the CloudMachine machine is not running": + "Un servicio de la máquina de CloudMachine no está en marcha", + "Address": + "Dirección", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Instalación de agentes INCOMPLETA - %@ de %@ no se instalaron:\n%@\n%@\nCada agente que falta es una función que ha dejado de funcionar sin avisar (vm-guard vigila el búfer de la máquina, backup-health informa de los fallos). Corrige la causa y repite la instalación.", + "All running": + "Todo en marcha", + "Also install the launchd agents (same as install-launchd).": + "Instala también los agentes de launchd (igual que install-launchd).", + "At most this many minutes of waiting for the upload.": + "Como máximo, esta cantidad de minutos de espera por la subida.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "Al llegar al límite, cada banda nueva falla con EMFILE y la copia se detiene. Comprueba: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Caché en el disco de la máquina", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Conectado a Google Drive, pero no se pudo crear la carpeta '%@' - sin ella la máquina no tiene dónde guardar la copia. Revisa los permisos de la cuenta e inténtalo de nuevo.", + "Convert the image": + "Convertir la imagen", + "Converting the image to 32 MB bands": + "Convirtiendo la imagen a bandas de 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "No se pudo comprobar con la conexión actual si la copia está en Google Drive (%@), así que el remote '%@' NO se reemplazó: sin esa respuesta no se puede contrastar el nuevo inicio de sesión.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Descarga el binario oficial de rclone en ~/.cloudmachine/bin (inicio de sesión de Google y rclone.conf de la máquina).", + "Free in the machine": + "Libre en la máquina", + "Free in the machine: %@": + "Libre en la máquina: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "Genera e instala los agentes de launchd (app, supervisor de copias, arranque de la máquina, guardián de la máquina).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "Instala Lima, que ejecuta la máquina de CloudMachine: ejecuta esto en Terminal", + "Install rclone (signs in to Google Drive for the machine)": + "Instalar rclone (inicia sesión en Google Drive para la máquina)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Instalar los agentes en segundo plano (arranque de la máquina, guardián del búfer, supervisor de copias)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Instala rclone mediante Homebrew - CloudMachine usa el de install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, token y mapped/ de la imagen de la copia existen solo en el disco de la máquina; sin ellos no se pueden restaurar las bandas de %@. La copia (tm-meta-sync, cada 15 min) va a %@. Comprueba: cloudmachine-agent vm-status y, en la máquina: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima dice que la máquina está en marcha, pero un comando en ella no respondió. Sin él no se sabe nada de Samba, rclone ni de la subida. Comprueba: cloudmachine-agent vm-status", + "Machine": + "Máquina", + "Machine %@": + "Máquina %@", + "Machine & Upload Status": + "Estado de la máquina y la subida", + "Machine buffer": + "Búfer de la máquina", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Ningún destino de Time Machine es el recurso compartido de la máquina (smb://tm@
/CloudMachine) - no se hacen copias allí. El comando lo imprime: cloudmachine-agent vm-setup", + "Not running: %@": + "No está en marcha: %@", + "Not set up": + "Sin configurar", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "Cuando se agote, rclone deja de subir, el búfer de la máquina se llena y se dejan de hacer copias. Con un crecimiento de ~600 MB por ciclo horario son unos %@ días.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "O falta rclone.conf: este Mac ya configuró la máquina de CloudMachine, así que no se conecta de nuevo a ciegas. Restaura el archivo desde una copia (la máquina guarda la suya en %@). Para conectar de todos modos, crea un archivo vacío en la ruta que imprime `%@ config file` y ejecuta de nuevo - se conserva la carpeta existente.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Apunta Time Machine a la máquina: ejecuta esto en Terminal (requiere sudo; Copiar incluye la contraseña)", + "Points to the machine": + "Apunta a la máquina", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Prepara el reinicio: detiene la copia, espera un rato a que termine la subida y después detiene la máquina de forma limpia.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "La lectura del destino de Time Machine no respondió en %@ s. Así se comporta tmutil cuando su destino se queda colgado.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "El remote '%@' NO se reemplazó. El nuevo inicio de sesión recibe el alcance 'drive.file', que solo ve los archivos creados con su propio client_id. La copia existente probablemente la creó la conexión actual y dejaría de ser visible para ella. Antes de escribir nada, el nuevo token se contrasta con la copia existente y el reemplazo se cancela si no la ve. La máquina conserva su propia copia de la configuración hasta vm-setup --replace-rclone-config. Para continuar, ejecuta de nuevo con --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Control remoto: ABIERTO en el Mac en 127.0.0.1:5572 - cualquier página web puede enviar comandos a rclone; consulta vm/README.md (portForwards)", + "Running": + "En marcha", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone o punchfs de la máquina no está activo, así que Time Machine no tiene dónde escribir o las bandas no llegan a Google Drive. Comprueba: cloudmachine-agent vm-status", + "Service %@": + "Servicio %@", + "Services": + "Servicios", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "Configurar la máquina de CloudMachine (la primera vez descarga Ubuntu - varios minutos)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "Configurar de nuevo la máquina de CloudMachine, para que imprima el comando de Time Machine", + "Set up the machine": + "Configurar la máquina", + "Setting up the CloudMachine machine": + "Configurando la máquina de CloudMachine", + "Start the CloudMachine machine": + "Iniciar la máquina de CloudMachine", + "Start the machine": + "Iniciar la máquina", + "Starting the CloudMachine machine": + "Iniciando la máquina de CloudMachine", + "Still to upload: %@ GiB": + "Pendiente de subir: %@ GiB", + "Stopping the Time Machine backup...": + "Deteniendo la copia de Time Machine...", + "Stopping the machine %@...": + "Deteniendo la máquina %@...", + "The CloudMachine machine does not answer": + "La máquina de CloudMachine no responde", + "The CloudMachine machine is not running": + "La máquina de CloudMachine no está en marcha", + "The CloudMachine machine is not set up yet": + "La máquina de CloudMachine aún no está configurada", + "The CloudMachine machine is stopped": + "La máquina de CloudMachine está detenida", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "La copia se detiene, la subida dispone de hasta 30 minutos y después la máquina se apaga de forma limpia. Vuelve a iniciarse en el próximo inicio de sesión.", + "The machine %@ is not running - nothing to prepare.": + "La máquina %@ no está en marcha - no hay nada que preparar.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "La máquina está detenida y todo llegó a Google Drive. Puedes reiniciar el Mac; la máquina se inicia de nuevo al iniciar sesión.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "La máquina está detenida. %@ GiB aún no habían llegado a Google Drive - se conservan en el búfer de la máquina y se subirán tras el próximo inicio. Puedes reiniciar el Mac.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "La máquina está detenida. rclone no indicó cuánto quedaba por subir; lo que no se subió se conserva en el búfer de la máquina y se subirá tras el próximo inicio. Puedes reiniciar el Mac.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "El disco de la máquina es un archivo de este disco y crece a medida que se llena el búfer de subida. Sin espacio libre, la máquina no puede escribir el búfer y las instantáneas locales de Time Machine tampoco tienen dónde guardarse.", + "The image's metadata has never been copied to Drive": + "Los metadatos de la imagen nunca se han copiado a Drive", + "The image's metadata was last copied to Drive %@ ago": + "Los metadatos de la imagen se copiaron a Drive por última vez hace %@", + "The machine's disk is running out of space (%@ GB)": + "Al disco de la máquina le queda poco espacio (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "El nuevo inicio de sesión NO ve la copia existente (%@), así que el remote '%@' NO se reemplazó y rclone.conf no ha cambiado. Conserva la conexión actual o inicia sesión con la credencial (client_id) que creó la copia.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "El búfer de subida está en este disco. El guardián pausa Time Machine antes de que se llene; si la subida no se pone al día, las copias siguen en pausa.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Estas bandas existen solo en el búfer de la máquina. La copia en Google Drive está INCOMPLETA y puede que no se abra.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine hace la copia en la máquina, así que sin ella no se hace ninguna copia. Inicia la máquina: limactl start %@ (o con el botón «Iniciar la máquina» de la app).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine no detuvo su copia en 2 minutos (o tmutil no respondió) - la máquina NO se detuvo. Inténtalo de nuevo en un momento.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine ha creado su imagen: detén la copia y convierte la imagen a bandas de 32 MB", + "To upload": + "Por subir", + "Unknown whether the CloudMachine machine is running": + "Se desconoce si la máquina de CloudMachine está en marcha", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Esperando la subida a Google Drive (máximo %@ min)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "Con --replace-existing: confirma que el nuevo inicio de sesión (alcance 'drive.file') puede no ver la copia existente. El nuevo token se sigue contrastando antes con la copia.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "Sin él no hay forma de saber si algo llegó a Drive - el guardián de la máquina queda ciego.", + "limactl did not answer": + "limactl no respondió", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl no respondió (o no está instalado). Eso no significa que la máquina esté caída, sino que nadie lo ha comprobado.", + "limactl start failed: %@": + "limactl start falló: %@", + "limactl stop failed: %@": + "limactl stop falló: %@", + "punchfs is close to its open-file limit": + "punchfs está cerca de su límite de archivos abiertos", + "punchfs open files": + "Archivos abiertos de punchfs", + "rclone's remote control is open on this Mac": + "El control remoto de rclone está abierto en este Mac", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') devolvió un error, así que no se sabe si el disco de la máquina aún puede crecer en este Mac.", + "Google Drive's daily upload limit stops the upload": + "El límite diario de subida de Google Drive detiene la subida", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google rechazó una subida por última vez hace %@ (750 GB al día). Las copias desde entonces están solo en el búfer de la máquina de este Mac. rclone reintenta cada 5 min y se reanuda solo cuando pasa el límite; el guardián pausa Time Machine si esperan más de %@ GiB.", + "Usage on Google Drive is not being measured": + "No se está midiendo el uso de Google Drive", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "La última medición (%@ GB) es de %@, hace %@ - rclone size no ha respondido desde entonces. Hasta que lo haga, nada vigila el límite de %@ GB: las alarmas del 90%% y del 100%% quedan en silencio. Comprueba vm-status o pulsa Medir ahora en la ventana.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size no ha respondido ni una sola vez. Hasta que lo haga, nada vigila el límite de %@ GB: las alarmas del 90%% y del 100%% quedan en silencio. Comprueba vm-status o pulsa Medir ahora en la ventana.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Guardado en el Llavero. Se usarán al conectar Google Drive (configure-remote).", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Guardado en el Llavero. La conexión existente con Google Drive conserva su client_id anterior, y en este Mac debe seguir así: una conexión hecha con las claves nuevas (alcance 'drive.file') no puede ver la copia creada con la anterior. No reemplaces aquí la conexión; las claves nuevas son para un Mac que aún no está conectado.", + "it is not there for the new token": + "no está para el nuevo token", + "Cancel": + "Cancelar", + "ACTION NEEDED": + "ACCIÓN NECESARIA", + "WILL PASS BY ITSELF — DO NOTHING": + "SE RESOLVERÁ SOLO — NO HAGAS NADA", + "UNKNOWN — CHECK AGAIN SHORTLY": + "SE DESCONOCE — COMPRUEBA DE NUEVO EN BREVE", + "ALL GOOD": + "TODO BIEN", + "Upload is not working": + "La subida no funciona", + "Upload stopped — no space left on Google Drive": + "Subida detenida — no queda espacio en Google Drive", + "%@ backup fragments not uploaded": + "%@ fragmentos de copia sin subir", + "Upload cannot keep up with writes": + "La subida no puede seguir el ritmo de escritura", + "Upload paused — Google daily limit": + "Subida en pausa — límite diario de Google", + "Uploading to Google Drive — %@ queued": + "Subiendo a Google Drive — %@ en cola", + "Everything uploaded to Google Drive": + "Todo subido a Google Drive", + "Unknown what is waiting in the queue": + "Se desconoce qué hay en la cola", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "No hay conexión con Google Drive, así que las copias solo se hacen en este Mac. Si esto no se resuelve solo en unos minutos, revisa la red y la conexión con Drive.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "No queda espacio en Google Drive. Esto NO se resolverá solo — tienes que liberar espacio en Drive. Hasta entonces Time Machine está en pausa para que no llene el disco de este Mac.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ fragmentos de copia no se pudieron subir y rclone dejó de intentarlo. Estos fragmentos existen solo en este Mac, así que la copia en Drive está incompleta. Hay que revisarlo.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine escribe más rápido de lo que sube, y el búfer se ha llenado. La copia se pausará hasta que la subida se ponga al día — es una protección para no llenar el disco, no un fallo.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google acepta 750 GB al día y ese límite se ha agotado. No hay nada que hacer: el límite se renueva solo, normalmente en unas horas. Mientras tanto, las copias de Time Machine se hacen con normalidad y esperan en el búfer — se subirán en cuanto Google vuelva a aceptar.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ fragmentos de copia están en cola y de camino a Drive.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "No hay nada en cola — la copia en Google Drive está completa.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone no respondió a la consulta sobre la cola, así que se desconoce cuántas copias siguen esperando a subirse. Esto no significa que algo se haya roto — con carga la respuesta puede tardar. Solo significa que ahora mismo nadie lo sabe. Si persiste, la comprobación del ciclo de copias lo indicará.", + "unknown error": + "error desconocido", + "rclone lsf ended with an error": + "rclone lsf terminó con un error", + "This Mac is close to its space limit on Google Drive": + "Este Mac está cerca de su límite de espacio en Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ GB de %@ GB usados. Time Machine elimina las copias más antiguas para no superar su cuota; comprueba que la cuota esté ajustada (vm-status).", + "This Mac is over its space limit on Google Drive": + "Este Mac ha superado su límite de espacio en Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ GB de %@ GB usados. Ajusta la cuota de Time Machine (comando en la ventana de la app o en vm-status) o aumenta el límite.", + "not set": + "sin ajustar", + "%@ GB - usage not measured yet": + "%@ GB - uso aún sin medir", + "%@ of %@ GB used (%@%%)": + "%@ de %@ GB usados (%@%%)", + "The limit must be a whole number of GB above zero.": + "El límite debe ser un número entero de GB mayor que cero.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "No se puede leer machines.json, así que no se sobrescribió. Corrígelo o elimínalo primero.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' no es un nombre de carpeta válido: usa letras minúsculas, dígitos y guiones.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Este Mac ya hace copias en la carpeta '%@'. Cambiar a '%@' iniciaría una copia nueva y vacía y dejaría huérfana la existente, así que no se cambió nada.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Este Mac ya tiene una instalación de CloudMachine, cuya copia está en la carpeta '%@'. Cambiar a '%@' la dejaría huérfana, así que no se cambió nada.", + "Could not save the folder name to %@: %@": + "No se pudo guardar el nombre de la carpeta en %@: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew no está instalado. Instálalo manualmente: https://brew.sh", + "Installing rclone failed: %@": + "Falló la instalación de rclone: %@", + "Installed rclone.": + "rclone instalado.", + "Own Google credentials: set.": + "Credenciales propias de Google: definidas.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "INCOMPLETO: falta %@ - rclone usará de todos modos el client_id compartido de rclone.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Sin credenciales propias - rclone usa el client_id compartido, con límite de uso conjunto y que se retirará en 2026.", + "Empty value - not saving.": + "Valor vacío - no se guarda.", + "Keychain refused: %@": + "El Llavero lo rechazó: %@", + "DIRTY-TREE": + "ÁRBOL-SUCIO", + "Cannot create the working directory: %@": + "No se puede crear el directorio de trabajo: %@", + "Could not read the rclone version number.": + "No se pudo leer el número de versión de rclone.", + "Could not download %@.": + "No se pudo descargar %@.", + "No entry for %@ in SHA256SUMS.": + "No hay ninguna entrada para %@ en SHA256SUMS.", + "Could not compute the checksum.": + "No se pudo calcular la suma de verificación.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "La suma de verificación SHA256 no coincide - NO se instala.\n esperada: %@\n calculada: %@", + "Could not unpack the archive.": + "No se pudo descomprimir el archivo.", + "Could not install the binary: %@": + "No se pudo instalar el binario: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %@ instalado en %@ (la suma de verificación SHA256 coincide).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ no respondió en el tiempo previsto (el proceso quedó huérfano en segundo plano).", + "Cannot launch %@: %@": + "No se puede iniciar %@: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "El remote '%@' ya existe y NO se tocó.\nSobrescribirlo reemplaza el token y el alcance de permisos; una credencial con el alcance 'drive.file' no ve los archivos creados por la anterior, así que la copia existente quedaría inaccesible.\nSi de verdad quieres reemplazarlo, primero haz una copia de ~/.config/rclone/rclone.conf y ejecuta de nuevo con --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "No se pudo comprobar si el remote '%@' ya existe (rclone listremotes no respondió o falló), así que no se cambió nada. Ejecuta `%@ listremotes` para ver el error y vuelve a intentarlo.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "No se pudo comprobar si este Mac ya tiene una instalación de CloudMachine (rclone no respondió), así que no se eligió ninguna carpeta. Inténtalo de nuevo en un momento.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize falló (%@). Si falta ese binario, empieza con: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "No se pudo leer el token de la salida de rclone authorize.", + "rclone config create failed.": + "rclone config create falló.", + "Connected to Google Drive as remote '%@', folder %@.": + "Conectado a Google Drive como remote '%@', carpeta %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil no responde - se desconoce adónde va la copia", + "No successful backup for %@": + "Ninguna copia correcta desde hace %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Última copia COMPLETADA: %@. El ciclo es cada hora, así que son %@ ejecuciones perdidas.", + "There is NOT A SINGLE successful backup": + "NO HAY NINGUNA copia correcta", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Las preferencias de Time Machine no contienen la fecha de ninguna copia completada para este destino.", + "The last backup attempt did not end in a backup": + "El último intento de copia no terminó en una copia", + "The attempt at %@ is newer than the last successful backup at %@.": + "El intento de %@ es más reciente que la última copia correcta de %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine informa de un error en la última ejecución (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Un RESULT distinto de cero en las preferencias de Time Machine significa que la ejecución no tuvo éxito.", + "rclone failed to upload %@ files": + "rclone no pudo subir %@ archivos", + "Buffer full of nothing but unsent data": + "Búfer lleno solo de datos sin enviar", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone no tiene nada más que expulsar del búfer - la subida no puede seguir el ritmo o se ha atascado.", + "The rclone control interface is not responding": + "La interfaz de control de rclone no responde", + "Google Drive is running out of space (%@ GB)": + "A Google Drive le queda poco espacio (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Al disco del Mac le queda poco espacio (%@ GB)", + "Cannot read the Time Machine preferences": + "No se pueden leer las preferencias de Time Machine", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ no se puede leer - lo más habitual es que falte el Acceso total al disco. Sin este archivo se DESCONOCE cuándo se hizo la última copia, así que lo tratamos como un fallo, no como ausencia de problema.", + "Cannot measure free space on the Mac's disk": + "No se puede medir el espacio libre en el disco del Mac", + "%@ days": + "%@ días", + "CloudMachine: backup is not working": + "CloudMachine: la copia no funciona", + "unknown reason": + "motivo desconocido", + "osascript did not show the notification (permissions or no graphical session)": + "osascript no mostró la notificación (permisos o sin sesión gráfica)", + "UNDELIVERED ALARM: %@": + "ALARMA SIN ENTREGAR: %@", + "from %@, reason: %@": + "de %@, motivo: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "La notificación del sistema no se entregó - verás esta alarma SOLO aquí.", + "%@ (%@ ago)": + "%@ (hace %@)", + "%@ - marker from the FUTURE": + "%@ - marca del FUTURO", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (hace %@) - ES POSIBLE QUE EL SUPERVISOR NO ESTÉ EN MARCHA", + "NEVER - the watchdog has not recorded a single run": + "NUNCA - el supervisor no ha registrado ninguna ejecución", + "Could not find the launchd/ directory with templates.": + "No se encontró el directorio launchd/ con las plantillas.", + "Could not find the compiled cloudmachine-agent binary.": + "No se encontró el binario compilado de cloudmachine-agent.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "ABORTADO: no se pudo colocar cloudmachine-agent en una ubicación estable\n(%@) - lo más habitual es falta de espacio o de permisos.\nNO se instalan agentes que apunten a %@: esa ruta\ndesaparece con el próximo `swift build` o `git clean`, y las copias se detienen\nsin ninguna señal visible.", + "ABORTED: %@": + "ABORTADO: %@", + "Could not list the templates in %@.": + "No se pudieron listar las plantillas en %@.", + "could not read the template %@": + "no se pudo leer la plantilla %@", + "could not write %@ (lack of space or permissions)": + "no se pudo escribir %@ (falta de espacio o de permisos)", + "launchctl load refused to load %@": + "launchctl load se negó a cargar %@", + "NOT A SINGLE agent was loaded.": + "NO se cargó NINGÚN agente.", + "Only these went in: %@.": + "Solo se instalaron estos: %@.", + "Could not load any launchd agent.": + "No se pudo cargar ningún agente de launchd.", + "Installed agents: %@": + "Agentes instalados: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " ADVERTENCIA: cerca del límite - las bandas nuevas fallarán con EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands en Google Drive no está vacío - puede contener otra copia. NO se sobrescribe; compruébalo a mano.", + "Address: %@": + "Dirección: %@", + "Already prepared (%@ exists) - nothing to do.": + "Ya preparado (%@ existe) - no hay nada que hacer.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Convierte la imagen nueva y vacía de Time Machine en la máquina a bandas de 32 MB y las mueve a Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "Copia rclone.conf en la máquina aunque ya tenga uno.", + "Copying the converted image into the machine failed: %@": + "Falló la copia de la imagen convertida en la máquina: %@", + "Copying the image to the Mac failed: %@": + "Falló la copia de la imagen al Mac: %@", + "Could not ask Lima about the machine: %@": + "No se pudo consultar a Lima sobre la máquina: %@", + "Could not carry the Time Machine files over: %@": + "No se pudieron trasladar los archivos de Time Machine: %@", + "Could not check the image in the machine.": + "No se pudo comprobar la imagen en la máquina.", + "Could not copy the rclone configuration into the machine.": + "No se pudo copiar la configuración de rclone en la máquina.", + "Could not create %@ on Google Drive: %@": + "No se pudo crear %@ en Google Drive: %@", + "Could not create %@: %@": + "No se pudo crear %@: %@", + "Could not find the vm/ directory with the machine template.": + "No se encontró el directorio vm/ con la plantilla de la máquina.", + "Could not read the image size.": + "No se pudo leer el tamaño de la imagen.", + "Could not set the SMB password of user %@ in the machine.": + "No se pudo establecer la contraseña SMB del usuario %@ en la máquina.", + "Could not stop smbd in the machine.": + "No se pudo detener smbd en la máquina.", + "Could not write %@ in the machine.": + "No se pudo escribir %@ en la máquina.", + "Could not write the password file %@.": + "No se pudo escribir el archivo de contraseña %@.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "Crea o inicia la máquina de CloudMachine (Lima), le da la configuración de rclone y una contraseña SMB, e imprime el comando de Time Machine.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "Creando la máquina %@ (el primer inicio descarga Ubuntu e instala paquetes - varios minutos)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Listo: %@ tiene bandas de %@ MB en Google Drive; el original se conserva en %@ en la máquina. Inicia la copia: tmutil startbackup", + "exit code %@, no message": + "código de salida %@, sin mensaje", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Metadatos imagen: NUNCA copiados a %@ - comprueba tm-meta-sync en la máquina", + "Image metadata: copied %@ ago to %@": + "Metadatos imagen: copiados hace %@ a %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Metadatos imagen: última copia hace %@ - RETRASADO (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Metadatos imagen: aún sin copiar - espera a vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "Copia %@, en pausa por el guardián %@: %@", + "Free in machine: %@ GiB": + "Libre en máquina: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n encontró problemas: %@", + "Google Drive folder: %@": + "Carpeta de Google Drive: %@", + "hdiutil attach of the converted image failed: %@": + "Falló hdiutil attach de la imagen convertida: %@", + "hdiutil convert failed: %@": + "Falló hdiutil convert: %@", + "Image name in the machine (default: from the computer name).": + "Nombre de la imagen en la máquina (por defecto, derivado del nombre del ordenador).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "FALLÓ la instalación de la imagen convertida: %@\nsmbd queda DETENIDO para que Time Machine no abra una imagen a medio instalar. El original está en %@ en la máquina.", + "limactl create failed: %@": + "limactl create falló: %@", + "limactl list failed: %@": + "limactl list falló: %@", + "limactl not found - install Lima: brew install lima": + "No se encontró limactl - instala Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start falló: %@\nEl registro propio de la máquina: %@", + "Machine %@ is running.": + "La máquina %@ está en marcha.", + "Machine %@ was already running.": + "La máquina %@ ya estaba en marcha.", + "Machine: %@ (%@)": + "Máquina: %@ (%@)", + "Machine: %@": + "Máquina: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Máquina: sin crear - ejecuta: cloudmachine-agent vm-setup", + "no answer within the time limit": + "sin respuesta dentro del tiempo límite", + "No image %@ in the machine.": + "No hay imagen %@ en la máquina.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "Aún no hay ninguna imagen en la máquina - apunta Time Machine al recurso compartido y deja que cree una primero.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "No hay configuración de rclone en %@ - conecta primero Google Drive (configure-remote).", + "no SMB destination": + "sin destino SMB", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "Una comprobación del búfer de subida de la máquina: pausa Time Machine cuando se llena y reanuda lo que pausó.", + "Packing the converted image failed: %@": + "Falló el empaquetado de la imagen convertida: %@", + "Packing the image failed: %@": + "Falló el empaquetado de la imagen: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "La máquina no responde (rclone rc) - el guardián no haría nada.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Solo imprime lo que decidiría el guardián - para probar umbrales en una máquina desechable.", + "Pause above this many GiB in the buffer.": + "Pausar por encima de esta cantidad de GiB en el búfer.", + "Pause when the machine has less free than this, in GiB.": + "Pausar cuando a la máquina le quede menos libre que esto, en GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Apunta Time Machine a la máquina (una sola vez, requiere una contraseña de administrador):", + "punchfs files: %@ open, limit %@": + "Archivos punchfs: %@ abiertos, límite %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "La configuración de rclone ya está en la máquina - se conserva (--replace-rclone-config la reemplaza).", + "rclone configuration copied into the machine.": + "Configuración de rclone copiada en la máquina.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm o punchfs no está en marcha en la máquina - consulta cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Reanudar por debajo de esta cantidad de GiB (solo una copia que pausó el guardián).", + "Service %@: %@": + "Servicio %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "Hay varias imágenes en la máquina (%@) - elige una con --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Muestra la máquina: dirección, servicios, búfer de subida, espacio libre y el destino de Time Machine.", + "SMB password stored in %@ (mode 600).": + "Contraseña SMB guardada en %@ (modo 600).", + "The converted image does not have %@-byte bands.": + "La imagen convertida no tiene bandas de %@ bytes.", + "The converted image has no APFS partition.": + "La imagen convertida no tiene partición APFS.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "La imagen ya ocupa %@ MB - este comando solo convierte una imagen nueva y vacía (de menos de %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "La imagen está cifrada - no se admite convertir imágenes cifradas.", + "The image was not changed; smbd started again.": + "La imagen no se modificó; smbd se inició de nuevo.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "La máquina no responde - ¿está en marcha? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "La máquina no tiene dirección en la red vzNAT.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "Los servicios de la máquina no se iniciaron - comprueba: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine está haciendo una copia - deténla primero: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: NO apunta a la máquina (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil no respondió", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil no respondió - no se toca la imagen mientras se desconozca su estado.", + "unknown": + "desconocido", + "Unpacking the image failed: %@": + "Falló la descompresión de la imagen: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "Pendiente de subir: %@ GiB en %@ bandas, subiendo %@ (caché en disco %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "Se excluyó %@ (la máquina y su búfer de subida) de Time Machine.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "ADVERTENCIA: no se pudo excluir %@ de Time Machine - ejecuta: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Búfer de subida: sin respuesta de rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Cuando Time Machine haya creado su imagen vacía, detén la copia (tmutil stopbackup) y ejecuta: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "Sin enviar %@ GiB, libres %@ GiB (pausa con más de %@ GiB sin enviar o menos de %@ GiB libres, reanuda por debajo de %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Subida: el límite diario de Google rechazó una subida hace %@ - rclone reintenta cada 5 min y se reanuda solo", + "no": + "no", + "running": + "en marcha", + "stopped": + "detenido", + "yes": + "sí", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nLa plantilla anterior está en %@ - cópiala de nuevo sobre lima.yaml y ejecuta limactl start %@.", + "Could not read this app's machine template (limactl template copy).": + "No se pudo leer la plantilla de máquina de esta app (limactl template copy).", + "Could not replace %@: %@": + "No se pudo reemplazar %@: %@", + "Machine %@ already runs this app's template.": + "La máquina %@ ya usa la plantilla de esta app.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "La máquina %@ ahora usa la plantilla de esta app; la anterior está en %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Pasa la máquina a la plantilla de esta app (dos reinicios, nunca durante una copia).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "No existe la máquina %@ - créala con: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Plantilla: MÁS ANTIGUA que la de esta app - ejecuta: cloudmachine-agent vm-update", + "Template: not compared": + "Plantilla: sin comparar", + "Template: this app's": + "Plantilla: la de esta app", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "La máquina no tiene %@ - ejecuta antes cloudmachine-agent vm-setup.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "La máquina se reinició, pero no todos los servicios están en marcha - comprueba: cloudmachine-agent vm-status. La plantilla anterior está en %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "La plantilla cambia la propia máquina (%@) - eso requiere una máquina nueva, no una actualización.", + "The upload to Google Drive hangs": + "La subida a Google Drive está colgada", + "Time Machine is backing up - try again when it has finished.": + "Time Machine está haciendo una copia - inténtalo de nuevo cuando termine.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Subida: COLGADA - bandas en curso, ninguna subida desde hace %@ (¿red?); consulta /var/log/rclone-tm.log en la máquina", + "limactl stop failed - nothing was changed.": + "limactl stop falló - no se cambió nada.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone tiene bandas en curso, pero ninguna se ha subido desde hace %@ - normalmente una conexión de red rota, que rclone no notifica como error. Las copias desde entonces están solo en el búfer de la máquina. Cuando vuelva la red, la subida se reanuda sola (el 28.10.2026, en 80 s); si no, reiniciar la máquina (prepare-shutdown, limactl start) descarta las conexiones muertas.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil no respondió - no se reinicia la máquina mientras se desconozca su estado.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+fi.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+fi.swift new file mode 100644 index 0000000..5bf6873 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+fi.swift @@ -0,0 +1,951 @@ +// Finnish translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let fi: [String: String] = [ + "Space limit: %@": + "Tilaraja: %@", + " Time Machine quota not set to match - run: %@": + " Time Machine -kiintiötä ei ole asetettu vastaamaan - suorita: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Määrittää, kuinka paljon Google Drivesta tämä Mac saa käyttää, ja tulostaa Time Machine -kiintiön komennon.", + "Limit in GB.": + "Raja GB:na.", + "Limit for this Mac: %@ GB.": + "Tämän Macin raja: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Aseta nyt Time Machine -kiintiö (vaatii ylläpitäjän salasanan):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - tarkistus, Google Driven määritys ja asennus. launchd kutsuu sitä aikataulun mukaan, tai sen voi suorittaa itse Päätteessä.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "Yhdistää Google Driveen rclonen kautta (OAuth selaimessa) ja luo tämän virtuaalikoneen kansion.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Korvaa olemassa oleva remote. RISKIALTIS: korvaa tokenin ja käyttöoikeudet.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "Pakkaa build/CloudMachine.app tiedostoksi build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "VIRHE: %@ puuttuu - suorita ensin 'cloudmachine-agent build-app'", + "==> Preparing the staging folder": + "==> Valmistellaan väliaikaista kansiota", + "==> Creating %@": + "==> Luodaan %@", + "ERROR: hdiutil exited with code %@.": + "VIRHE: hdiutil päättyi koodiin %@.", + "==> Done: %@": + "==> Valmis: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "Ensimmäisellä käynnistyksellä (appia ei ole allekirjoitettu Apple Developer -tilillä):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. Avaa %@ ja vedä CloudMachine.app Ohjelmat-kansioon.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. Napsauta Finderissa CloudMachine.app-tiedostoa KAKKOSPAINIKKEELLA -> Avaa -> Avaa\n (pelkkä kaksoisnapsautus näyttää Gatekeeperin eston ”tunnistamaton kehittäjä”).", + "3. Later launches work normally, with a double-click.": + "3. Myöhemmät käynnistykset toimivat normaalisti kaksoisnapsautuksella.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "Rakentaa CloudMachine.app-apin (Release) - GUI + cloudmachine-agent hakemistoon Contents/MacOS/, sekä launchd/, vm/ ja config/ Resources-kansioon.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Binäärit Apple Siliconille ja Intelille kerralla (näin CI rakentaa julkaisun; paikallisesti tarpeeton).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> Rakennetaan CloudMachineApp + cloudmachine-agent (release) - versio %@ (%@)", + "ERROR: swift build exited with code %@.": + "VIRHE: swift build päättyi koodiin %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "VIRHE: swift build --show-bin-path ei ilmoittanut binäärien hakemistoa.", + "ERROR: no built binary found at %@": + "VIRHE: rakennettua binääriä ei löytynyt polusta %@", + "==> Assembling the .app bundle in %@": + "==> Kootaan .app-paketti kansioon %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> VAROITUS: rakennat LIKAISESTA puusta - versio ei osoita mihinkään commitiin.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "VIRHE: Resources/AppIcon.icns puuttuu - luo se: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Allekirjoitetaan paikallisella varmenteella '%@' (Täysi levyn käyttö säilyy myöhempien uudelleenrakennusten yli)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Allekirjoitetaan ad hoc (ei Apple Developer -tiliä) - suorita kerran 'cloudmachine-agent setup-signing-cert', jotta TCC-oikeudet säilyvät myöhempien uudelleenrakennusten yli", + "ERROR: codesign exited with code %@.": + "VIRHE: codesign päättyi koodiin %@.", + "Next step: %@": + "Seuraava vaihe: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Luo paikallisen itse allekirjoitetun varmenteen, jotta Täysi levyn käyttö säilyy apin myöhempien uudelleenrakennusten yli.", + "Certificate '%@' already exists in %@, nothing to do.": + "Varmenne '%@' on jo kohteessa %@, ei tehtävää.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Luodaan avain ja itse allekirjoitettu varmenne '%@'...", + "ERROR: openssl req exited with code %@.": + "VIRHE: openssl req päättyi koodiin %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "VIRHE: openssl pkcs12 päättyi koodiin %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Tuodaan varmenne kohteeseen %@ (esivaltuutetaan /usr/bin/codesign, jotta avainnipun salasanaa ei kysytä joka kerta)...", + "ERROR: security import exited with code %@.": + "VIRHE: security import päättyi koodiin %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> Luotetaan varmenteeseen VAIN koodin allekirjoitukseen...", + "ERROR: security add-trusted-cert exited with code %@.": + "VIRHE: security add-trusted-cert päättyi koodiin %@.", + "Done. Certificate '%@' is now available to codesign.": + "Valmis. Varmenne '%@' on nyt codesignin käytettävissä.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "Seuraava 'cloudmachine-agent build-app' käyttää sitä automaattisesti ad hoc -allekirjoituksen sijaan.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "TÄMÄN YHDEN uudelleenrakennuksen jälkeen myönnä Täysi levyn käyttö vielä viimeisen kerran - myöhemmät\nuudelleenrakennukset eivät enää nollaa sitä, kunhan allekirjoitat samalla varmenteella.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Tarkistaa, toimiiko tuntikierto EDELLEEN (viimeisen ONNISTUNEEN varmuuskopion päivämäärä), ja ilmoittaa vioista.", + "After this many hours without a successful backup we consider the cycle broken.": + "Näin monen tunnin jälkeen ilman onnistunutta varmuuskopiota kierron katsotaan katkenneen.", + "Only print the state, without a system notification.": + "Tulosta vain tila, ilman järjestelmäilmoitusta.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "Eri Time Machine -asetustiedosto - valvojan testaamiseen tunnetulla näytteellä.", + "Last successful backup: %@": + "Viimeisin onnistunut varmuuskopio: %@", + "Last successful backup: NONE": + "Viimeisin onnistunut varmuuskopio: EI YHTÄÄN", + "Last attempt: %@": + "Viimeisin yritys: %@", + "WAITING (system startup): %@": + "ODOTETAAN (järjestelmän käynnistys): %@", + "Backup cycle: OK": + "Varmuuskopiointikierto: OK", + "FAILURE: %@": + "VIKA: %@", + " %@": + " %@", + "Check the state: %@": + "Tarkista tila: %@", + "Preparing for restart": + "Valmistellaan uudelleenkäynnistystä", + "Prepare for restart": + "Valmistele uudelleenkäynnistystä varten", + "Prepare": + "Valmistele", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> VAROITUS: git rev-list epäonnistui (%@) - koontinumerona käytetään päivämäärää.", + "Agents: %@": + "Agentit: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "EI KÄYNNISTY: %@ - avaa CloudMachine tai suorita backup-health ladataksesi ne uudelleen", + "Reloaded agents that could not start: %@": + "Uudelleenladattiin agentit, jotka eivät käynnistyneet: %@", + "Drive folder: %@": + "Drive-kansio: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Tämän Macin kansion nimi Google Drivessa (oletus: johdettu tietokoneen nimestä). Asetetaan kerran; sitä ei voi muuttaa myöhemmin.", + "Backup watchdog: %@": + "Valvoja: %@", + "Prints the version, the build number and the commit this binary was built from.": + "Tulostaa version, koontinumeron ja commitin, josta tämä binääri on rakennettu.", + "Only one line, without a description.": + "Vain yksi rivi, ilman kuvausta.", + "Build from the working tree (outside a bundle) - no version data.": + "Koonti työpuusta (paketin ulkopuolella) - ei versiotietoja.", + "Version: %@": + "Versio: %@", + "Build: %@": + "Koonti: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "VAROITUS: rakennettu LIKAISESTA puusta - binäärissä on koodia, jota\n ei ole missään commitissa. Commitin numero EI kuvaa\n sitä, mikä todella on käynnissä.", + "Saving the space limit": + "Tallennetaan tilarajaa", + "Measuring usage on Google Drive": + "Mitataan käyttöä Google Drivessa", + "Google Drive did not answer - try again later.": + "Google Drive ei vastannut - yritä myöhemmin uudelleen.", + "Measured.": + "Mitattu.", + "Space limit for this Mac": + "Tämän Macin tilaraja", + "Used on Google Drive": + "Käytössä Google Drivessa", + "Measured %@. The watchdog measures again every few hours.": + "Mitattu %@. Valvoja mittaa uudelleen muutaman tunnin välein.", + "Limit (GB)": + "Raja (GB)", + "Save": + "Tallenna", + "Measure now": + "Mittaa nyt", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Time Machine -kiintiö: %@ GB (70 %% rajasta - Driven kopio on noin kolmanneksen suurempi kuin sen sisällä oleva varmuuskopio). Time Machine poistaa vanhimmat varmuuskopiot pysyäkseen sen sisällä.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Aseta Time Machine -kiintiö: suorita tämä Päätteessä (vaatii sudon)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Yhdistä Google Drive: suorita tämä Päätteessä ja hyväksy selaimessa", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "Myönnä CloudMachinelle Täysi levyn käyttö, jotta se voi tarkistaa, valmistuvatko varmuuskopiot", + "Folder on Google Drive": + "Kansio Google Drivessa", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Yksi kansio per Mac. Asetetaan kerran - sitä ei voi muuttaa yhdistämisen jälkeen.", + "Use lowercase letters, digits and dashes.": + "Käytä pieniä kirjaimia, numeroita ja tavuviivoja.", + "Install rclone": + "Asenna rclone", + "Open System Settings": + "Avaa Järjestelmäasetukset", + "Install agents": + "Asenna agentit", + "not checked": + "ei tarkistettu", + "none at all": + "ei yhtään", + "%@ ago": + "%@ sitten", + "Missing: %@": + "Puuttuu: %@", + "Google Drive not connected": + "Google Drivea ei ole yhdistetty", + "Time Machine does not point to CloudMachine": + "Time Machine ei osoita CloudMachineen", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "EI TIEDETÄ, osoittaako Time Machine CloudMachineen - tmutil ei vastannut", + "Backup in progress": + "Varmuuskopiointi käynnissä", + "Unknown when the last backup was made": + "Ei tiedetä, milloin viimeisin varmuuskopio tehtiin", + "There is no completed backup at all": + "Valmista varmuuskopiota ei ole lainkaan", + "No completed backup for %@": + "Ei valmista varmuuskopiota %@ aikana", + "Ready": + "Valmis", + "Not saved: %@": + "Ei tallennettu: %@", + "Installing rclone": + "Asennetaan rclonea", + "Installing launchd agents": + "Asennetaan launchd-agentteja", + "Starting backup": + "Käynnistetään varmuuskopiointi", + "Backup started.": + "Varmuuskopiointi käynnistetty.", + "Could not start the backup.": + "Varmuuskopiointia ei voitu käynnistää.", + "Stopping backup": + "Pysäytetään varmuuskopiointi", + "Backup stopped.": + "Varmuuskopiointi pysäytetty.", + "Could not stop the backup.": + "Varmuuskopiointia ei voitu pysäyttää.", + "Could not prepare the AppleScript.": + "AppleScriptiä ei voitu valmistella.", + "Unknown authorization error.": + "Tuntematon valtuutusvirhe.", + "Waiting to upload": + "Odottaa lähetystä", + "%@ files": + "Tiedostoja: %@", + "nothing": + "ei mitään", + "Back up now": + "Varmuuskopioi nyt", + "Stop backup": + "Pysäytä varmuuskopiointi", + "Open CloudMachine": + "Avaa CloudMachine", + "Quit": + "Lopeta", + "Healthy": + "Kunnossa", + "Attention": + "Huomio", + "Refreshed %@": + "Päivitetty %@", + "System Status": + "Järjestelmän tila", + "Action needed": + "Vaatii toimenpiteitä", + "not measured": + "ei mitattu", + "rclone did not answer": + "rclone ei vastannut", + "Backup in Progress": + "Varmuuskopiointi käynnissä", + "Files processed": + "Käsitellyt tiedostot", + "Write speed": + "Kirjoitusnopeus", + "Operation phase": + "Toiminnon vaihe", + "Required Setup Steps": + "Tarvittavat asennusvaiheet", + "Copy": + "Kopioi", + "Last completed backup": + "Viimeisin valmis varmuuskopio", + "Last backup watchdog run": + "Valvojan viimeisin ajo", + "not read": + "ei luettu", + "Everything uploaded": + "Kaikki lähetetty", + "File upload errors": + "Tiedostojen lähetysvirheet", + "Google Drive Credentials (OAuth 2.0)": + "Google Driven tunnistetiedot (OAuth 2.0)", + "Keychain OK": + "Avainnippu OK", + "No custom keys": + "Ei omia avaimia", + "Paste client_id...": + "Liitä client_id...", + "Paste client_secret...": + "Liitä client_secret...", + "Save securely in the Keychain": + "Tallenna turvallisesti Avainnippuun", + "Refresh": + "Päivitä", + "Overview": + "Yleiskatsaus", + "Backups": + "Varmuuskopiot", + "Storage": + "Tallennustila", + "Settings": + "Asetukset", + "Current status: %@": + "Nykyinen tila: %@", + "Does not point to CloudMachine": + "Ei osoita CloudMachineen", + "tmutil did not answer": + "tmutil ei vastannut", + "Backing up: %@ of %@": + "Varmuuskopioidaan: %@ / %@", + "%@ of %@": + "%@ / %@", + "Copied": + "Kopioitu", + "No backup is running": + "Varmuuskopiointia ei ole käynnissä", + "Time Machine starts the next one on its own schedule.": + "Time Machine käynnistää seuraavan oman aikataulunsa mukaan.", + "Backup cycle": + "Varmuuskopiointikierto", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB, paloja %@, lähetetään %@", + "%@ bands": + "Paloja: %@", + "%@ fragments abandoned - only in the machine": + "Hylättyjä osia: %@ - vain virtuaalikoneessa", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 vastaa Macissa: Lima välittää virtuaalikoneen rclonen etähallinnan, jolla ei ole salasanaa. Mikä tahansa selaimessa avoinna oleva verkkosivu voi lähettää sille komentoja - myös poistaa varmuuskopion Google Drivesta. Lisää virtuaalikoneeseen portForwards-sääntö tiedostosta vm/cmsmb.yaml ja käynnistä se uudelleen (katso vm/README.md).", + "A service in the CloudMachine machine is not running": + "CloudMachine-virtuaalikoneen palvelu ei ole käynnissä", + "Address": + "Osoite", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Agenttien asennus on EPÄTÄYDELLINEN - %@/%@ ei asentunut:\n%@\n%@\nJokainen puuttuva agentti on toiminto, joka on hiljaa lakannut toimimasta (vm-guard valvoo virtuaalikoneen puskuria, backup-health ilmoittaa vioista). Korjaa syy ja toista asennus.", + "All running": + "Kaikki käynnissä", + "Also install the launchd agents (same as install-launchd).": + "Asenna myös launchd-agentit (sama kuin install-launchd).", + "At most this many minutes of waiting for the upload.": + "Odottaa lähetystä enintään näin monta minuuttia.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "Rajalla jokainen uusi pala epäonnistuu virheeseen EMFILE ja varmuuskopiointi pysähtyy. Tarkista: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Välimuisti virtuaalikoneen levyllä", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Yhdistetty Google Driveen, mutta kansiota '%@' ei voitu luoda - ilman sitä virtuaalikoneella ei ole paikkaa varmuuskopiolle. Tarkista tilin oikeudet ja yritä uudelleen.", + "Convert the image": + "Muunna levykuva", + "Converting the image to 32 MB bands": + "Muunnetaan levykuva 32 MB:n paloiksi", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "Nykyisellä yhteydellä ei voitu tarkistaa, onko varmuuskopio Google Drivessa (%@), joten remote '%@' EI korvattu: ilman tätä vastausta uutta kirjautumista ei voi verrata siihen.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Lataa virallisen rclone-binäärin kansioon ~/.cloudmachine/bin (Google-kirjautuminen ja virtuaalikoneen rclone.conf).", + "Free in the machine": + "Vapaana virtuaalikoneessa", + "Free in the machine: %@": + "Vapaana virtuaalikoneessa: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "Luo ja asentaa launchd-agentit (appi, varmuuskopioinnin valvoja, virtuaalikoneen käynnistys, virtuaalikoneen vartija).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "Asenna Lima, joka ajaa CloudMachine-virtuaalikonetta: suorita tämä Päätteessä", + "Install rclone (signs in to Google Drive for the machine)": + "Asenna rclone (kirjaa virtuaalikoneen Google Driveen)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Asenna taustaagentit (virtuaalikoneen käynnistys, puskurin vartija, varmuuskopioinnin valvoja)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Asentaa rclonen Homebrew'n kautta - CloudMachine itse käyttää install-rclone-komennon asentamaa.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Varmuuskopion levykuvan Info.plist, token ja mapped/ ovat vain virtuaalikoneen levyllä; ilman niitä kansion %@ paloja ei voi palauttaa. Kopio (tm-meta-sync, 15 min välein) menee kohteeseen %@. Tarkista: cloudmachine-agent vm-status, sitten virtuaalikoneessa: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima kertoo virtuaalikoneen olevan käynnissä, mutta sen komento ei palannut. Ilman sitä Sambasta, rclonesta tai lähetyksestä ei tiedetä mitään. Tarkista: cloudmachine-agent vm-status", + "Machine": + "Virtuaalikone", + "Machine %@": + "Virtuaalikone %@", + "Machine & Upload Status": + "Virtuaalikoneen ja lähetyksen tila", + "Machine buffer": + "Virtuaalikoneen puskuri", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Mikään Time Machinen kohde ei ole virtuaalikoneen jako (smb://tm@/CloudMachine) - varmuuskopioita ei tehdä sinne. Komennon tulostaa: cloudmachine-agent vm-setup", + "Not running: %@": + "Ei käynnissä: %@", + "Not set up": + "Ei määritetty", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "Kun se loppuu, rclone lopettaa lähetyksen, virtuaalikoneen puskuri täyttyy ja varmuuskopiointi loppuu. ~600 MB:n kasvulla tuntikierrosta se on noin %@ vrk.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "Tai rclone.conf puuttuu: tämä Mac on jo määrittänyt CloudMachine-virtuaalikoneen, joten sitä ei yhdistetä uudelleen sokkona. Palauta tiedosto varmuuskopiosta (virtuaalikoneella on oma kopionsa kohteessa %@). Yhdistääksesi silti luo tyhjä tiedosto polkuun, jonka `%@ config file` tulostaa, ja suorita uudelleen - olemassa oleva kansio säilyy.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Osoita Time Machine virtuaalikoneeseen: suorita tämä Päätteessä (vaatii sudon; Kopioi sisältää salasanan)", + "Points to the machine": + "Osoittaa virtuaalikoneeseen", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Valmistelee uudelleenkäynnistystä: pysäyttää varmuuskopioinnin, odottaa hetken lähetystä ja pysäyttää sitten virtuaalikoneen siististi.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "Time Machinen kohteen luku ei palannut %@ s kuluessa. Näin tmutil käyttäytyy, kun sen kohde jumittuu.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "Remote '%@' EI korvattu. Uusi kirjautuminen saa laajuuden 'drive.file', joka näkee vain omalla client_id:llään luodut tiedostot. Olemassa oleva varmuuskopio luotiin todennäköisesti nykyisellä yhteydellä, ja se muuttuisi sille näkymättömäksi. Ennen kuin mitään kirjoitetaan, uusi token tarkistetaan olemassa olevaa varmuuskopiota vasten, ja korvaus keskeytetään, jos se ei näe sitä. Virtuaalikone säilyttää oman kopionsa kokoonpanosta, kunnes vm-setup --replace-rclone-config. Jatkaaksesi suorita uudelleen valinnoilla --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Etähallinta: AVOIN Macissa osoitteessa 127.0.0.1:5572 - mikä tahansa verkkosivu voi lähettää rclone-komentoja; katso vm/README.md (portForwards)", + "Running": + "Käynnissä", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone tai punchfs ei ole aktiivinen virtuaalikoneessa, joten Time Machinella ei ole minne kirjoittaa tai palat eivät pääse Google Driveen. Tarkista: cloudmachine-agent vm-status", + "Service %@": + "Palvelu %@", + "Services": + "Palvelut", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "Määritä CloudMachine-virtuaalikone (ensimmäisellä kerralla ladataan Ubuntu - useita minuutteja)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "Määritä CloudMachine-virtuaalikone uudelleen, jotta se tulostaa Time Machine -komennon", + "Set up the machine": + "Määritä virtuaalikone", + "Setting up the CloudMachine machine": + "Määritetään CloudMachine-virtuaalikonetta", + "Start the CloudMachine machine": + "Käynnistä CloudMachine-virtuaalikone", + "Start the machine": + "Käynnistä virtuaalikone", + "Starting the CloudMachine machine": + "Käynnistetään CloudMachine-virtuaalikonetta", + "Still to upload: %@ GiB": + "Lähetettävää jäljellä: %@ GiB", + "Stopping the Time Machine backup...": + "Pysäytetään Time Machine -varmuuskopiointia...", + "Stopping the machine %@...": + "Pysäytetään virtuaalikonetta %@...", + "The CloudMachine machine does not answer": + "CloudMachine-virtuaalikone ei vastaa", + "The CloudMachine machine is not running": + "CloudMachine-virtuaalikone ei ole käynnissä", + "The CloudMachine machine is not set up yet": + "CloudMachine-virtuaalikonetta ei ole vielä määritetty", + "The CloudMachine machine is stopped": + "CloudMachine-virtuaalikone on pysäytetty", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "Varmuuskopiointi pysäytetään, lähetys saa aikaa enintään 30 minuuttia, sitten virtuaalikone sammutetaan siististi. Se käynnistyy uudelleen seuraavassa kirjautumisessa.", + "The machine %@ is not running - nothing to prepare.": + "Virtuaalikone %@ ei ole käynnissä - ei valmisteltavaa.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "Virtuaalikone on pysäytetty ja kaikki on päässyt Google Driveen. Macin voi käynnistää uudelleen; virtuaalikone käynnistyy taas kirjautumisen yhteydessä.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Virtuaalikone on pysäytetty. %@ GiB ei ollut vielä päässyt Google Driveen - se säilyy virtuaalikoneen puskurissa ja lähetetään seuraavan käynnistyksen jälkeen. Macin voi käynnistää uudelleen.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Virtuaalikone on pysäytetty. rclone ei kertonut, kuinka paljon oli vielä lähettämättä; lähettämättä jäänyt säilyy virtuaalikoneen puskurissa ja lähetetään seuraavan käynnistyksen jälkeen. Macin voi käynnistää uudelleen.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "Virtuaalikoneen levy on tiedosto tällä levyllä ja kasvaa lähetyspuskurin täyttyessä. Ilman vapaata tilaa virtuaalikone ei voi kirjoittaa puskuria, eikä Time Machinen paikallisillakaan tilannevedoksilla ole minne mennä.", + "The image's metadata has never been copied to Drive": + "Levykuvan metatietoja ei ole koskaan kopioitu Driveen", + "The image's metadata was last copied to Drive %@ ago": + "Levykuvan metatiedot kopioitiin Driveen viimeksi %@ sitten", + "The machine's disk is running out of space (%@ GB)": + "Virtuaalikoneen levyltä loppuu tila (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "Uusi kirjautuminen EI näe olemassa olevaa varmuuskopiota (%@), joten remote '%@' EI korvattu ja rclone.conf on muuttumaton. Pidä nykyinen yhteys tai kirjaudu tunnistetiedoilla (client_id), jotka loivat varmuuskopion.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "Lähetyspuskuri sijaitsee tällä levyllä. Vartija keskeyttää Time Machinen ennen kuin se täyttyy; jos lähetys ei pääse perässä, varmuuskopiointi pysyy keskeytettynä.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Nämä palat ovat vain virtuaalikoneen puskurissa. Varmuuskopio Google Drivessa on EPÄTÄYDELLINEN eikä välttämättä aukea.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine varmuuskopioi virtuaalikoneeseen, joten ilman sitä varmuuskopiota ei synny. Käynnistä se: limactl start %@ (tai apin Käynnistä virtuaalikone -painikkeella).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine ei pysäyttänyt varmuuskopiointiaan 2 minuutissa (tai tmutil ei vastannut) - virtuaalikonetta EI pysäytetty. Yritä hetken kuluttua uudelleen.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine on luonut levykuvansa: pysäytä varmuuskopiointi ja muunna sitten levykuva 32 MB:n paloiksi", + "To upload": + "Lähetettävää", + "Unknown whether the CloudMachine machine is running": + "Ei tiedetä, onko CloudMachine-virtuaalikone käynnissä", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Odotetaan lähetystä Google Driveen (enintään %@ min)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "Valinnan --replace-existing kanssa: vahvistaa, että uusi kirjautuminen (laajuus 'drive.file') ei ehkä näe olemassa olevaa varmuuskopiota. Uusi token tarkistetaan silti ensin varmuuskopiota vasten.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "Ilman sitä ei voi tarkistaa, onko mitään päässyt Driveen - virtuaalikoneen vartija on silloin sokea.", + "limactl did not answer": + "limactl ei vastannut", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl ei vastannut (tai sitä ei ole asennettu). Se ei tarkoita, että virtuaalikone on alhaalla - se tarkoittaa, ettei kukaan ole tarkistanut.", + "limactl start failed: %@": + "limactl start epäonnistui: %@", + "limactl stop failed: %@": + "limactl stop epäonnistui: %@", + "punchfs is close to its open-file limit": + "punchfs on lähellä avointen tiedostojen rajaa", + "punchfs open files": + "punchfsn avoimet tiedostot", + "rclone's remote control is open on this Mac": + "rclonen etähallinta on auki tässä Macissa", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') palautti virheen, joten kukaan ei tiedä, voiko virtuaalikoneen levy vielä kasvaa tässä Macissa.", + "Google Drive's daily upload limit stops the upload": + "Google Driven päivittäinen lähetysraja pysäyttää lähetyksen", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google hylkäsi viimeksi lähetyksen %@ sitten (750 GB vuorokaudessa). Sen jälkeiset varmuuskopiot ovat vain virtuaalikoneen puskurissa tässä Macissa. rclone yrittää uudelleen 5 min välein ja jatkaa itse rajan mentyä ohi; vartija keskeyttää Time Machinen, jos yli %@ GiB odottaa.", + "Usage on Google Drive is not being measured": + "Google Driven käyttöä ei mitata", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "Viimeisin mittaus (%@ GB) on ajalta %@, %@ sitten - rclone size ei ole vastannut sen jälkeen. Siihen asti kukaan ei valvo %@ GB:n rajaa: 90 %%:n ja 100 %%:n hälytykset pysyvät hiljaa. Tarkista vm-status tai paina ikkunassa Mittaa nyt.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size ei ole vastannut kertaakaan. Siihen asti kukaan ei valvo %@ GB:n rajaa: 90 %%:n ja 100 %%:n hälytykset pysyvät hiljaa. Tarkista vm-status tai paina ikkunassa Mittaa nyt.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Tallennettu Avainnippuun. Google Driveen yhdistäminen (configure-remote) käyttää niitä.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Tallennettu Avainnippuun. Olemassa oleva Google Drive -yhteys säilyttää vanhan client_id-tunnuksensa, ja tässä Macissa niin pitääkin olla: uusilla avaimilla (laajuus 'drive.file') tehty yhteys ei näe vanhalla luotua varmuuskopiota. Älä korvaa yhteyttä täällä; uudet avaimet ovat Macille, jota ei ole vielä yhdistetty.", + "it is not there for the new token": + "sitä ei ole uudelle tokenille", + "Cancel": + "Peruuta", + "ACTION NEEDED": + "VAATII TOIMENPITEITÄ", + "WILL PASS BY ITSELF — DO NOTHING": + "MENEE OHI ITSESTÄÄN — ÄLÄ TEE MITÄÄN", + "UNKNOWN — CHECK AGAIN SHORTLY": + "EI TIEDETÄ — TARKISTA PIAN UUDELLEEN", + "ALL GOOD": + "KAIKKI KUNNOSSA", + "Upload is not working": + "Lähetys ei toimi", + "Upload stopped — no space left on Google Drive": + "Lähetys pysähtyi — Google Drivessa ei ole tilaa", + "%@ backup fragments not uploaded": + "Varmuuskopion osia ei lähetetty: %@", + "Upload cannot keep up with writes": + "Lähetys ei pysy kirjoitusten tahdissa", + "Upload paused — Google daily limit": + "Lähetys keskeytetty — Googlen vuorokausiraja", + "Uploading to Google Drive — %@ queued": + "Lähetetään Google Driveen — jonossa %@", + "Everything uploaded to Google Drive": + "Kaikki lähetetty Google Driveen", + "Unknown what is waiting in the queue": + "Ei tiedetä, mikä jonossa odottaa", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Google Driveen ei ole yhteyttä, joten varmuuskopioita tehdään vain tässä Macissa. Jos tämä ei mene ohi itsestään muutamassa minuutissa, tarkista verkko ja yhteys Driveen.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Google Drivessa ei ole enää tilaa. Tämä EI mene ohi itsestään — Driveen täytyy vapauttaa tilaa. Siihen asti Time Machine on keskeytetty, jotta se ei täytä tämän Macin levyä.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "Varmuuskopion osia (%@) ei voitu lähettää, ja rclone lopetti yrittämisen. Nämä osat ovat vain tässä Macissa, joten Driven varmuuskopio on epätäydellinen. Tämä pitää tarkistaa.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine kirjoittaa nopeammin kuin lähetys etenee, ja puskuri on täyttynyt. Varmuuskopiointi keskeytetään, kunnes lähetys pääsee perässä — tämä on suoja levyn täyttymistä vastaan, ei vika.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google ottaa vastaan 750 GB vuorokaudessa, ja tämä raja on käytetty. Mitään ei tarvitse tehdä: raja uusiutuu itsestään, yleensä muutamassa tunnissa. Time Machine -varmuuskopiot syntyvät sillä välin normaalisti ja odottavat puskurissa — ne lähetetään heti, kun Google alkaa taas vastaanottaa.", + "%@ backup fragments are queued and on their way to Drive.": + "Varmuuskopion osia jonossa matkalla Driveen: %@.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "Jonossa ei odota mitään — Google Driven varmuuskopio on täydellinen.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone ei vastannut jonoa koskevaan kysymykseen, joten ei tiedetä, kuinka monta varmuuskopiota odottaa vielä lähetystä. Se ei tarkoita, että jokin olisi rikki — kuormituksessa vastaus voi myöhästyä. Se tarkoittaa vain, ettei kukaan tiedä sitä juuri nyt. Jos tilanne jatkuu, varmuuskopiointikierron tarkistus ilmoittaa siitä.", + "unknown error": + "tuntematon virhe", + "rclone lsf ended with an error": + "rclone lsf päättyi virheeseen", + "This Mac is close to its space limit on Google Drive": + "Tämä Mac lähestyy Google Driven tilarajaansa", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ GB / %@ GB käytössä. Time Machine poistaa vanhimmat varmuuskopiot pysyäkseen kiintiössään; tarkista, että kiintiö on asetettu (vm-status).", + "This Mac is over its space limit on Google Drive": + "Tämä Mac on ylittänyt Google Driven tilarajansa", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ GB / %@ GB käytössä. Aseta Time Machine -kiintiö (komento apin ikkunassa tai vm-status) tai nosta rajaa.", + "not set": + "ei asetettu", + "%@ GB - usage not measured yet": + "%@ GB - käyttöä ei ole vielä mitattu", + "%@ of %@ GB used (%@%%)": + "%@ / %@ GB käytössä (%@ %%)", + "The limit must be a whole number of GB above zero.": + "Rajan on oltava nollaa suurempi kokonaisluku GB:na.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "machines.json ei ole luettavissa, joten sitä ei korvattu. Korjaa tai poista se ensin.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' ei ole kelvollinen kansion nimi: käytä pieniä kirjaimia, numeroita ja tavuviivoja.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Tämä Mac varmuuskopioi jo kansioon '%@'. Vaihtaminen kansioon '%@' aloittaisi uuden, tyhjän varmuuskopion ja jättäisi olemassa olevan orvoksi, joten mitään ei muutettu.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Tässä Macissa on jo CloudMachine-asennus, jonka varmuuskopio on kansiossa '%@'. Vaihtaminen kansioon '%@' jättäisi sen orvoksi, joten mitään ei muutettu.", + "Could not save the folder name to %@: %@": + "Kansion nimeä ei voitu tallentaa kohteeseen %@: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrewta ei ole asennettu. Asenna se käsin: https://brew.sh", + "Installing rclone failed: %@": + "rclonen asennus epäonnistui: %@", + "Installed rclone.": + "rclone asennettu.", + "Own Google credentials: set.": + "Omat Google-tunnistetiedot: asetettu.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "EPÄTÄYDELLINEN: %@ puuttuu - rclone käyttää silti rclonen yhteistä client_id-tunnusta.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Ei omia tunnistetietoja - rclone käyttää yhteistä client_id-tunnusta, jonka nopeusrajoitus on yhteinen ja joka poistuu käytöstä vuonna 2026.", + "Empty value - not saving.": + "Tyhjä arvo - ei tallenneta.", + "Keychain refused: %@": + "Avainnippu kieltäytyi: %@", + "DIRTY-TREE": + "LIKAINEN-PUU", + "Cannot create the working directory: %@": + "Työhakemistoa ei voi luoda: %@", + "Could not read the rclone version number.": + "rclonen versionumeroa ei voitu lukea.", + "Could not download %@.": + "Kohdetta %@ ei voitu ladata.", + "No entry for %@ in SHA256SUMS.": + "Kohteelle %@ ei ole merkintää tiedostossa SHA256SUMS.", + "Could not compute the checksum.": + "Tarkistussummaa ei voitu laskea.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "SHA256-tarkistussumma ei täsmää - EI asenneta.\n odotettu: %@\n laskettu: %@", + "Could not unpack the archive.": + "Arkistoa ei voitu purkaa.", + "Could not install the binary: %@": + "Binääriä ei voitu asentaa: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "Asennettu rclone %@ kohteeseen %@ (SHA256-tarkistussumma täsmää).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ ei vastannut sallitussa ajassa (prosessi jäi orvoksi taustalle).", + "Cannot launch %@: %@": + "Kohdetta %@ ei voi käynnistää: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "Remote '%@' on jo olemassa, eikä sitä KOSKETTU.\nSen korvaaminen vaihtaa tokenin ja oikeuksien laajuuden; tunniste, jonka laajuus on 'drive.file', ei näe edellisen luomia tiedostoja, joten olemassa oleva varmuuskopio muuttuu tavoittamattomaksi.\nJos todella haluat korvata sen, tee ensin varmuuskopio tiedostosta ~/.config/rclone/rclone.conf ja suorita uudelleen valinnalla --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "Ei voitu tarkistaa, onko remote '%@' jo olemassa (rclone listremotes ei vastannut tai epäonnistui), joten mitään ei muutettu. Suorita `%@ listremotes` nähdäksesi virheen ja yritä sitten uudelleen.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "Ei voitu tarkistaa, onko tässä Macissa jo CloudMachine-asennus (rclone ei vastannut), joten kansiota ei valittu. Yritä hetken kuluttua uudelleen.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize epäonnistui (%@). Jos tätä binääriä ei ole, aloita komennolla: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "Tokenia ei voitu lukea rclone authorize -komennon tulosteesta.", + "rclone config create failed.": + "rclone config create epäonnistui.", + "Connected to Google Drive as remote '%@', folder %@.": + "Yhdistetty Google Driveen remotena '%@', kansio %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil ei vastaa - ei tiedetä, minne varmuuskopio menee", + "No successful backup for %@": + "Ei onnistunutta varmuuskopiota %@ aikana", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Viimeisin VALMIS varmuuskopio: %@. Kierto on tunnin välein, joten väliin jääneitä ajoja on %@.", + "There is NOT A SINGLE successful backup": + "Yhtään onnistunutta varmuuskopiota EI OLE", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Time Machinen asetuksissa ei ole tämän kohteen valmiin varmuuskopion päivämäärää.", + "The last backup attempt did not end in a backup": + "Viimeisin varmuuskopiointiyritys ei johtanut varmuuskopioon", + "The attempt at %@ is newer than the last successful backup at %@.": + "Yritys %@ on uudempi kuin viimeisin onnistunut varmuuskopio %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine ilmoittaa virheestä viimeisimmässä ajossa (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Nollasta poikkeava RESULT Time Machinen asetuksissa tarkoittaa, että ajo ei onnistunut.", + "rclone failed to upload %@ files": + "Tiedostoja, joita rclone ei onnistunut lähettämään: %@", + "Buffer full of nothing but unsent data": + "Puskuri täynnä pelkkää lähettämätöntä dataa", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclonella ei ole enää mitään poistettavaa puskurista - lähetys ei pysy mukana tai on pysähtynyt.", + "The rclone control interface is not responding": + "rclonen ohjausrajapinta ei vastaa", + "Google Drive is running out of space (%@ GB)": + "Google Driven tila on loppumassa (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Macin levyn tila on loppumassa (%@ GB)", + "Cannot read the Time Machine preferences": + "Time Machinen asetuksia ei voi lukea", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ ei ole luettavissa - useimmiten Täysi levyn käyttö puuttuu. Ilman tätä tiedostoa EI TIEDETÄ, milloin viimeinen varmuuskopio tehtiin, joten käsittelemme sen vikana, emme ongelman puuttumisena.", + "Cannot measure free space on the Mac's disk": + "Macin levyn vapaata tilaa ei voi mitata", + "%@ days": + "%@ vrk", + "CloudMachine: backup is not working": + "CloudMachine: varmuuskopiointi ei toimi", + "unknown reason": + "tuntematon syy", + "osascript did not show the notification (permissions or no graphical session)": + "osascript ei näyttänyt ilmoitusta (oikeudet tai ei graafista istuntoa)", + "UNDELIVERED ALARM: %@": + "TOIMITTAMATON HÄLYTYS: %@", + "from %@, reason: %@": + "lähde %@, syy: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "Järjestelmäilmoitus ei mennyt perille - näet tämän hälytyksen VAIN täällä.", + "%@ (%@ ago)": + "%@ (%@ sitten)", + "%@ - marker from the FUTURE": + "%@ - merkki TULEVAISUUDESTA", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (%@ sitten) - VALVOJA EI EHKÄ OLE KÄYNNISSÄ", + "NEVER - the watchdog has not recorded a single run": + "EI KOSKAAN - valvoja ei ole kirjannut yhtään ajoa", + "Could not find the launchd/ directory with templates.": + "Mallipohjien hakemistoa launchd/ ei löytynyt.", + "Could not find the compiled cloudmachine-agent binary.": + "Käännettyä cloudmachine-agent-binääriä ei löytynyt.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "KESKEYTETTY: cloudmachine-agentia ei voitu sijoittaa vakaaseen paikkaan\n(%@) - useimmiten tilan tai oikeuksien puutteen vuoksi.\nEI asenneta agentteja, jotka osoittavat polkuun %@: se polku\nkatoaa seuraavalla `swift build`- tai `git clean` -komennolla, ja varmuuskopiointi loppuu\nilman mitään näkyvää merkkiä.", + "ABORTED: %@": + "KESKEYTETTY: %@", + "Could not list the templates in %@.": + "Kohteen %@ mallipohjia ei voitu listata.", + "could not read the template %@": + "mallipohjaa %@ ei voitu lukea", + "could not write %@ (lack of space or permissions)": + "kohdetta %@ ei voitu kirjoittaa (tilan tai oikeuksien puute)", + "launchctl load refused to load %@": + "launchctl load kieltäytyi lataamasta kohdetta %@", + "NOT A SINGLE agent was loaded.": + "YHTÄÄN agenttia EI ladattu.", + "Only these went in: %@.": + "Vain nämä asentuivat: %@.", + "Could not load any launchd agent.": + "Yhtään launchd-agenttia ei voitu ladata.", + "Installed agents: %@": + "Asennetut agentit: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " VAROITUS: lähellä rajaa - uudet palat epäonnistuvat virheeseen EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands Google Drivessa ei ole tyhjä - siellä voi olla toinen varmuuskopio. EI ylikirjoiteta; tarkista käsin.", + "Address: %@": + "Osoite: %@", + "Already prepared (%@ exists) - nothing to do.": + "Jo valmisteltu (%@ on olemassa) - ei tehtävää.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Muuntaa Time Machinen uuden, tyhjän levykuvan virtuaalikoneessa 32 MB:n paloiksi ja siirtää palat Google Driveen.", + "Copy rclone.conf into the machine even if it already has one.": + "Kopioi rclone.conf virtuaalikoneeseen, vaikka siinä jo olisi sellainen.", + "Copying the converted image into the machine failed: %@": + "Muunnetun levykuvan kopiointi virtuaalikoneeseen epäonnistui: %@", + "Copying the image to the Mac failed: %@": + "Levykuvan kopiointi Maciin epäonnistui: %@", + "Could not ask Lima about the machine: %@": + "Limalta ei voitu kysyä virtuaalikoneesta: %@", + "Could not carry the Time Machine files over: %@": + "Time Machine -tiedostoja ei voitu siirtää: %@", + "Could not check the image in the machine.": + "Levykuvaa ei voitu tarkistaa virtuaalikoneessa.", + "Could not copy the rclone configuration into the machine.": + "rclone-kokoonpanoa ei voitu kopioida virtuaalikoneeseen.", + "Could not create %@ on Google Drive: %@": + "Kohdetta %@ ei voitu luoda Google Driveen: %@", + "Could not create %@: %@": + "Kohdetta %@ ei voitu luoda: %@", + "Could not find the vm/ directory with the machine template.": + "Virtuaalikoneen mallipohjan hakemistoa vm/ ei löytynyt.", + "Could not read the image size.": + "Levykuvan kokoa ei voitu lukea.", + "Could not set the SMB password of user %@ in the machine.": + "Käyttäjän %@ SMB-salasanaa ei voitu asettaa virtuaalikoneessa.", + "Could not stop smbd in the machine.": + "smbd:tä ei voitu pysäyttää virtuaalikoneessa.", + "Could not write %@ in the machine.": + "Kohdetta %@ ei voitu kirjoittaa virtuaalikoneessa.", + "Could not write the password file %@.": + "Salasanatiedostoa %@ ei voitu kirjoittaa.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "Luo tai käynnistää CloudMachine-virtuaalikoneen (Lima), antaa sille rclonen kokoonpanon ja SMB-salasanan ja tulostaa Time Machine -komennon.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "Luodaan virtuaalikonetta %@ (ensimmäinen käynnistys lataa Ubuntun ja asentaa paketit - useita minuutteja)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Valmis: kohteen %@ palat ovat %@ MB:n kokoisia Google Drivessa; alkuperäinen säilyy kohteessa %@ virtuaalikoneessa. Käynnistä varmuuskopiointi: tmutil startbackup", + "exit code %@, no message": + "poistumiskoodi %@, ei viestiä", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Metatiedot: EI KOSKAAN kopioitu kohteeseen %@ - tarkista tm-meta-sync virtuaalikoneessa", + "Image metadata: copied %@ ago to %@": + "Metatiedot: kopioitu %@ sitten kohteeseen %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Metatiedot: viimeksi kopioitu %@ sitten - MYÖHÄSSÄ (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Metatiedot: ei vielä kopioitu - odottaa vm-prepare-bundlea", + "Backup %@, paused by the guard %@: %@": + "Varmuuskopio %@, vartijan keskeyttämä %@: %@", + "Free in machine: %@ GiB": + "Vapaana virtuaalikoneessa: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n löysi ongelmia: %@", + "Google Drive folder: %@": + "Google Drive -kansio: %@", + "hdiutil attach of the converted image failed: %@": + "muunnetun levykuvan hdiutil attach epäonnistui: %@", + "hdiutil convert failed: %@": + "hdiutil convert epäonnistui: %@", + "Image name in the machine (default: from the computer name).": + "Levykuvan nimi virtuaalikoneessa (oletus: johdettu tietokoneen nimestä).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "Muunnetun levykuvan asennus EPÄONNISTUI: %@\nsmbd jätetään PYSÄYTETTYNÄ, jotta Time Machine ei avaa puoliksi asennettua levykuvaa. Alkuperäinen on kohteessa %@ virtuaalikoneessa.", + "limactl create failed: %@": + "limactl create epäonnistui: %@", + "limactl list failed: %@": + "limactl list epäonnistui: %@", + "limactl not found - install Lima: brew install lima": + "limactlia ei löytynyt - asenna Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start epäonnistui: %@\nVirtuaalikoneen oma loki: %@", + "Machine %@ is running.": + "Virtuaalikone %@ on käynnissä.", + "Machine %@ was already running.": + "Virtuaalikone %@ oli jo käynnissä.", + "Machine: %@ (%@)": + "Virtuaalikone: %@ (%@)", + "Machine: %@": + "Virtuaalikone: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Virtuaalikone: ei luotu - suorita: cloudmachine-agent vm-setup", + "no answer within the time limit": + "ei vastausta aikarajan sisällä", + "No image %@ in the machine.": + "Virtuaalikoneessa ei ole levykuvaa %@.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "Virtuaalikoneessa ei ole vielä levykuvaa - osoita ensin Time Machine jakoon ja anna sen luoda sellainen.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "Ei rclone-kokoonpanoa polussa %@ - yhdistä ensin Google Drive (configure-remote).", + "no SMB destination": + "ei SMB-kohdetta", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "Yksi virtuaalikoneen lähetyspuskurin tarkistus: keskeyttää Time Machinen sen täyttyessä ja jatkaa sen keskeyttämää.", + "Packing the converted image failed: %@": + "Muunnetun levykuvan pakkaus epäonnistui: %@", + "Packing the image failed: %@": + "Levykuvan pakkaus epäonnistui: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "Virtuaalikone ei vastaa (rclone rc) - vartija ei tekisi mitään.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Tulosta vain, mitä vartija päättäisi - rajojen kokeiluun kertakäyttöisellä virtuaalikoneella.", + "Pause above this many GiB in the buffer.": + "Keskeytä, kun puskurissa on yli näin monta GiB.", + "Pause when the machine has less free than this, in GiB.": + "Keskeytä, kun virtuaalikoneessa on vapaata alle näin monta GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Osoita Time Machine virtuaalikoneeseen (kerran, vaatii ylläpitäjän salasanan):", + "punchfs files: %@ open, limit %@": + "punchfs-tiedostot: %@ auki, raja %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "rclone-kokoonpano on jo virtuaalikoneessa - säilytetty (--replace-rclone-config korvaa sen).", + "rclone configuration copied into the machine.": + "rclone-kokoonpano kopioitu virtuaalikoneeseen.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm tai punchfs ei ole käynnissä virtuaalikoneessa - katso cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Jatka, kun alle näin monta GiB (vain vartijan keskeyttämä varmuuskopiointi).", + "Service %@: %@": + "Palvelu %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "Virtuaalikoneessa on useita levykuvia (%@) - valitse yksi valinnalla --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Näyttää virtuaalikoneen: osoite, palvelut, lähetyspuskuri, vapaa tila ja Time Machinen kohde.", + "SMB password stored in %@ (mode 600).": + "SMB-salasana tallennettu kohteeseen %@ (oikeudet 600).", + "The converted image does not have %@-byte bands.": + "Muunnetussa levykuvassa ei ole %@ tavun paloja.", + "The converted image has no APFS partition.": + "Muunnetussa levykuvassa ei ole APFS-osiota.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "Levykuva vie jo %@ MB - tämä komento muuntaa vain uuden, tyhjän levykuvan (alle %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "Levykuva on salattu - salattujen levykuvien muuntamista ei tueta.", + "The image was not changed; smbd started again.": + "Levykuvaa ei muutettu; smbd käynnistettiin uudelleen.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "Virtuaalikone ei vastaa - onko se käynnissä? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "Virtuaalikoneella ei ole osoitetta vzNAT-verkossa.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "Virtuaalikoneen palvelut eivät käynnistyneet - tarkista: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine varmuuskopioi - pysäytä se ensin: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: EI osoita virtuaalikoneeseen (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil ei vastannut", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil ei vastannut - levykuvaan ei kosketa, kun sen tila on tuntematon.", + "unknown": + "tuntematon", + "Unpacking the image failed: %@": + "Levykuvan purku epäonnistui: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "Lähetettävää: %@ GiB, paloja %@, lähetetään %@ (välimuisti levyllä %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "Suljettiin %@ (virtuaalikone ja sen lähetyspuskuri) pois Time Machinesta.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "VAROITUS: kohdetta %@ ei voitu sulkea pois Time Machinesta - suorita: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Lähetyspuskuri: ei vastausta rclonelta (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Kun Time Machine on luonut tyhjän levykuvansa, pysäytä varmuuskopiointi (tmutil stopbackup) ja suorita: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "Lähettämättä %@ GiB, vapaana %@ GiB (keskeytys, kun lähettämättä yli %@ GiB tai vapaana alle %@ GiB, jatko, kun alle %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Lähetys: Googlen vuorokausiraja hylkäsi lähetyksen %@ sitten - rclone yrittää uudelleen 5 min välein ja jatkaa itse", + "no": + "ei", + "running": + "käynnissä", + "stopped": + "pysäytetty", + "yes": + "kyllä", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nEdellinen mallipohja on kohteessa %@ - kopioi se takaisin tiedoston lima.yaml päälle ja suorita limactl start %@.", + "Could not read this app's machine template (limactl template copy).": + "Tämän apin virtuaalikoneen mallipohjaa ei voitu lukea (limactl template copy).", + "Could not replace %@: %@": + "Kohdetta %@ ei voitu korvata: %@", + "Machine %@ already runs this app's template.": + "Virtuaalikone %@ käyttää jo tämän apin mallipohjaa.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "Virtuaalikone %@ käyttää nyt tämän apin mallipohjaa; edellinen on kohteessa %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Siirtää virtuaalikoneen tämän apin mallipohjaan (kaksi uudelleenkäynnistystä, ei koskaan varmuuskopioinnin aikana).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "Virtuaalikonetta %@ ei ole - luo se: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Mallipohja: VANHEMPI kuin tämän apin - suorita: cloudmachine-agent vm-update", + "Template: not compared": + "Mallipohja: ei verrattu", + "Template: this app's": + "Mallipohja: tämän apin", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "Virtuaalikoneessa ei ole kohdetta %@ - suorita ensin cloudmachine-agent vm-setup.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "Virtuaalikone käynnistyi uudelleen, mutta kaikki palvelut eivät ole käynnissä - tarkista: cloudmachine-agent vm-status. Edellinen mallipohja on kohteessa %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "Mallipohja muuttaa itse virtuaalikonetta (%@) - se vaatii uuden virtuaalikoneen, ei päivitystä.", + "The upload to Google Drive hangs": + "Lähetys Google Driveen jumittuu", + "Time Machine is backing up - try again when it has finished.": + "Time Machine varmuuskopioi - yritä uudelleen, kun se on valmis.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Lähetys: JUMISSA - paloja käsittelyssä, mitään ei lähetetty %@ aikana (verkko?); katso /var/log/rclone-tm.log virtuaalikoneessa", + "limactl stop failed - nothing was changed.": + "limactl stop epäonnistui - mitään ei muutettu.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclonella on paloja käsittelyssä, mutta mitään ei ole lähetetty %@ aikana - yleensä katkennut verkkoyhteys, jota rclone ei ilmoita virheenä. Sen jälkeiset varmuuskopiot ovat vain virtuaalikoneen puskurissa. Kun verkko palaa, lähetys jatkuu itsestään (28.10.2026 80 s:ssa); jos ei, virtuaalikoneen uudelleenkäynnistys (prepare-shutdown, limactl start) katkaisee kuolleet yhteydet.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil ei vastannut - virtuaalikonetta ei käynnistetä uudelleen, kun sen tila on tuntematon.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+fr.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+fr.swift new file mode 100644 index 0000000..e8e74f7 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+fr.swift @@ -0,0 +1,951 @@ +// French translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let fr: [String: String] = [ + "Space limit: %@": + "Limite d'espace : %@", + " Time Machine quota not set to match - run: %@": + " Quota Time Machine non réglé en conséquence - exécutez : %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Définit l'espace Google Drive que ce Mac peut utiliser et affiche la commande du quota Time Machine.", + "Limit in GB.": + "Limite en GB.", + "Limit for this Mac: %@ GB.": + "Limite pour ce Mac : %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Réglez maintenant le quota Time Machine (mot de passe administrateur requis) :", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - vérification, configuration de Google Drive et installation. Appelé par launchd selon un calendrier, ou à la main depuis Terminal.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "Se connecte à Google Drive via rclone (OAuth dans le navigateur) et crée le dossier de cette machine.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Écraser le remote existant. RISQUÉ : remplace le jeton et les autorisations.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "Empaquette build/CloudMachine.app dans build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "ERREUR : %@ est introuvable - exécutez d'abord 'cloudmachine-agent build-app'", + "==> Preparing the staging folder": + "==> Préparation du dossier temporaire", + "==> Creating %@": + "==> Création de %@", + "ERROR: hdiutil exited with code %@.": + "ERREUR : hdiutil s'est terminé avec le code %@.", + "==> Done: %@": + "==> Terminé : %@", + "On first launch (the app is not signed with an Apple Developer account):": + "Au premier lancement (l'app n'est pas signée avec un compte Apple Developer) :", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. Ouvrez %@ et faites glisser CloudMachine.app dans le dossier Applications.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. Dans le Finder, faites un clic DROIT sur CloudMachine.app -> Ouvrir -> Ouvrir\n (un simple double-clic affiche le blocage Gatekeeper « développeur non identifié »).", + "3. Later launches work normally, with a double-click.": + "3. Les lancements suivants se font normalement, par double-clic.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "Compile CloudMachine.app (Release) - interface + cloudmachine-agent dans Contents/MacOS/, plus launchd/, vm/ et config/ comme ressources.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Binaires pour Apple Silicon et Intel à la fois (ainsi que le CI compile une version ; inutile en local).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> Compilation de CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)", + "ERROR: swift build exited with code %@.": + "ERREUR : swift build s'est terminé avec le code %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "ERREUR : swift build --show-bin-path n'a pas indiqué le dossier des binaires.", + "ERROR: no built binary found at %@": + "ERREUR : aucun binaire compilé trouvé dans %@", + "==> Assembling the .app bundle in %@": + "==> Assemblage du paquet .app dans %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> ATTENTION : vous compilez depuis une arborescence MODIFIÉE - la version ne pointera vers aucun commit.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "ERREUR : Resources/AppIcon.icns est introuvable - générez-le : swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Signature avec le certificat local '%@' (l'Accès complet au disque survivra aux recompilations)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Signature ad hoc (sans compte Apple Developer) - exécutez une fois 'cloudmachine-agent setup-signing-cert' pour que les autorisations TCC survivent aux recompilations", + "ERROR: codesign exited with code %@.": + "ERREUR : codesign s'est terminé avec le code %@.", + "Next step: %@": + "Étape suivante : %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Crée un certificat local auto-signé pour que l'Accès complet au disque survive aux recompilations de l'app.", + "Certificate '%@' already exists in %@, nothing to do.": + "Le certificat '%@' existe déjà dans %@, rien à faire.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Génération de la clé et du certificat auto-signé '%@'...", + "ERROR: openssl req exited with code %@.": + "ERREUR : openssl req s'est terminé avec le code %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "ERREUR : openssl pkcs12 s'est terminé avec le code %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Importation du certificat dans %@ (autorisation préalable de /usr/bin/codesign, pour ne pas redemander le mot de passe du trousseau à chaque fois)...", + "ERROR: security import exited with code %@.": + "ERREUR : security import s'est terminé avec le code %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> Certificat approuvé UNIQUEMENT pour la signature de code...", + "ERROR: security add-trusted-cert exited with code %@.": + "ERREUR : security add-trusted-cert s'est terminé avec le code %@.", + "Done. Certificate '%@' is now available to codesign.": + "Terminé. Le certificat '%@' est maintenant disponible pour codesign.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "Le prochain 'cloudmachine-agent build-app' l'utilisera automatiquement à la place d'une signature ad hoc.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "Après CETTE UNIQUE recompilation, accordez une dernière fois l'Accès complet au disque - les\nrecompilations suivantes ne le réinitialiseront plus, tant que vous signez avec le même certificat.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Vérifie que le cycle horaire fonctionne TOUJOURS (date de la dernière sauvegarde RÉUSSIE) et signale les pannes.", + "After this many hours without a successful backup we consider the cycle broken.": + "Au bout de ce nombre d'heures sans sauvegarde réussie, le cycle est considéré comme interrompu.", + "Only print the state, without a system notification.": + "Affiche seulement l'état, sans notification système.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "Un autre fichier de préférences Time Machine - pour tester la surveillance sur un échantillon connu.", + "Last successful backup: %@": + "Dernière sauvegarde réussie : %@", + "Last successful backup: NONE": + "Dernière sauvegarde réussie : AUCUNE", + "Last attempt: %@": + "Dernière tentative : %@", + "WAITING (system startup): %@": + "EN ATTENTE (démarrage du système) : %@", + "Backup cycle: OK": + "Cycle de sauvegarde : OK", + "FAILURE: %@": + "PANNE : %@", + " %@": + " %@", + "Check the state: %@": + "Vérifier l'état : %@", + "Preparing for restart": + "Préparation du redémarrage", + "Prepare for restart": + "Préparer le redémarrage", + "Prepare": + "Préparer", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> ATTENTION : git rev-list a échoué (%@) - la date sert de numéro de build.", + "Agents: %@": + "Agents : %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "DÉMARRAGE IMPOSSIBLE : %@ - ouvrez CloudMachine ou exécutez backup-health pour les recharger", + "Reloaded agents that could not start: %@": + "Agents rechargés qui n'avaient pas pu démarrer : %@", + "Drive folder: %@": + "Dossier Drive : %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Nom du dossier de ce Mac sur Google Drive (par défaut : dérivé du nom de l'ordinateur). Défini une seule fois ; impossible à modifier ensuite.", + "Backup watchdog: %@": + "Surveillance : %@", + "Prints the version, the build number and the commit this binary was built from.": + "Affiche la version, le numéro de build et le commit à partir duquel ce binaire a été compilé.", + "Only one line, without a description.": + "Une seule ligne, sans description.", + "Build from the working tree (outside a bundle) - no version data.": + "Build depuis l'arborescence de travail (hors paquet) - aucune donnée de version.", + "Version: %@": + "Version : %@", + "Build: %@": + "Build : %@", + "Commit: %@": + "Commit : %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "ATTENTION : compilé depuis une arborescence MODIFIÉE - le binaire contient du code\n qui n'est dans aucun commit. Le numéro de commit NE décrit PAS\n ce qui s'exécute réellement.", + "Saving the space limit": + "Enregistrement de la limite d'espace", + "Measuring usage on Google Drive": + "Mesure de l'espace utilisé sur Google Drive", + "Google Drive did not answer - try again later.": + "Google Drive n'a pas répondu - réessayez plus tard.", + "Measured.": + "Mesure effectuée.", + "Space limit for this Mac": + "Limite d'espace pour ce Mac", + "Used on Google Drive": + "Utilisé sur Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "Mesuré le %@. La surveillance mesure de nouveau toutes les quelques heures.", + "Limit (GB)": + "Limite (GB)", + "Save": + "Enregistrer", + "Measure now": + "Mesurer maintenant", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Quota Time Machine : %@ GB (70 %% de la limite - la copie sur Drive est environ un tiers plus grande que la sauvegarde qu'elle contient). Time Machine supprime les plus anciennes sauvegardes pour rester dans ce quota.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Réglez le quota Time Machine : exécutez ceci dans Terminal (sudo requis)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Connectez Google Drive : exécutez ceci dans Terminal et validez dans le navigateur", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "Accordez l'Accès complet au disque à CloudMachine pour qu'il puisse savoir si les sauvegardes se terminent", + "Folder on Google Drive": + "Dossier sur Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Un dossier par Mac. Défini une seule fois - impossible à modifier après la connexion.", + "Use lowercase letters, digits and dashes.": + "Utilisez des lettres minuscules, des chiffres et des tirets.", + "Install rclone": + "Installer rclone", + "Open System Settings": + "Ouvrir Réglages Système", + "Install agents": + "Installer les agents", + "not checked": + "non vérifié", + "none at all": + "aucune", + "%@ ago": + "il y a %@", + "Missing: %@": + "Manquant : %@", + "Google Drive not connected": + "Google Drive non connecté", + "Time Machine does not point to CloudMachine": + "Time Machine ne pointe pas vers CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "On ignore si Time Machine pointe vers CloudMachine - tmutil n'a pas répondu", + "Backup in progress": + "Sauvegarde en cours", + "Unknown when the last backup was made": + "Date de la dernière sauvegarde inconnue", + "There is no completed backup at all": + "Aucune sauvegarde terminée", + "No completed backup for %@": + "Aucune sauvegarde terminée depuis %@", + "Ready": + "Prêt", + "Not saved: %@": + "Non enregistré : %@", + "Installing rclone": + "Installation de rclone", + "Installing launchd agents": + "Installation des agents launchd", + "Starting backup": + "Démarrage de la sauvegarde", + "Backup started.": + "Sauvegarde démarrée.", + "Could not start the backup.": + "Impossible de démarrer la sauvegarde.", + "Stopping backup": + "Arrêt de la sauvegarde", + "Backup stopped.": + "Sauvegarde arrêtée.", + "Could not stop the backup.": + "Impossible d'arrêter la sauvegarde.", + "Could not prepare the AppleScript.": + "Impossible de préparer l'AppleScript.", + "Unknown authorization error.": + "Erreur d'autorisation inconnue.", + "Waiting to upload": + "En attente d'envoi", + "%@ files": + "%@ fichiers", + "nothing": + "rien", + "Back up now": + "Sauvegarder maintenant", + "Stop backup": + "Arrêter la sauvegarde", + "Open CloudMachine": + "Ouvrir CloudMachine", + "Quit": + "Quitter", + "Healthy": + "En bon état", + "Attention": + "Attention", + "Refreshed %@": + "Actualisé à %@", + "System Status": + "État du système", + "Action needed": + "Action requise", + "not measured": + "non mesuré", + "rclone did not answer": + "rclone n'a pas répondu", + "Backup in Progress": + "Sauvegarde en cours", + "Files processed": + "Fichiers traités", + "Write speed": + "Vitesse d'écriture", + "Operation phase": + "Phase de l'opération", + "Required Setup Steps": + "Étapes de configuration requises", + "Copy": + "Copier", + "Last completed backup": + "Dernière sauvegarde terminée", + "Last backup watchdog run": + "Dernière exécution de la surveillance", + "not read": + "non lu", + "Everything uploaded": + "Tout est envoyé", + "File upload errors": + "Erreurs d'envoi de fichiers", + "Google Drive Credentials (OAuth 2.0)": + "Identifiants Google Drive (OAuth 2.0)", + "Keychain OK": + "Trousseau OK", + "No custom keys": + "Aucune clé personnalisée", + "Paste client_id...": + "Collez client_id...", + "Paste client_secret...": + "Collez client_secret...", + "Save securely in the Keychain": + "Enregistrer en sécurité dans le trousseau", + "Refresh": + "Actualiser", + "Overview": + "Aperçu", + "Backups": + "Sauvegardes", + "Storage": + "Stockage", + "Settings": + "Réglages", + "Current status: %@": + "État actuel : %@", + "Does not point to CloudMachine": + "Ne pointe pas vers CloudMachine", + "tmutil did not answer": + "tmutil n'a pas répondu", + "Backing up: %@ of %@": + "Sauvegarde : %@ sur %@", + "%@ of %@": + "%@ sur %@", + "Copied": + "Copié", + "No backup is running": + "Aucune sauvegarde en cours", + "Time Machine starts the next one on its own schedule.": + "Time Machine lancera la suivante selon son propre calendrier.", + "Backup cycle": + "Cycle de sauvegarde", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB en %@ bandes, %@ en cours d'envoi", + "%@ bands": + "%@ bandes", + "%@ fragments abandoned - only in the machine": + "%@ fragments abandonnés - uniquement dans la machine", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 répond sur le Mac : Lima transmet la télécommande rclone de la machine, qui n'a pas de mot de passe. N'importe quelle page web ouverte dans un navigateur peut lui envoyer des commandes - y compris supprimer la sauvegarde sur Google Drive. Ajoutez à la machine la règle portForwards de vm/cmsmb.yaml et redémarrez-la (voir vm/README.md).", + "A service in the CloudMachine machine is not running": + "Un service de la machine CloudMachine ne fonctionne pas", + "Address": + "Adresse", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Installation des agents INCOMPLÈTE - %@ sur %@ n'ont pas été installés :\n%@\n%@\nChaque agent manquant est une fonction qui s'est arrêtée en silence (vm-guard surveille le tampon de la machine, backup-health signale les pannes). Corrigez la cause et relancez l'installation.", + "All running": + "Tous en fonctionnement", + "Also install the launchd agents (same as install-launchd).": + "Installe aussi les agents launchd (comme install-launchd).", + "At most this many minutes of waiting for the upload.": + "Attendre l'envoi pendant ce nombre de minutes au maximum.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "À la limite, chaque nouvelle bande échoue avec EMFILE et la sauvegarde s'arrête. Vérifiez : cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Cache sur le disque de la machine", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Connecté à Google Drive, mais impossible de créer le dossier '%@' - sans lui, la machine n'a nulle part où conserver la sauvegarde. Vérifiez les autorisations du compte et réessayez.", + "Convert the image": + "Convertir l'image disque", + "Converting the image to 32 MB bands": + "Conversion de l'image en bandes de 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "Impossible de vérifier avec la connexion actuelle si la sauvegarde se trouve sur Google Drive (%@), donc le remote '%@' n'a PAS été remplacé : sans cette réponse, la nouvelle connexion ne peut pas être vérifiée.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Télécharge le binaire rclone officiel dans ~/.cloudmachine/bin (connexion Google et rclone.conf de la machine).", + "Free in the machine": + "Libre dans la machine", + "Free in the machine: %@": + "Libre dans la machine : %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "Génère et installe les agents launchd (app, surveillance des sauvegardes, démarrage de la machine, gardien de la machine).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "Installez Lima, qui exécute la machine CloudMachine : exécutez ceci dans Terminal", + "Install rclone (signs in to Google Drive for the machine)": + "Installez rclone (connecte la machine à Google Drive)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Installez les agents en arrière-plan (démarrage de la machine, gardien du tampon, surveillance des sauvegardes)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Installe rclone via Homebrew - CloudMachine utilise lui-même celui d'install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, le jeton et mapped/ de l'image de sauvegarde n'existent que sur le disque de la machine ; sans eux, les bandes de %@ ne peuvent pas être restaurées. La copie (tm-meta-sync, toutes les 15 min) va vers %@. Vérifiez : cloudmachine-agent vm-status, puis dans la machine : journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima indique que la machine fonctionne, mais une commande exécutée dedans n'a pas répondu. Sans elle, on ne sait rien de Samba, de rclone ni de l'envoi. Vérifiez : cloudmachine-agent vm-status", + "Machine": + "Machine", + "Machine %@": + "Machine %@", + "Machine & Upload Status": + "État de la machine et de l'envoi", + "Machine buffer": + "Tampon de la machine", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Aucune destination Time Machine n'est le partage de la machine (smb://tm@/CloudMachine) - aucune sauvegarde n'y est effectuée. La commande est affichée par : cloudmachine-agent vm-setup", + "Not running: %@": + "Arrêté : %@", + "Not set up": + "Non configurée", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "Une fois cet espace épuisé, rclone cesse d'envoyer, le tampon de la machine se remplit et les sauvegardes ne sont plus effectuées. Avec une croissance d'environ 600 MB par cycle horaire, cela représente environ %@ jours.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "Ou rclone.conf est manquant : ce Mac a déjà configuré la machine CloudMachine, elle n'est donc pas reconnectée à l'aveugle. Restaurez le fichier depuis une sauvegarde (la machine en garde sa propre copie dans %@). Pour vous connecter malgré tout, créez un fichier vide à l'emplacement affiché par `%@ config file` et relancez - le dossier existant est conservé.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Faites pointer Time Machine vers la machine : exécutez ceci dans Terminal (sudo requis ; Copier inclut le mot de passe)", + "Points to the machine": + "Pointe vers la machine", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Prépare un redémarrage : arrête la sauvegarde, attend un moment la fin de l'envoi, puis arrête proprement la machine.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "La lecture de la destination Time Machine n'a pas abouti en %@ s. C'est le comportement de tmutil lorsque sa destination se bloque.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "Le remote '%@' n'a PAS été remplacé. La nouvelle connexion reçoit l'étendue 'drive.file', qui ne voit que les fichiers créés avec son propre client_id. La sauvegarde existante a très probablement été créée par la connexion actuelle et deviendrait invisible pour elle. Avant toute écriture, le nouveau jeton est vérifié par rapport à la sauvegarde existante, et le remplacement est abandonné s'il ne la voit pas. La machine garde sa propre copie de la configuration jusqu'à vm-setup --replace-rclone-config. Pour continuer, relancez avec --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Télécommande : OUVERTE sur le Mac à 127.0.0.1:5572 - n'importe quelle page web peut envoyer des commandes rclone ; voir vm/README.md (portForwards)", + "Running": + "En fonctionnement", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone ou punchfs n'est pas actif dans la machine : Time Machine ne peut donc pas écrire, ou les bandes n'arrivent pas sur Google Drive. Vérifiez : cloudmachine-agent vm-status", + "Service %@": + "Service %@", + "Services": + "Services", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "Configurez la machine CloudMachine (la première fois, elle télécharge Ubuntu - plusieurs minutes)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "Reconfigurer la machine CloudMachine pour qu'elle affiche la commande Time Machine", + "Set up the machine": + "Configurer la machine", + "Setting up the CloudMachine machine": + "Configuration de la machine CloudMachine", + "Start the CloudMachine machine": + "Démarrez la machine CloudMachine", + "Start the machine": + "Démarrer la machine", + "Starting the CloudMachine machine": + "Démarrage de la machine CloudMachine", + "Still to upload: %@ GiB": + "Reste à envoyer : %@ GiB", + "Stopping the Time Machine backup...": + "Arrêt de la sauvegarde Time Machine...", + "Stopping the machine %@...": + "Arrêt de la machine %@...", + "The CloudMachine machine does not answer": + "La machine CloudMachine ne répond pas", + "The CloudMachine machine is not running": + "La machine CloudMachine n'est pas en fonctionnement", + "The CloudMachine machine is not set up yet": + "La machine CloudMachine n'est pas encore configurée", + "The CloudMachine machine is stopped": + "La machine CloudMachine est arrêtée", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "La sauvegarde est arrêtée, l'envoi dispose de 30 minutes au maximum, puis la machine s'arrête proprement. Elle redémarre à la prochaine ouverture de session.", + "The machine %@ is not running - nothing to prepare.": + "La machine %@ n'est pas en fonctionnement - rien à préparer.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "La machine est arrêtée et tout est arrivé sur Google Drive. Vous pouvez redémarrer le Mac ; la machine redémarre à l'ouverture de session.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "La machine est arrêtée. %@ GiB n'étaient pas encore arrivés sur Google Drive - ils sont conservés dans le tampon de la machine et seront envoyés après le prochain démarrage. Vous pouvez redémarrer le Mac.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "La machine est arrêtée. rclone n'a pas indiqué ce qui restait à envoyer ; ce qui n'a pas été envoyé est conservé dans le tampon de la machine et sera envoyé après le prochain démarrage. Vous pouvez redémarrer le Mac.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "Le disque de la machine est un fichier sur ce disque et il grandit à mesure que le tampon d'envoi se remplit. Sans espace libre, la machine ne peut pas écrire dans le tampon, et les instantanés locaux de Time Machine n'ont plus de place non plus.", + "The image's metadata has never been copied to Drive": + "Les métadonnées de l'image n'ont jamais été copiées sur Drive", + "The image's metadata was last copied to Drive %@ ago": + "Les métadonnées de l'image ont été copiées sur Drive pour la dernière fois il y a %@", + "The machine's disk is running out of space (%@ GB)": + "Le disque de la machine manque d'espace (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "La nouvelle connexion NE voit PAS la sauvegarde existante (%@), donc le remote '%@' n'a PAS été remplacé et rclone.conf est inchangé. Gardez la connexion actuelle, ou connectez-vous avec l'identifiant (client_id) qui a créé la sauvegarde.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "Le tampon d'envoi se trouve sur ce disque. Le gardien met Time Machine en pause avant qu'il ne soit plein ; si l'envoi ne rattrape pas son retard, les sauvegardes restent en pause.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Ces bandes n'existent que dans le tampon de la machine. La sauvegarde sur Google Drive est INCOMPLÈTE et risque de ne pas s'ouvrir.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine sauvegarde vers la machine ; sans elle, aucune sauvegarde n'est effectuée. Démarrez-la : limactl start %@ (ou le bouton « Démarrer la machine » de l'app).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine n'a pas arrêté sa sauvegarde en 2 minutes (ou tmutil n'a pas répondu) - la machine n'a PAS été arrêtée. Réessayez dans un instant.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine a créé son image : arrêtez la sauvegarde, puis convertissez l'image en bandes de 32 MB", + "To upload": + "À envoyer", + "Unknown whether the CloudMachine machine is running": + "On ignore si la machine CloudMachine fonctionne", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Attente de l'envoi vers Google Drive (%@ min au maximum)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "Avec --replace-existing : confirme que la nouvelle connexion (étendue 'drive.file') peut ne pas voir la sauvegarde existante. Le nouveau jeton est tout de même vérifié d'abord par rapport à la sauvegarde.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "Sans lui, il est impossible de vérifier si quoi que ce soit est arrivé sur Drive - le gardien de la machine est alors aveugle.", + "limactl did not answer": + "limactl n'a pas répondu", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl n'a pas répondu (ou n'est pas installé). Cela ne signifie pas que la machine est en panne - cela signifie que personne n'a vérifié.", + "limactl start failed: %@": + "Échec de limactl start : %@", + "limactl stop failed: %@": + "Échec de limactl stop : %@", + "punchfs is close to its open-file limit": + "punchfs approche de sa limite de fichiers ouverts", + "punchfs open files": + "Fichiers ouverts de punchfs", + "rclone's remote control is open on this Mac": + "La télécommande de rclone est ouverte sur ce Mac", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') a renvoyé une erreur : on ignore donc si le disque de la machine peut encore grandir sur ce Mac.", + "Google Drive's daily upload limit stops the upload": + "La limite d'envoi quotidienne de Google Drive bloque l'envoi", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google a refusé un envoi pour la dernière fois il y a %@ (750 GB par jour). Depuis, les sauvegardes ne sont que dans le tampon de la machine sur ce Mac. rclone réessaie toutes les 5 min et reprend tout seul quand la limite est levée ; la garde met Time Machine en pause si plus de %@ GiB attendent.", + "Usage on Google Drive is not being measured": + "L'espace utilisé sur Google Drive n'est pas mesuré", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "La dernière mesure (%@ GB) date du %@, il y a %@ - rclone size n'a pas répondu depuis. Tant qu'il ne répond pas, rien ne surveille la limite de %@ GB : les alertes à 90 %% et 100 %% restent muettes. Vérifiez vm-status, ou cliquez sur Mesurer maintenant dans la fenêtre.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size n'a pas répondu une seule fois. Tant qu'il ne répond pas, rien ne surveille la limite de %@ GB : les alertes à 90 %% et 100 %% restent muettes. Vérifiez vm-status, ou cliquez sur Mesurer maintenant dans la fenêtre.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Enregistré dans le trousseau. La connexion à Google Drive (configure-remote) les utilisera.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Enregistré dans le trousseau. La connexion Google Drive existante garde son ancien client_id, et sur ce Mac il vaut mieux qu'il en reste ainsi : une connexion établie avec les nouvelles clés (étendue 'drive.file') ne peut pas voir la sauvegarde créée par l'ancienne. Ne remplacez pas la connexion ici ; les nouvelles clés sont destinées à un Mac qui n'est pas encore connecté.", + "it is not there for the new token": + "elle n'y figure pas pour le nouveau jeton", + "Cancel": + "Annuler", + "ACTION NEEDED": + "ACTION REQUISE", + "WILL PASS BY ITSELF — DO NOTHING": + "SE RÉSOUDRA TOUT SEUL — NE RIEN FAIRE", + "UNKNOWN — CHECK AGAIN SHORTLY": + "INCONNU — VÉRIFIEZ DE NOUVEAU BIENTÔT", + "ALL GOOD": + "TOUT VA BIEN", + "Upload is not working": + "L'envoi ne fonctionne pas", + "Upload stopped — no space left on Google Drive": + "Envoi arrêté — plus d'espace sur Google Drive", + "%@ backup fragments not uploaded": + "%@ fragments de sauvegarde non envoyés", + "Upload cannot keep up with writes": + "L'envoi ne suit pas les écritures", + "Upload paused — Google daily limit": + "Envoi en pause — limite quotidienne de Google", + "Uploading to Google Drive — %@ queued": + "Envoi vers Google Drive — %@ en attente", + "Everything uploaded to Google Drive": + "Tout est envoyé vers Google Drive", + "Unknown what is waiting in the queue": + "On ignore ce qui est en attente dans la file", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Il n'y a pas de connexion à Google Drive, les sauvegardes ne sont donc effectuées que sur ce Mac. Si cela ne se règle pas tout seul en quelques minutes, vérifiez le réseau et la connexion à Drive.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Il n'y a plus d'espace sur Google Drive. Cela ne se réglera PAS tout seul — vous devez libérer de l'espace sur Drive. D'ici là, Time Machine est en pause, afin de ne pas remplir le disque de ce Mac.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ fragments de sauvegarde n'ont pas pu être envoyés et rclone a cessé d'essayer. Ces fragments n'existent que sur ce Mac, donc la sauvegarde sur Drive est incomplète. Une vérification est nécessaire.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine écrit plus vite que l'envoi n'avance, et le tampon est plein. La sauvegarde sera mise en pause jusqu'à ce que l'envoi rattrape son retard — c'est une protection contre le remplissage du disque, pas une panne.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google accepte 750 GB par jour et cette limite est atteinte. Il n'y a rien à faire : la limite se renouvelle toute seule, généralement en quelques heures. Entre-temps, les sauvegardes Time Machine se font normalement et attendent dans le tampon — elles seront envoyées dès que Google acceptera de nouveau.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ fragments de sauvegarde sont en file d'attente et en route vers Drive.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "Rien n'est en attente dans la file — la sauvegarde sur Google Drive est complète.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone n'a pas répondu à la question sur la file, on ignore donc combien de sauvegardes attendent encore d'être envoyées. Cela ne signifie pas que quelque chose est cassé — sous charge, la réponse peut arriver en retard. Cela signifie seulement que, pour l'instant, personne ne le sait. Si cela persiste, la vérification du cycle de sauvegarde le signalera.", + "unknown error": + "erreur inconnue", + "rclone lsf ended with an error": + "rclone lsf s'est terminé avec une erreur", + "This Mac is close to its space limit on Google Drive": + "Ce Mac approche de sa limite d'espace sur Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ GB utilisés sur %@ GB. Time Machine supprime les plus anciennes sauvegardes pour rester dans son quota ; vérifiez que le quota est réglé (vm-status).", + "This Mac is over its space limit on Google Drive": + "Ce Mac a dépassé sa limite d'espace sur Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ GB utilisés sur %@ GB. Réglez le quota Time Machine (commande dans la fenêtre de l'app ou vm-status), ou augmentez la limite.", + "not set": + "non défini", + "%@ GB - usage not measured yet": + "%@ GB - utilisation pas encore mesurée", + "%@ of %@ GB used (%@%%)": + "%@ sur %@ GB utilisés (%@ %%)", + "The limit must be a whole number of GB above zero.": + "La limite doit être un nombre entier de GB supérieur à zéro.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "machines.json est illisible, il n'a donc pas été écrasé. Corrigez-le ou supprimez-le d'abord.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' n'est pas un nom de dossier valide : utilisez des lettres minuscules, des chiffres et des tirets.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Ce Mac sauvegarde déjà dans le dossier '%@'. Passer à '%@' démarrerait une nouvelle sauvegarde vide et abandonnerait l'existante, donc rien n'a été modifié.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Ce Mac a déjà une installation CloudMachine, dont la sauvegarde est dans le dossier '%@'. Passer à '%@' l'abandonnerait, donc rien n'a été modifié.", + "Could not save the folder name to %@: %@": + "Impossible d'enregistrer le nom du dossier dans %@ : %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew n'est pas installé. Installez-le manuellement : https://brew.sh", + "Installing rclone failed: %@": + "Échec de l'installation de rclone : %@", + "Installed rclone.": + "rclone installé.", + "Own Google credentials: set.": + "Identifiants Google personnels : définis.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "INCOMPLET : %@ est manquant - rclone utilisera quand même le client_id partagé de rclone.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Aucun identifiant personnel - rclone utilise le client_id partagé, soumis à une limite de débit commune et retiré en 2026.", + "Empty value - not saving.": + "Valeur vide - non enregistrée.", + "Keychain refused: %@": + "Trousseau a refusé : %@", + "DIRTY-TREE": + "ARBORESCENCE-MODIFIÉE", + "Cannot create the working directory: %@": + "Impossible de créer le dossier de travail : %@", + "Could not read the rclone version number.": + "Impossible de lire le numéro de version de rclone.", + "Could not download %@.": + "Impossible de télécharger %@.", + "No entry for %@ in SHA256SUMS.": + "Aucune entrée pour %@ dans SHA256SUMS.", + "Could not compute the checksum.": + "Impossible de calculer la somme de contrôle.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "La somme de contrôle SHA256 ne correspond pas - installation ANNULÉE.\n attendue : %@\n calculée : %@", + "Could not unpack the archive.": + "Impossible de décompresser l'archive.", + "Could not install the binary: %@": + "Impossible d'installer le binaire : %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %@ installé dans %@ (la somme de contrôle SHA256 correspond).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ n'a pas répondu dans le délai imparti (le processus a été laissé orphelin en arrière-plan).", + "Cannot launch %@: %@": + "Impossible de lancer %@ : %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "Le remote '%@' existe déjà et n'a PAS été modifié.\nLe remplacer change le jeton et l'étendue des autorisations ; un identifiant avec l'étendue 'drive.file' ne voit pas les fichiers créés par le précédent, la sauvegarde existante deviendrait donc inaccessible.\nSi vous voulez vraiment le remplacer, sauvegardez d'abord ~/.config/rclone/rclone.conf puis relancez avec --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "Impossible de vérifier si le remote '%@' existe déjà (rclone listremotes n'a pas répondu ou a échoué), donc rien n'a été modifié. Exécutez `%@ listremotes` pour voir l'erreur, puis réessayez.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "Impossible de vérifier si ce Mac a déjà une installation CloudMachine (rclone n'a pas répondu), donc aucun dossier n'a été choisi. Réessayez dans un instant.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "Échec de rclone authorize (%@). Si ce binaire est manquant, commencez par : cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "Impossible de lire le jeton dans la sortie de rclone authorize.", + "rclone config create failed.": + "Échec de rclone config create.", + "Connected to Google Drive as remote '%@', folder %@.": + "Connecté à Google Drive en tant que remote '%@', dossier %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil ne répond pas - on ignore où va la sauvegarde", + "No successful backup for %@": + "Aucune sauvegarde réussie depuis %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Dernière sauvegarde TERMINÉE : %@. Le cycle étant horaire, cela fait %@ exécutions manquées.", + "There is NOT A SINGLE successful backup": + "Il n'y a AUCUNE sauvegarde réussie", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Les préférences de Time Machine ne contiennent aucune date de sauvegarde terminée pour cette destination.", + "The last backup attempt did not end in a backup": + "La dernière tentative de sauvegarde n'a pas abouti à une sauvegarde", + "The attempt at %@ is newer than the last successful backup at %@.": + "La tentative du %@ est plus récente que la dernière sauvegarde réussie du %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine signale une erreur lors de la dernière exécution (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Un RESULT différent de zéro dans les préférences de Time Machine signifie que l'exécution a échoué.", + "rclone failed to upload %@ files": + "rclone n'a pas pu envoyer %@ fichiers", + "Buffer full of nothing but unsent data": + "Tampon rempli uniquement de données non envoyées", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone n'a plus rien à évincer du tampon - l'envoi ne suit pas ou est bloqué.", + "The rclone control interface is not responding": + "L'interface de contrôle de rclone ne répond pas", + "Google Drive is running out of space (%@ GB)": + "Google Drive manque d'espace (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Le disque du Mac manque d'espace (%@ GB)", + "Cannot read the Time Machine preferences": + "Impossible de lire les préférences de Time Machine", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ est illisible - le plus souvent, l'Accès complet au disque est manquant. Sans ce fichier, il est IMPOSSIBLE de savoir quand la dernière sauvegarde a été faite ; nous le traitons donc comme une panne, et non comme l'absence de problème.", + "Cannot measure free space on the Mac's disk": + "Impossible de mesurer l'espace libre sur le disque du Mac", + "%@ days": + "%@ jours", + "CloudMachine: backup is not working": + "CloudMachine : la sauvegarde ne fonctionne pas", + "unknown reason": + "raison inconnue", + "osascript did not show the notification (permissions or no graphical session)": + "osascript n'a pas affiché la notification (autorisations ou aucune session graphique)", + "UNDELIVERED ALARM: %@": + "ALERTE NON DISTRIBUÉE : %@", + "from %@, reason: %@": + "de %@, raison : %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "La notification système n'a pas été distribuée - vous ne verrez cette alerte QU'ICI.", + "%@ (%@ ago)": + "%@ (il y a %@)", + "%@ - marker from the FUTURE": + "%@ - repère situé dans le FUTUR", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (il y a %@) - LA SURVEILLANCE NE FONCTIONNE PEUT-ÊTRE PAS", + "NEVER - the watchdog has not recorded a single run": + "JAMAIS - la surveillance n'a enregistré aucune exécution", + "Could not find the launchd/ directory with templates.": + "Impossible de trouver le dossier launchd/ contenant les modèles.", + "Could not find the compiled cloudmachine-agent binary.": + "Impossible de trouver le binaire cloudmachine-agent compilé.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "ANNULÉ : impossible de placer cloudmachine-agent à un emplacement stable\n(%@) - le plus souvent par manque d'espace ou d'autorisations.\nAgents pointant vers %@ NON installés : ce chemin\ndisparaît au prochain `swift build` ou `git clean`, et les sauvegardes s'arrêtent\nsans aucun signal visible.", + "ABORTED: %@": + "ANNULÉ : %@", + "Could not list the templates in %@.": + "Impossible de lister les modèles dans %@.", + "could not read the template %@": + "impossible de lire le modèle %@", + "could not write %@ (lack of space or permissions)": + "impossible d'écrire %@ (manque d'espace ou d'autorisations)", + "launchctl load refused to load %@": + "launchctl load a refusé de charger %@", + "NOT A SINGLE agent was loaded.": + "AUCUN agent n'a été chargé.", + "Only these went in: %@.": + "Seuls ceux-ci ont été installés : %@.", + "Could not load any launchd agent.": + "Impossible de charger un agent launchd.", + "Installed agents: %@": + "Agents installés : %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " ATTENTION : proche de la limite - les nouvelles bandes échoueront avec EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands sur Google Drive n'est pas vide - il peut contenir une autre sauvegarde. Il n'est PAS écrasé ; vérifiez-le à la main.", + "Address: %@": + "Adresse : %@", + "Already prepared (%@ exists) - nothing to do.": + "Déjà préparé (%@ existe) - rien à faire.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Convertit la nouvelle image vide de Time Machine dans la machine en bandes de 32 MB et déplace les bandes vers Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "Copie rclone.conf dans la machine même si elle en a déjà un.", + "Copying the converted image into the machine failed: %@": + "La copie de l'image convertie dans la machine a échoué : %@", + "Copying the image to the Mac failed: %@": + "La copie de l'image vers le Mac a échoué : %@", + "Could not ask Lima about the machine: %@": + "Impossible d'interroger Lima au sujet de la machine : %@", + "Could not carry the Time Machine files over: %@": + "Impossible de transférer les fichiers Time Machine : %@", + "Could not check the image in the machine.": + "Impossible de vérifier l'image dans la machine.", + "Could not copy the rclone configuration into the machine.": + "Impossible de copier la configuration de rclone dans la machine.", + "Could not create %@ on Google Drive: %@": + "Impossible de créer %@ sur Google Drive : %@", + "Could not create %@: %@": + "Impossible de créer %@ : %@", + "Could not find the vm/ directory with the machine template.": + "Impossible de trouver le dossier vm/ contenant le modèle de machine.", + "Could not read the image size.": + "Impossible de lire la taille de l'image.", + "Could not set the SMB password of user %@ in the machine.": + "Impossible de définir le mot de passe SMB de l'utilisateur %@ dans la machine.", + "Could not stop smbd in the machine.": + "Impossible d'arrêter smbd dans la machine.", + "Could not write %@ in the machine.": + "Impossible d'écrire %@ dans la machine.", + "Could not write the password file %@.": + "Impossible d'écrire le fichier de mot de passe %@.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "Crée ou démarre la machine CloudMachine (Lima), lui transmet la configuration de rclone et un mot de passe SMB, et affiche la commande Time Machine.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "Création de la machine %@ (le premier démarrage télécharge Ubuntu et installe des paquets - plusieurs minutes)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Terminé : %@ a des bandes de %@ MB sur Google Drive ; l'original est conservé dans %@ dans la machine. Lancez la sauvegarde : tmutil startbackup", + "exit code %@, no message": + "code de sortie %@, aucun message", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Métadonnées image : JAMAIS copiées vers %@ - vérifiez tm-meta-sync dans la machine", + "Image metadata: copied %@ ago to %@": + "Métadonnées image : copiées il y a %@ vers %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Métadonnées image : dernière copie il y a %@ - EN RETARD (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Métadonnées image : pas encore copiées - attend vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "Sauvegarde %@, mise en pause par le gardien %@ : %@", + "Free in machine: %@ GiB": + "Libre machine : %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n a trouvé des problèmes : %@", + "Google Drive folder: %@": + "Dossier Google Drive : %@", + "hdiutil attach of the converted image failed: %@": + "Échec de hdiutil attach sur l'image convertie : %@", + "hdiutil convert failed: %@": + "Échec de hdiutil convert : %@", + "Image name in the machine (default: from the computer name).": + "Nom de l'image dans la machine (par défaut : dérivé du nom de l'ordinateur).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "L'installation de l'image convertie a ÉCHOUÉ : %@\nsmbd reste ARRÊTÉ pour que Time Machine n'ouvre pas une image à moitié installée. L'original est dans %@ dans la machine.", + "limactl create failed: %@": + "Échec de limactl create : %@", + "limactl list failed: %@": + "Échec de limactl list : %@", + "limactl not found - install Lima: brew install lima": + "limactl introuvable - installez Lima : brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "Échec de limactl start : %@\nJournal propre à la machine : %@", + "Machine %@ is running.": + "La machine %@ est en fonctionnement.", + "Machine %@ was already running.": + "La machine %@ était déjà en fonctionnement.", + "Machine: %@ (%@)": + "Machine : %@ (%@)", + "Machine: %@": + "Machine : %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Machine : non créée - exécutez : cloudmachine-agent vm-setup", + "no answer within the time limit": + "aucune réponse dans le délai imparti", + "No image %@ in the machine.": + "Aucune image %@ dans la machine.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "Aucune image dans la machine pour l'instant - faites d'abord pointer Time Machine vers le partage et laissez-le en créer une.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "Aucune configuration rclone dans %@ - connectez d'abord Google Drive (configure-remote).", + "no SMB destination": + "aucune destination SMB", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "Une vérification du tampon d'envoi de la machine : met Time Machine en pause quand il se remplit, reprend ce qu'elle a mis en pause.", + "Packing the converted image failed: %@": + "L'empaquetage de l'image convertie a échoué : %@", + "Packing the image failed: %@": + "L'empaquetage de l'image a échoué : %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "Aucune réponse de la machine (rclone rc) - le gardien ne ferait rien.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Affiche seulement ce que le gardien déciderait - pour essayer des seuils sur une machine jetable.", + "Pause above this many GiB in the buffer.": + "Mettre en pause au-dessus de ce nombre de GiB dans le tampon.", + "Pause when the machine has less free than this, in GiB.": + "Mettre en pause quand la machine a moins d'espace libre que ce nombre de GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Faites pointer Time Machine vers la machine (une seule fois, mot de passe administrateur requis) :", + "punchfs files: %@ open, limit %@": + "Fichiers punchfs : %@ ouverts, limite %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "La configuration de rclone est déjà dans la machine - conservée (--replace-rclone-config la remplace).", + "rclone configuration copied into the machine.": + "Configuration de rclone copiée dans la machine.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm ou punchfs ne fonctionne pas dans la machine - voir cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Reprendre en dessous de ce nombre de GiB (uniquement une sauvegarde mise en pause par le gardien).", + "Service %@: %@": + "Service %@ : %@", + "Several images in the machine (%@) - choose one with --bundle.": + "Plusieurs images dans la machine (%@) - choisissez-en une avec --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Affiche la machine : adresse, services, tampon d'envoi, espace libre et destination Time Machine.", + "SMB password stored in %@ (mode 600).": + "Mot de passe SMB enregistré dans %@ (mode 600).", + "The converted image does not have %@-byte bands.": + "L'image convertie n'a pas de bandes de %@ octets.", + "The converted image has no APFS partition.": + "L'image convertie n'a pas de partition APFS.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "L'image occupe déjà %@ MB - cette commande ne convertit qu'une image neuve et vide (moins de %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "L'image est chiffrée - la conversion d'images chiffrées n'est pas prise en charge.", + "The image was not changed; smbd started again.": + "L'image n'a pas été modifiée ; smbd a redémarré.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "La machine ne répond pas - est-elle en fonctionnement ? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "La machine n'a pas d'adresse sur le réseau vzNAT.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "Les services de la machine n'ont pas démarré - vérifiez : cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine est en train de sauvegarder - arrêtez-le d'abord : tmutil stopbackup", + "Time Machine: %@": + "Time Machine : %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine : ne pointe PAS vers la machine (%@)", + "Time Machine: tmutil did not answer": + "Time Machine : tmutil n'a pas répondu", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil n'a pas répondu - l'image n'est pas modifiée tant que son état est inconnu.", + "unknown": + "inconnu", + "Unpacking the image failed: %@": + "La décompression de l'image a échoué : %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "Reste à envoyer : %@ GiB en %@ bandes, %@ en cours d'envoi (cache sur disque %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "%@ (la machine et son tampon d'envoi) exclu de Time Machine.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "ATTENTION : impossible d'exclure %@ de Time Machine - exécutez : tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Tampon d'envoi : aucune réponse de rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Quand Time Machine a créé son image vide, arrêtez la sauvegarde (tmutil stopbackup) et exécutez : cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "%@ GiB non envoyés, %@ GiB libres (pause au-dessus de %@ GiB non envoyés ou en dessous de %@ GiB libres, reprise en dessous de %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Envoi : la limite quotidienne de Google a refusé un envoi il y a %@ - rclone réessaie toutes les 5 min et reprendra tout seul", + "no": + "non", + "running": + "en cours", + "stopped": + "arrêté", + "yes": + "oui", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nLe modèle précédent est dans %@ - recopiez-le sur lima.yaml et exécutez limactl start %@.", + "Could not read this app's machine template (limactl template copy).": + "Impossible de lire le modèle de machine de cette app (limactl template copy).", + "Could not replace %@: %@": + "Impossible de remplacer %@ : %@", + "Machine %@ already runs this app's template.": + "La machine %@ utilise déjà le modèle de cette app.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "La machine %@ utilise maintenant le modèle de cette app ; le précédent est dans %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Fait passer la machine au modèle de cette app (deux redémarrages, jamais pendant une sauvegarde).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "Aucune machine %@ - créez-la avec : cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Modèle : PLUS ANCIEN que celui de cette app - exécutez : cloudmachine-agent vm-update", + "Template: not compared": + "Modèle : non comparé", + "Template: this app's": + "Modèle : celui de cette app", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "La machine n'a pas de %@ - exécutez d'abord cloudmachine-agent vm-setup.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "La machine a redémarré, mais tous les services ne fonctionnent pas - vérifiez : cloudmachine-agent vm-status. Le modèle précédent est dans %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "Le modèle modifie la machine elle-même (%@) - cela demande une nouvelle machine, pas une mise à jour.", + "The upload to Google Drive hangs": + "L'envoi vers Google Drive est bloqué", + "Time Machine is backing up - try again when it has finished.": + "Time Machine est en train de sauvegarder - réessayez quand elle sera terminée.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Envoi : BLOQUÉ - bandes en cours, aucune envoyée depuis %@ (réseau ?) ; voir /var/log/rclone-tm.log dans la machine", + "limactl stop failed - nothing was changed.": + "Échec de limactl stop - rien n'a été modifié.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone a des bandes en cours, mais aucune n'a été envoyée depuis %@ - généralement une connexion réseau coupée, que rclone ne signale pas comme une erreur. Les sauvegardes depuis ce moment ne sont que dans le tampon de la machine. Quand le réseau revient, l'envoi reprend tout seul (le 28.10.2026 en 80 s) ; sinon, redémarrer la machine (prepare-shutdown, limactl start) coupe les connexions mortes.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil n'a pas répondu - la machine n'est pas redémarrée tant que son état est inconnu.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+he.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+he.swift new file mode 100644 index 0000000..bd5e940 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+he.swift @@ -0,0 +1,951 @@ +// Hebrew translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let he: [String: String] = [ + "Space limit: %@": + "מגבלת נפח: %@", + " Time Machine quota not set to match - run: %@": + " מכסת Time Machine לא הוגדרה בהתאם - הרץ: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "קובע כמה מ-Google Drive מותר ל-Mac הזה להשתמש, ומדפיס את פקודת המכסה של Time Machine.", + "Limit in GB.": + "המגבלה ב-GB.", + "Limit for this Mac: %@ GB.": + "מגבלה ל-Mac הזה: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "עכשיו הגדר את מכסת Time Machine (נדרשת סיסמת מנהל):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - בדיקה, הגדרת Google Drive והתקנה. נקרא על ידי launchd לפי לוח זמנים, או ידנית מהמסוף.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "מתחבר ל-Google Drive דרך rclone (OAuth בדפדפן) ויוצר את תיקיית המכונה הזו.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "החלפת החיבור הקיים. מסוכן: מחליף את האסימון וההרשאות.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "אורז את build/CloudMachine.app לקובץ build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "שגיאה: %@ חסר - הרץ קודם 'cloudmachine-agent build-app'", + "==> Preparing the staging folder": + "==> מכין את תיקיית ההרכבה", + "==> Creating %@": + "==> יוצר את %@", + "ERROR: hdiutil exited with code %@.": + "שגיאה: hdiutil הסתיים בקוד %@.", + "==> Done: %@": + "==> הסתיים: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "בהפעלה הראשונה (האפליקציה אינה חתומה בחשבון מפתח של Apple):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. פתח את %@ וגרור את CloudMachine.app אל היישומים.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. ב-Finder, לחץ לחיצה ימנית על CloudMachine.app -> פתח -> פתח\n (לחיצה כפולה רגילה מציגה את חסימת Gatekeeper \"מפתח לא מזוהה\").", + "3. Later launches work normally, with a double-click.": + "3. הפעלות מאוחרות יותר פועלות כרגיל, בלחיצה כפולה.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "בונה את CloudMachine.app (Release) - ממשק גרפי + cloudmachine-agent ב-Contents/MacOS/, וכן launchd/, vm/ ו-config/ כמשאבים.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "קבצים בינאריים ל-Apple Silicon ול-Intel יחד (כך CI בונה גרסה; מיותר מקומית).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> בונה את CloudMachineApp + cloudmachine-agent (release) - גרסה %@ (%@)", + "ERROR: swift build exited with code %@.": + "שגיאה: swift build הסתיים בקוד %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "שגיאה: swift build --show-bin-path לא דיווח על תיקיית הקבצים הבינאריים.", + "ERROR: no built binary found at %@": + "שגיאה: לא נמצא קובץ בינארי שנבנה ב-%@", + "==> Assembling the .app bundle in %@": + "==> מרכיב את חבילת ה-.app ב-%@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> אזהרה: אתה בונה מעץ עבודה מלוכלך - הגרסה לא תצביע על commit.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "שגיאה: Resources/AppIcon.icns חסר - צור אותו: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> חותם בתעודה המקומית '%@' (גישה מלאה לדיסק תישמר גם אחרי בנייה מחדש)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> חותם ad-hoc (ללא חשבון מפתח של Apple) - הרץ פעם אחת 'cloudmachine-agent setup-signing-cert' כדי שהרשאות TCC יישמרו אחרי בנייה מחדש", + "ERROR: codesign exited with code %@.": + "שגיאה: codesign הסתיים בקוד %@.", + "Next step: %@": + "הצעד הבא: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "יוצר תעודה מקומית בחתימה עצמית כדי שגישה מלאה לדיסק תישמר אחרי בנייה מחדש של האפליקציה.", + "Certificate '%@' already exists in %@, nothing to do.": + "התעודה '%@' כבר קיימת ב-%@, אין מה לעשות.", + "==> Generating the key and self-signed certificate '%@'...": + "==> יוצר את המפתח ואת התעודה בחתימה עצמית '%@'...", + "ERROR: openssl req exited with code %@.": + "שגיאה: openssl req הסתיים בקוד %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "שגיאה: openssl pkcs12 הסתיים בקוד %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> מייבא את התעודה אל %@ (מאשר מראש את /usr/bin/codesign, כדי שלא יבקש את סיסמת מחזיק המפתחות בכל פעם)...", + "ERROR: security import exited with code %@.": + "שגיאה: security import הסתיים בקוד %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> מגדיר אמון בתעודה לחתימת קוד בלבד...", + "ERROR: security add-trusted-cert exited with code %@.": + "שגיאה: security add-trusted-cert הסתיים בקוד %@.", + "Done. Certificate '%@' is now available to codesign.": + "הסתיים. התעודה '%@' זמינה כעת ל-codesign.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "'cloudmachine-agent build-app' הבא ישתמש בה אוטומטית במקום בחתימת ad-hoc.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "אחרי אותה בנייה מחדש אחת, הענק גישה מלאה לדיסק פעם אחרונה - בניות\nמחדש מאוחרות יותר לא יאפסו אותה, כל עוד אתה חותם באותה תעודה.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "בודק אם המחזור השעתי עדיין פועל (תאריך הגיבוי המוצלח האחרון) ומדווח על כשלים.", + "After this many hours without a successful backup we consider the cycle broken.": + "אחרי מספר השעות הזה ללא גיבוי מוצלח נחשיב את המחזור כתקול.", + "Only print the state, without a system notification.": + "הדפס את המצב בלבד, בלי התראת מערכת.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "קובץ העדפות אחר של Time Machine - לבדיקת המשגיח על דוגמה ידועה.", + "Last successful backup: %@": + "גיבוי מוצלח אחרון: %@", + "Last successful backup: NONE": + "גיבוי מוצלח אחרון: אין", + "Last attempt: %@": + "ניסיון אחרון: %@", + "WAITING (system startup): %@": + "ממתין (עליית המערכת): %@", + "Backup cycle: OK": + "מחזור הגיבוי: תקין", + "FAILURE: %@": + "כשל: %@", + " %@": + " %@", + "Check the state: %@": + "בדיקת המצב: %@", + "Preparing for restart": + "מתכונן להפעלה מחדש", + "Prepare for restart": + "היכון להפעלה מחדש", + "Prepare": + "היכון", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> אזהרה: git rev-list נכשל (%@) - התאריך ישמש כמספר הבנייה.", + "Agents: %@": + "סוכנים: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "לא ניתן להפעיל: %@ - פתח את CloudMachine או הרץ backup-health כדי לטעון אותם מחדש", + "Reloaded agents that could not start: %@": + "נטענו מחדש סוכנים שלא הצליחו לעלות: %@", + "Drive folder: %@": + "תיקיית Drive: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "שם התיקייה של ה-Mac הזה ב-Google Drive (ברירת מחדל: נגזר משם המחשב). נקבע פעם אחת ואי אפשר לשנותו אחר כך.", + "Backup watchdog: %@": + "משגיח הגיבוי: %@", + "Prints the version, the build number and the commit this binary was built from.": + "מדפיס את הגרסה, את מספר הבנייה ואת ה-commit שממנו נבנה הקובץ הבינארי.", + "Only one line, without a description.": + "שורה אחת בלבד, בלי תיאור.", + "Build from the working tree (outside a bundle) - no version data.": + "בנייה מעץ העבודה (מחוץ לחבילה) - אין נתוני גרסה.", + "Version: %@": + "גרסה: %@", + "Build: %@": + "בנייה: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "אזהרה: נבנה מעץ עבודה מלוכלך - הקובץ הבינארי מכיל קוד\n שאינו באף commit. מספר ה-commit אינו מתאר\n את מה שרץ בפועל.", + "Saving the space limit": + "שומר את מגבלת הנפח", + "Measuring usage on Google Drive": + "מודד שימוש ב-Google Drive", + "Google Drive did not answer - try again later.": + "Google Drive לא ענה - נסה שוב מאוחר יותר.", + "Measured.": + "נמדד.", + "Space limit for this Mac": + "מגבלת נפח ל-Mac הזה", + "Used on Google Drive": + "בשימוש ב-Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "נמדד %@. המשגיח מודד שוב כל כמה שעות.", + "Limit (GB)": + "מגבלה (GB)", + "Save": + "שמור", + "Measure now": + "מדוד עכשיו", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "מכסת Time Machine: %@ GB (70%% מהמגבלה - העותק ב-Drive גדול בכשליש מהגיבוי שבתוכו). Time Machine מוחק את הגיבויים הישנים ביותר כדי להישאר בתוכה.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "הגדר את מכסת Time Machine: הרץ זאת במסוף (נדרש sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "חבר את Google Drive: הרץ זאת במסוף ואשר בדפדפן", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "הענק ל-CloudMachine גישה מלאה לדיסק, כדי שיוכל לדעת אם הגיבויים הושלמו", + "Folder on Google Drive": + "תיקייה ב-Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "תיקייה אחת לכל Mac. נקבעת פעם אחת - אי אפשר לשנות אחרי החיבור.", + "Use lowercase letters, digits and dashes.": + "השתמש באותיות לטיניות קטנות, ספרות ומקפים.", + "Install rclone": + "התקן את rclone", + "Open System Settings": + "פתח את הגדרות המערכת", + "Install agents": + "התקן סוכנים", + "not checked": + "לא נבדק", + "none at all": + "אין כלל", + "%@ ago": + "לפני %@", + "Missing: %@": + "חסר: %@", + "Google Drive not connected": + "Google Drive לא מחובר", + "Time Machine does not point to CloudMachine": + "Time Machine לא מצביע על CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "לא ידוע אם Time Machine מצביע על CloudMachine - tmutil לא ענה", + "Backup in progress": + "גיבוי מתבצע", + "Unknown when the last backup was made": + "לא ידוע מתי בוצע הגיבוי האחרון", + "There is no completed backup at all": + "אין אף גיבוי שהושלם", + "No completed backup for %@": + "אין גיבוי שהושלם מאז %@", + "Ready": + "מוכן", + "Not saved: %@": + "לא נשמר: %@", + "Installing rclone": + "מתקין את rclone", + "Installing launchd agents": + "מתקין סוכני launchd", + "Starting backup": + "מתחיל גיבוי", + "Backup started.": + "הגיבוי התחיל.", + "Could not start the backup.": + "לא ניתן היה להתחיל את הגיבוי.", + "Stopping backup": + "עוצר גיבוי", + "Backup stopped.": + "הגיבוי נעצר.", + "Could not stop the backup.": + "לא ניתן היה לעצור את הגיבוי.", + "Could not prepare the AppleScript.": + "לא ניתן היה להכין את ה-AppleScript.", + "Unknown authorization error.": + "שגיאת הרשאה לא ידועה.", + "Waiting to upload": + "ממתין להעלאה", + "%@ files": + "%@ קבצים", + "nothing": + "כלום", + "Back up now": + "גבה עכשיו", + "Stop backup": + "עצור גיבוי", + "Open CloudMachine": + "פתח את CloudMachine", + "Quit": + "יציאה", + "Healthy": + "תקין", + "Attention": + "שים לב", + "Refreshed %@": + "רוענן %@", + "System Status": + "מצב המערכת", + "Action needed": + "נדרשת פעולה", + "not measured": + "לא נמדד", + "rclone did not answer": + "rclone לא ענה", + "Backup in Progress": + "גיבוי מתבצע", + "Files processed": + "קבצים שעובדו", + "Write speed": + "מהירות כתיבה", + "Operation phase": + "שלב הפעולה", + "Required Setup Steps": + "שלבי הגדרה נדרשים", + "Copy": + "העתק", + "Last completed backup": + "הגיבוי האחרון שהושלם", + "Last backup watchdog run": + "הרצה אחרונה של משגיח הגיבוי", + "not read": + "לא נקרא", + "Everything uploaded": + "הכול הועלה", + "File upload errors": + "שגיאות העלאת קבצים", + "Google Drive Credentials (OAuth 2.0)": + "פרטי הזדהות של Google Drive (OAuth 2.0)", + "Keychain OK": + "מחזיק המפתחות תקין", + "No custom keys": + "אין מפתחות מותאמים", + "Paste client_id...": + "הדבק client_id...", + "Paste client_secret...": + "הדבק client_secret...", + "Save securely in the Keychain": + "שמור באופן מאובטח במחזיק המפתחות", + "Refresh": + "רענן", + "Overview": + "סקירה", + "Backups": + "גיבויים", + "Storage": + "אחסון", + "Settings": + "הגדרות", + "Current status: %@": + "המצב הנוכחי: %@", + "Does not point to CloudMachine": + "לא מצביע על CloudMachine", + "tmutil did not answer": + "tmutil לא ענה", + "Backing up: %@ of %@": + "מגבה: %@ מתוך %@", + "%@ of %@": + "%@ מתוך %@", + "Copied": + "הועתק", + "No backup is running": + "אין גיבוי רץ", + "Time Machine starts the next one on its own schedule.": + "Time Machine יתחיל את הבא לפי לוח הזמנים שלו.", + "Backup cycle": + "מחזור גיבוי", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB ב-%@ חלקים, מועלים: %@", + "%@ bands": + "%@ חלקים", + "%@ fragments abandoned - only in the machine": + "%@ קטעים ננטשו - קיימים במכונה בלבד", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 עונה ב-Mac: Lima מעבירה את השליטה מרחוק של rclone במכונה, שאין לה סיסמה. כל דף אינטרנט פתוח בדפדפן יכול לשלוח לה פקודות - כולל מחיקת הגיבוי ב-Google Drive. הוסף למכונה את כלל portForwards מ-vm/cmsmb.yaml והפעל אותה מחדש (ראה vm/README.md).", + "A service in the CloudMachine machine is not running": + "שירות במכונה של CloudMachine אינו פועל", + "Address": + "כתובת", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "התקנת הסוכנים לא הושלמה - %@ מתוך %@ לא הותקנו:\n%@\n%@\nכל סוכן חסר הוא פונקציה שהפסיקה לפעול בלי הודעה (vm-guard עוקב אחר מאגר הביניים של המכונה, backup-health מדווח על כשלים). תקן את הסיבה וחזור על ההתקנה.", + "All running": + "הכול פועל", + "Also install the launchd agents (same as install-launchd).": + "התקן גם את סוכני launchd (כמו install-launchd).", + "At most this many minutes of waiting for the upload.": + "מספר הדקות המרבי להמתנה להעלאה.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "במגבלה כל חלק חדש נכשל עם EMFILE והגיבוי נעצר. בדיקה: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "מטמון בדיסק של המכונה", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "התחברנו ל-Google Drive, אבל לא ניתן היה ליצור את התיקייה '%@' - בלעדיה אין למכונה איפה לשמור את הגיבוי. בדוק את הרשאות החשבון ונסה שוב.", + "Convert the image": + "המר את התמונה", + "Converting the image to 32 MB bands": + "ממיר את התמונה לחלקים של 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "לא ניתן היה לבדוק בחיבור הנוכחי אם הגיבוי נמצא ב-Google Drive (%@), ולכן החיבור '%@' לא הוחלף: בלי תשובה זו אי אפשר לבדוק את ההתחברות החדשה מולו.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "מוריד את הקובץ הבינארי הרשמי של rclone אל ~/.cloudmachine/bin (התחברות ל-Google ו-rclone.conf של המכונה).", + "Free in the machine": + "פנוי במכונה", + "Free in the machine: %@": + "פנוי במכונה: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "יוצר ומתקין את סוכני launchd (אפליקציה, משגיח גיבוי, הפעלת המכונה, שומר המכונה).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "התקן את Lima, שמריצה את המכונה של CloudMachine: הרץ זאת במסוף", + "Install rclone (signs in to Google Drive for the machine)": + "התקן את rclone (מתחבר ל-Google Drive עבור המכונה)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "התקן את סוכני הרקע (הפעלת המכונה, שומר מאגר הביניים, משגיח הגיבוי)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "מתקין את rclone דרך Homebrew - CloudMachine עצמו משתמש בזה מ-install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, האסימון ו-mapped/ של תמונת הגיבוי קיימים רק בדיסק של המכונה; בלעדיהם אי אפשר לשחזר את החלקים ב-%@. ההעתק (tm-meta-sync, כל 15 דקות) נשלח אל %@. בדיקה: cloudmachine-agent vm-status, ואז במכונה: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima אומרת שהמכונה פועלת, אבל פקודה בתוכה לא חזרה. בלעדיה לא ידוע דבר על Samba, rclone או ההעלאה. בדיקה: cloudmachine-agent vm-status", + "Machine": + "מכונה", + "Machine %@": + "מכונה %@", + "Machine & Upload Status": + "מצב המכונה וההעלאה", + "Machine buffer": + "מאגר ביניים של המכונה", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "אף יעד של Time Machine אינו שיתוף המכונה (smb://tm@
/CloudMachine) - לא מתבצעים שם גיבויים. הפקודה מודפסת על ידי: cloudmachine-agent vm-setup", + "Not running: %@": + "לא פועל: %@", + "Not set up": + "לא מוגדר", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "כשהמקום נגמר, rclone מפסיק להעלות, מאגר הביניים של המכונה מתמלא והגיבויים נעצרים. בקצב גידול של כ-600 MB למחזור שעתי זה בערך %@ ימים.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "או ש-rclone.conf חסר: ה-Mac הזה כבר הגדיר את המכונה של CloudMachine, ולכן לא מתחברים מחדש באופן עיוור. שחזר את הקובץ מגיבוי (למכונה יש עותק משלה ב-%@). כדי להתחבר בכל זאת, צור קובץ ריק בנתיב ש-`%@ config file` מדפיס והרץ שוב - התיקייה הקיימת נשמרת.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "כוון את Time Machine אל המכונה: הרץ זאת במסוף (נדרש sudo; העתק כולל את הסיסמה)", + "Points to the machine": + "מצביע על המכונה", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "נערך להפעלה מחדש: עוצר את הגיבוי, ממתין זמן מה להעלאה, ואז עוצר את המכונה בצורה נקייה.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "קריאת היעד של Time Machine לא חזרה תוך %@ s. כך tmutil מתנהג כשהיעד שלו נתקע.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "החיבור '%@' לא הוחלף. ההתחברות החדשה מקבלת את ההיקף 'drive.file', שרואה רק קבצים שנוצרו תחת ה-client_id שלה. הגיבוי הקיים נוצר ככל הנראה על ידי החיבור הנוכחי ויהפוך בלתי נראה לה. לפני שנכתב משהו, האסימון החדש נבדק מול הגיבוי הקיים, וההחלפה מבוטלת אם הוא לא רואה אותו. למכונה יש עותק משלה של ההגדרות עד vm-setup --replace-rclone-config. כדי להמשיך, הרץ שוב עם --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "שליטה מרחוק: פתוחה ב-Mac בכתובת 127.0.0.1:5572 - כל דף אינטרנט יכול לשלוח פקודות rclone; ראה vm/README.md (portForwards)", + "Running": + "פועל", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone או punchfs במכונה אינם פעילים, ולכן ל-Time Machine אין לאן לכתוב או שהחלקים לא מגיעים ל-Google Drive. בדיקה: cloudmachine-agent vm-status", + "Service %@": + "שירות %@", + "Services": + "שירותים", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "הגדר את המכונה של CloudMachine (בפעם הראשונה מורידה Ubuntu - כמה דקות)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "הגדר שוב את המכונה של CloudMachine, כדי שתדפיס את פקודת Time Machine", + "Set up the machine": + "הגדר את המכונה", + "Setting up the CloudMachine machine": + "מגדיר את המכונה של CloudMachine", + "Start the CloudMachine machine": + "הפעל את המכונה של CloudMachine", + "Start the machine": + "הפעל את המכונה", + "Starting the CloudMachine machine": + "מפעיל את המכונה של CloudMachine", + "Still to upload: %@ GiB": + "נשאר להעלות: %@ GiB", + "Stopping the Time Machine backup...": + "עוצר את הגיבוי של Time Machine...", + "Stopping the machine %@...": + "עוצר את המכונה %@...", + "The CloudMachine machine does not answer": + "המכונה של CloudMachine לא עונה", + "The CloudMachine machine is not running": + "המכונה של CloudMachine לא פועלת", + "The CloudMachine machine is not set up yet": + "המכונה של CloudMachine עדיין לא הוגדרה", + "The CloudMachine machine is stopped": + "המכונה של CloudMachine נעצרה", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "הגיבוי נעצר, ההעלאה מקבלת עד 30 דקות, ואז המכונה נכבית בצורה נקייה. היא מתחילה שוב בהתחברות הבאה.", + "The machine %@ is not running - nothing to prepare.": + "המכונה %@ אינה פועלת - אין מה להכין.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "המכונה נעצרה וכל מה שהיה הגיע ל-Google Drive. אפשר להפעיל מחדש את ה-Mac; המכונה מתחילה שוב בהתחברות.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "המכונה נעצרה. %@ GiB עדיין לא הגיעו ל-Google Drive - הם נשמרים במאגר הביניים של המכונה ויועלו אחרי ההפעלה הבאה. אפשר להפעיל מחדש את ה-Mac.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "המכונה נעצרה. rclone לא אמר כמה נשאר להעלות; מה שלא הועלה נשמר במאגר הביניים של המכונה ויועלה אחרי ההפעלה הבאה. אפשר להפעיל מחדש את ה-Mac.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "הדיסק של המכונה הוא קובץ בדיסק הזה וגדל ככל שמאגר ההעלאה מתמלא. כשאין מקום, המכונה לא יכולה לכתוב למאגר, וגם לתמונות המצב המקומיות של Time Machine אין לאן ללכת.", + "The image's metadata has never been copied to Drive": + "המטא-נתונים של התמונה מעולם לא הועתקו ל-Drive", + "The image's metadata was last copied to Drive %@ ago": + "המטא-נתונים של התמונה הועתקו ל-Drive לאחרונה לפני %@", + "The machine's disk is running out of space (%@ GB)": + "בדיסק של המכונה נגמר המקום (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "ההתחברות החדשה לא רואה את הגיבוי הקיים (%@), ולכן החיבור '%@' לא הוחלף ו-rclone.conf לא השתנה. השאר את החיבור הנוכחי, או התחבר עם פרטי ההזדהות (client_id) שיצרו את הגיבוי.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "מאגר ההעלאה נמצא בדיסק הזה. השומר משהה את Time Machine לפני שהוא מתמלא; אם ההעלאה לא משלימה פער, הגיבויים נשארים מושהים.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "החלקים האלה קיימים רק במאגר הביניים של המכונה. הגיבוי ב-Google Drive לא שלם ועלול שלא להיפתח.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine מגבה אל המכונה, ולכן בלעדיה לא נעשה גיבוי. הפעל אותה: limactl start %@ (או הכפתור הפעל את המכונה באפליקציה).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine לא עצר את הגיבוי שלו תוך 2 דקות (או ש-tmutil לא ענה) - המכונה לא נעצרה. נסה שוב בעוד רגע.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine יצר את התמונה שלו: עצור את הגיבוי, ואז המר את התמונה לחלקים של 32 MB", + "To upload": + "להעלאה", + "Unknown whether the CloudMachine machine is running": + "לא ידוע אם המכונה של CloudMachine פועלת", + "Waiting for the upload to Google Drive (at most %@ min)...": + "ממתין להעלאה ל-Google Drive (לכל היותר %@ דקות)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "עם --replace-existing: מאשר שההתחברות החדשה (היקף 'drive.file') אולי לא רואה את הגיבוי הקיים. האסימון החדש עדיין נבדק קודם מול הגיבוי.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "בלעדיו אין דרך לבדוק אם משהו הגיע ל-Drive - שומר המכונה עיוור אז.", + "limactl did not answer": + "limactl לא ענה", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl לא ענה (או שאינו מותקן). זה לא אומר שהמכונה כבויה - זה אומר שאיש לא בדק.", + "limactl start failed: %@": + "limactl start נכשל: %@", + "limactl stop failed: %@": + "limactl stop נכשל: %@", + "punchfs is close to its open-file limit": + "punchfs קרוב למגבלת הקבצים הפתוחים", + "punchfs open files": + "קבצים פתוחים של punchfs", + "rclone's remote control is open on this Mac": + "השליטה מרחוק של rclone פתוחה ב-Mac הזה", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') החזיר שגיאה, ולכן איש לא יודע אם הדיסק של המכונה יכול עוד לגדול ב-Mac הזה.", + "Google Drive's daily upload limit stops the upload": + "מגבלת ההעלאה היומית של Google Drive עוצרת את ההעלאה", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google סירבה להעלאה לאחרונה לפני %@ (750 GB ביום). גיבויים מאז נמצאים רק במאגר הביניים של המכונה ב-Mac הזה. rclone מנסה שוב כל 5 דקות וממשיך מעצמו כשהמגבלה חולפת; השומר משהה את Time Machine אם ממתינים יותר מ-%@ GiB.", + "Usage on Google Drive is not being measured": + "השימוש ב-Google Drive אינו נמדד", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "המדידה האחרונה (%@ GB) היא מ-%@, לפני %@ - rclone size לא ענה מאז. עד שיענה, דבר לא עוקב אחר המגבלה של %@ GB: ההתראות על 90%% ועל 100%% שותקות. בדוק את vm-status, או לחץ על מדוד עכשיו בחלון.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size לא ענה אפילו פעם אחת. עד שיענה, דבר לא עוקב אחר המגבלה של %@ GB: ההתראות על 90%% ועל 100%% שותקות. בדוק את vm-status, או לחץ על מדוד עכשיו בחלון.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "נשמר במחזיק המפתחות. החיבור ל-Google Drive (configure-remote) ישתמש בהם.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "נשמר במחזיק המפתחות. החיבור הקיים ל-Google Drive שומר על ה-client_id הישן שלו, וב-Mac הזה כדאי שיישאר כך: חיבור שנוצר במפתחות החדשים (ההיקף 'drive.file') לא רואה את הגיבוי שנוצר בחיבור הישן. אל תחליף כאן את החיבור; המפתחות החדשים מיועדים ל-Mac שעדיין לא מחובר.", + "it is not there for the new token": + "הוא לא קיים עבור האסימון החדש", + "Cancel": + "ביטול", + "ACTION NEEDED": + "נדרשת פעולה", + "WILL PASS BY ITSELF — DO NOTHING": + "יעבור מעצמו - אל תעשה דבר", + "UNKNOWN — CHECK AGAIN SHORTLY": + "לא ידוע - בדוק שוב בעוד רגע", + "ALL GOOD": + "הכול תקין", + "Upload is not working": + "ההעלאה לא עובדת", + "Upload stopped — no space left on Google Drive": + "ההעלאה נעצרה - אין מקום פנוי ב-Google Drive", + "%@ backup fragments not uploaded": + "%@ קטעי גיבוי לא הועלו", + "Upload cannot keep up with writes": + "ההעלאה לא עומדת בקצב הכתיבה", + "Upload paused — Google daily limit": + "ההעלאה מושהית - מגבלה יומית של Google", + "Uploading to Google Drive — %@ queued": + "מעלה ל-Google Drive - %@ בתור", + "Everything uploaded to Google Drive": + "הכול הועלה ל-Google Drive", + "Unknown what is waiting in the queue": + "לא ידוע מה ממתין בתור", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "אין חיבור ל-Google Drive, ולכן גיבויים נעשים רק ב-Mac הזה. אם זה לא חולף מעצמו תוך כמה דקות, בדוק את הרשת ואת החיבור ל-Drive.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "אין מקום פנוי ב-Google Drive. זה לא יעבור מעצמו - צריך לפנות מקום ב-Drive. עד אז Time Machine מושהה, כדי שלא ימלא את הדיסק של ה-Mac הזה.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ קטעי גיבוי לא ניתנו להעלאה ו-rclone הפסיק לנסות. הקטעים האלה קיימים רק ב-Mac הזה, ולכן הגיבוי ב-Drive אינו שלם. צריך לבדוק.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine כותב מהר יותר ממה שההעלאה מתקדמת, ומאגר הביניים התמלא. הגיבוי יושהה עד שההעלאה תשלים פער - זו הגנה מפני מילוי הדיסק, לא תקלה.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google מקבלת 750 GB ביום והמגבלה הזו נוצלה. אין מה לעשות: המגבלה מתחדשת מעצמה, בדרך כלל תוך כמה שעות. בינתיים גיבויי Time Machine נעשים כרגיל וממתינים במאגר הביניים - הם יועלו ברגע ש-Google תחזור לקבל.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ קטעי גיבוי בתור ובדרך ל-Drive.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "דבר לא ממתין בתור - הגיבוי ב-Google Drive שלם.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone לא ענה על השאלה לגבי התור, ולכן לא ידוע כמה גיבויים עדיין ממתינים להעלאה. זה לא אומר שמשהו נשבר - תחת עומס התשובה יכולה להתאחר. זה אומר רק שכרגע איש לא יודע. אם זה נמשך, בדיקת מחזור הגיבוי תדווח על כך.", + "unknown error": + "שגיאה לא ידועה", + "rclone lsf ended with an error": + "rclone lsf הסתיים בשגיאה", + "This Mac is close to its space limit on Google Drive": + "ה-Mac הזה קרוב למגבלת הנפח שלו ב-Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ GB מתוך %@ GB בשימוש. Time Machine מוחק את הגיבויים הישנים ביותר כדי להישאר במכסה שלו; ודא שהמכסה מוגדרת (vm-status).", + "This Mac is over its space limit on Google Drive": + "ה-Mac הזה חרג ממגבלת הנפח שלו ב-Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ GB מתוך %@ GB בשימוש. הגדר את מכסת Time Machine (הפקודה בחלון האפליקציה או ב-vm-status), או הגדל את המגבלה.", + "not set": + "לא מוגדר", + "%@ GB - usage not measured yet": + "%@ GB - השימוש עדיין לא נמדד", + "%@ of %@ GB used (%@%%)": + "%@ מתוך %@ GB בשימוש (%@%%)", + "The limit must be a whole number of GB above zero.": + "המגבלה חייבת להיות מספר שלם של GB הגדול מאפס.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "אי אפשר לקרוא את machines.json, ולכן לא נכתב עליו דבר. תקן או הסר אותו קודם.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' אינו שם תיקייה תקין: השתמש באותיות לטיניות קטנות, ספרות ומקפים.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "ה-Mac הזה כבר מגבה לתיקייה '%@'. מעבר ל-'%@' היה מתחיל גיבוי חדש וריק ומשאיר את הקיים יתום, ולכן דבר לא שונה.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "ב-Mac הזה כבר יש התקנה של CloudMachine, והגיבוי שלה בתיקייה '%@'. מעבר ל-'%@' היה משאיר אותו יתום, ולכן דבר לא שונה.", + "Could not save the folder name to %@: %@": + "לא ניתן היה לשמור את שם התיקייה ב-%@: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew אינו מותקן. התקן אותו ידנית: https://brew.sh", + "Installing rclone failed: %@": + "התקנת rclone נכשלה: %@", + "Installed rclone.": + "rclone הותקן.", + "Own Google credentials: set.": + "פרטי הזדהות עצמיים של Google: מוגדרים.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "לא שלם: %@ חסר - rclone ישתמש ב-client_id המשותף שלו בכל זאת.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "אין פרטי הזדהות עצמיים - rclone משתמש ב-client_id המשותף, המוגבל בקצב במשותף ושיופסק ב-2026.", + "Empty value - not saving.": + "ערך ריק - לא נשמר.", + "Keychain refused: %@": + "מחזיק המפתחות סירב: %@", + "DIRTY-TREE": + "DIRTY-TREE", + "Cannot create the working directory: %@": + "לא ניתן ליצור את תיקיית העבודה: %@", + "Could not read the rclone version number.": + "לא ניתן היה לקרוא את מספר הגרסה של rclone.", + "Could not download %@.": + "לא ניתן היה להוריד את %@.", + "No entry for %@ in SHA256SUMS.": + "אין רשומה עבור %@ ב-SHA256SUMS.", + "Could not compute the checksum.": + "לא ניתן היה לחשב את סכום הביקורת.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "סכום הביקורת SHA256 אינו תואם - לא מתקין.\n צפוי: %@\n מחושב: %@", + "Could not unpack the archive.": + "לא ניתן היה לפתוח את הארכיון.", + "Could not install the binary: %@": + "לא ניתן היה להתקין את הקובץ הבינארי: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %@ הותקן ב-%@ (סכום הביקורת SHA256 תואם).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ לא הגיב בזמן שהוקצב (התהליך נשאר יתום ברקע).", + "Cannot launch %@: %@": + "לא ניתן להפעיל את %@: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "החיבור '%@' כבר קיים ולא נגעו בו.\nהחלפתו מחליפה את האסימון ואת היקף ההרשאות; פרטי הזדהות עם ההיקף 'drive.file' לא רואים קבצים שנוצרו על ידי קודמיהם, ולכן הגיבוי הקיים הופך בלתי נגיש.\nאם אתה באמת רוצה להחליף, גבה קודם את ~/.config/rclone/rclone.conf והרץ שוב עם --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "לא ניתן היה לבדוק אם החיבור '%@' כבר קיים (rclone listremotes לא ענה או נכשל), ולכן דבר לא שונה. הרץ `%@ listremotes` כדי לראות את השגיאה, ואז נסה שוב.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "לא ניתן היה לבדוק אם ב-Mac הזה כבר יש התקנה של CloudMachine (rclone לא ענה), ולכן לא נבחרה תיקייה. נסה שוב בעוד רגע.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize נכשל (%@). אם הקובץ הבינארי חסר, התחל ב: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "לא ניתן היה לקרוא את האסימון מהפלט של rclone authorize.", + "rclone config create failed.": + "rclone config create נכשל.", + "Connected to Google Drive as remote '%@', folder %@.": + "מחובר ל-Google Drive כחיבור '%@', תיקייה %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil לא מגיב - לא ידוע לאן הגיבוי הולך", + "No successful backup for %@": + "אין גיבוי מוצלח מזה %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "הגיבוי האחרון שהושלם: %@. המחזור שעתי, כלומר זה %@ הרצות שהוחמצו.", + "There is NOT A SINGLE successful backup": + "אין אף גיבוי מוצלח", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "העדפות Time Machine אינן כוללות תאריך של גיבוי שהושלם ליעד הזה.", + "The last backup attempt did not end in a backup": + "ניסיון הגיבוי האחרון לא הסתיים בגיבוי", + "The attempt at %@ is newer than the last successful backup at %@.": + "הניסיון ב-%@ חדש יותר מהגיבוי המוצלח האחרון ב-%@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine מדווח על שגיאה בהרצה האחרונה (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "RESULT שאינו אפס בהעדפות Time Machine פירושו שההרצה לא הצליחה.", + "rclone failed to upload %@ files": + "rclone נכשל בהעלאת %@ קבצים", + "Buffer full of nothing but unsent data": + "מאגר הביניים מלא בנתונים שלא נשלחו בלבד", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "לא נשאר ל-rclone מה לפנות ממאגר הביניים - ההעלאה לא עומדת בקצב או נתקעה.", + "The rclone control interface is not responding": + "ממשק השליטה של rclone לא מגיב", + "Google Drive is running out of space (%@ GB)": + "ב-Google Drive נגמר המקום (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "בדיסק של ה-Mac נגמר המקום (%@ GB)", + "Cannot read the Time Machine preferences": + "אי אפשר לקרוא את העדפות Time Machine", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ אינו קריא - לרוב חסרה גישה מלאה לדיסק. בלי הקובץ הזה לא ידוע מתי בוצע הגיבוי האחרון, ולכן אנו מתייחסים לכך ככשל, לא כהיעדר בעיה.", + "Cannot measure free space on the Mac's disk": + "אי אפשר למדוד מקום פנוי בדיסק של ה-Mac", + "%@ days": + "%@ ימים", + "CloudMachine: backup is not working": + "CloudMachine: הגיבוי לא עובד", + "unknown reason": + "סיבה לא ידועה", + "osascript did not show the notification (permissions or no graphical session)": + "osascript לא הציג את ההתראה (הרשאות או שאין סשן גרפי)", + "UNDELIVERED ALARM: %@": + "התראה שלא נמסרה: %@", + "from %@, reason: %@": + "מ-%@, סיבה: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "התראת המערכת לא נמסרה - תראה את ההתראה הזו רק כאן.", + "%@ (%@ ago)": + "%@ (לפני %@)", + "%@ - marker from the FUTURE": + "%@ - סימון מהעתיד", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (לפני %@) - ייתכן שהמשגיח אינו פועל", + "NEVER - the watchdog has not recorded a single run": + "אף פעם - המשגיח לא רשם אף הרצה", + "Could not find the launchd/ directory with templates.": + "לא נמצאה תיקיית launchd/ עם התבניות.", + "Could not find the compiled cloudmachine-agent binary.": + "לא נמצא הקובץ הבינארי המקומפל cloudmachine-agent.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "בוטל: לא ניתן היה להציב את cloudmachine-agent במיקום יציב\n(%@) - לרוב בגלל חוסר מקום או הרשאות.\nלא מתקינים סוכנים שמצביעים על %@: הנתיב הזה\nנעלם ב-`swift build` או ב-`git clean` הבא, והגיבויים נעצרים\nבלי שום סימן גלוי.", + "ABORTED: %@": + "בוטל: %@", + "Could not list the templates in %@.": + "לא ניתן היה לרשום את התבניות ב-%@.", + "could not read the template %@": + "לא ניתן היה לקרוא את התבנית %@", + "could not write %@ (lack of space or permissions)": + "לא ניתן היה לכתוב את %@ (חוסר מקום או הרשאות)", + "launchctl load refused to load %@": + "launchctl load סירב לטעון את %@", + "NOT A SINGLE agent was loaded.": + "אף סוכן לא נטען.", + "Only these went in: %@.": + "רק אלה הותקנו: %@.", + "Could not load any launchd agent.": + "לא ניתן היה לטעון אף סוכן launchd.", + "Installed agents: %@": + "סוכנים שהותקנו: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " אזהרה: קרוב למגבלה - חלקים חדשים ייכשלו עם EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands ב-Google Drive אינו ריק - ייתכן שיש בו גיבוי אחר. לא כותבים עליו; בדוק אותו ידנית.", + "Address: %@": + "כתובת: %@", + "Already prepared (%@ exists) - nothing to do.": + "כבר הוכן (%@ קיים) - אין מה לעשות.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "ממיר את התמונה החדשה והריקה של Time Machine במכונה לחלקים של 32 MB ומעביר את החלקים ל-Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "העתק את rclone.conf למכונה גם אם כבר יש בה אחד.", + "Copying the converted image into the machine failed: %@": + "העתקת התמונה שהומרה למכונה נכשלה: %@", + "Copying the image to the Mac failed: %@": + "העתקת התמונה ל-Mac נכשלה: %@", + "Could not ask Lima about the machine: %@": + "לא ניתן היה לשאול את Lima על המכונה: %@", + "Could not carry the Time Machine files over: %@": + "לא ניתן היה להעביר את קובצי Time Machine: %@", + "Could not check the image in the machine.": + "לא ניתן היה לבדוק את התמונה במכונה.", + "Could not copy the rclone configuration into the machine.": + "לא ניתן היה להעתיק את הגדרות rclone למכונה.", + "Could not create %@ on Google Drive: %@": + "לא ניתן היה ליצור את %@ ב-Google Drive: %@", + "Could not create %@: %@": + "לא ניתן היה ליצור את %@: %@", + "Could not find the vm/ directory with the machine template.": + "לא נמצאה תיקיית vm/ עם תבנית המכונה.", + "Could not read the image size.": + "לא ניתן היה לקרוא את גודל התמונה.", + "Could not set the SMB password of user %@ in the machine.": + "לא ניתן היה להגדיר את סיסמת ה-SMB של המשתמש %@ במכונה.", + "Could not stop smbd in the machine.": + "לא ניתן היה לעצור את smbd במכונה.", + "Could not write %@ in the machine.": + "לא ניתן היה לכתוב את %@ במכונה.", + "Could not write the password file %@.": + "לא ניתן היה לכתוב את קובץ הסיסמה %@.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "יוצר או מפעיל את המכונה של CloudMachine (Lima), נותן לה את ההגדרות של rclone וסיסמת SMB, ומדפיס את פקודת Time Machine.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "יוצר את המכונה %@ (בהפעלה הראשונה מורידה Ubuntu ומתקינה חבילות - כמה דקות)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "הסתיים: ל-%@ יש חלקים של %@ MB ב-Google Drive; המקור נשמר ב-%@ במכונה. התחל את הגיבוי: tmutil startbackup", + "exit code %@, no message": + "קוד יציאה %@, ללא הודעה", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "מטא-נתוני תמונה: מעולם לא הועתקו אל %@ - בדוק את tm-meta-sync במכונה", + "Image metadata: copied %@ ago to %@": + "מטא-נתוני תמונה: הועתקו לפני %@ אל %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "מטא-נתוני תמונה: הועתקו לאחרונה לפני %@ - באיחור (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "מטא-נתוני תמונה: עדיין לא הועתקו - ממתינים ל-vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "גיבוי %@, הושהה על ידי השומר %@: %@", + "Free in machine: %@ GiB": + "פנוי במכונה: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n מצא בעיות: %@", + "Google Drive folder: %@": + "תיקיית Google Drive: %@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach של התמונה שהומרה נכשל: %@", + "hdiutil convert failed: %@": + "hdiutil convert נכשל: %@", + "Image name in the machine (default: from the computer name).": + "שם התמונה במכונה (ברירת מחדל: משם המחשב).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "התקנת התמונה שהומרה נכשלה: %@\nsmbd נשאר עצור כדי ש-Time Machine לא יפתח תמונה שהותקנה למחצה. המקור ב-%@ במכונה.", + "limactl create failed: %@": + "limactl create נכשל: %@", + "limactl list failed: %@": + "limactl list נכשל: %@", + "limactl not found - install Lima: brew install lima": + "limactl לא נמצא - התקן את Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start נכשל: %@\nהיומן של המכונה עצמה: %@", + "Machine %@ is running.": + "המכונה %@ פועלת.", + "Machine %@ was already running.": + "המכונה %@ כבר פעלה.", + "Machine: %@ (%@)": + "מכונה: %@ (%@)", + "Machine: %@": + "מכונה: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "מכונה: לא נוצרה - הרץ: cloudmachine-agent vm-setup", + "no answer within the time limit": + "אין תשובה בתוך מגבלת הזמן", + "No image %@ in the machine.": + "אין תמונה %@ במכונה.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "עדיין אין תמונה במכונה - כוון את Time Machine אל השיתוף ותן לו ליצור אחת קודם.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "אין הגדרות rclone ב-%@ - חבר קודם את Google Drive (configure-remote).", + "no SMB destination": + "אין יעד SMB", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "בדיקה אחת של מאגר ההעלאה של המכונה: משהה את Time Machine כשהוא מתמלא, וממשיך את מה שהושהה.", + "Packing the converted image failed: %@": + "אריזת התמונה שהומרה נכשלה: %@", + "Packing the image failed: %@": + "אריזת התמונה נכשלה: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "אין תשובה מהמכונה (rclone rc) - השומר לא יעשה דבר.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "הדפס רק מה שהשומר היה מחליט - לניסוי ספי הפעלה במכונה זמנית.", + "Pause above this many GiB in the buffer.": + "השהה מעל מספר GiB זה במאגר הביניים.", + "Pause when the machine has less free than this, in GiB.": + "השהה כשהפנוי במכונה קטן מזה, ב-GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "כוון את Time Machine אל המכונה (פעם אחת, נדרשת סיסמת מנהל):", + "punchfs files: %@ open, limit %@": + "קבצי punchfs: %@ פתוחים, מגבלה %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "הגדרות rclone כבר קיימות במכונה - נשמרו (--replace-rclone-config מחליף אותן).", + "rclone configuration copied into the machine.": + "הגדרות rclone הועתקו למכונה.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm או punchfs אינו פועל במכונה - ראה cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "המשך מתחת למספר GiB זה (רק של גיבוי שהשומר השהה).", + "Service %@: %@": + "שירות %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "כמה תמונות במכונה (%@) - בחר אחת עם --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "מציג את המכונה: כתובת, שירותים, מאגר העלאה, מקום פנוי ויעד Time Machine.", + "SMB password stored in %@ (mode 600).": + "סיסמת SMB נשמרה ב-%@ (מצב 600).", + "The converted image does not have %@-byte bands.": + "לתמונה שהומרה אין חלקים של %@ בייטים.", + "The converted image has no APFS partition.": + "לתמונה שהומרה אין מחיצת APFS.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "התמונה כבר תופסת %@ MB - הפקודה הזו ממירה רק תמונה חדשה וריקה (מתחת ל-%@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "התמונה מוצפנת - המרת תמונות מוצפנות אינה נתמכת.", + "The image was not changed; smbd started again.": + "התמונה לא שונתה; smbd הופעל שוב.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "המכונה לא עונה - האם היא פועלת? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "למכונה אין כתובת ברשת vzNAT.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "השירותים במכונה לא עלו - בדוק: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine מגבה - עצור אותו קודם: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: לא מצביע על המכונה (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil לא ענה", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil לא ענה - לא נוגעים בתמונה כל עוד מצבה לא ידוע.", + "unknown": + "לא ידוע", + "Unpacking the image failed: %@": + "פריקת התמונה נכשלה: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "נשאר להעלות: %@ GiB ב-%@ חלקים, מועלים %@ (מטמון בדיסק %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "%@ (המכונה ומאגר ההעלאה שלה) הוחרג מ-Time Machine.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "אזהרה: לא ניתן היה להחריג את %@ מ-Time Machine - הרץ: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "מאגר העלאה: אין תשובה מ-rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "כש-Time Machine יוצר את התמונה הריקה שלו, עצור את הגיבוי (tmutil stopbackup) והרץ: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "לא נשלחו %@ GiB, פנויים %@ GiB (השהיה מעל %@ GiB שלא נשלחו או מתחת ל-%@ GiB פנויים, המשך מתחת ל-%@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "העלאה: המגבלה היומית של Google סירבה להעלאה לפני %@ - rclone מנסה שוב כל 5 דקות וממשיך מעצמו", + "no": + "לא", + "running": + "פועל", + "stopped": + "נעצר", + "yes": + "כן", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nהתבנית הקודמת ב-%@ - העתק אותה חזרה על lima.yaml והרץ limactl start %@.", + "Could not read this app's machine template (limactl template copy).": + "לא ניתן היה לקרוא את תבנית המכונה של האפליקציה הזו (limactl template copy).", + "Could not replace %@: %@": + "לא ניתן היה להחליף את %@: %@", + "Machine %@ already runs this app's template.": + "המכונה %@ כבר פועלת עם התבנית של האפליקציה הזו.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "המכונה %@ פועלת כעת עם התבנית של האפליקציה הזו; הקודמת ב-%@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "מעביר את המכונה לתבנית של האפליקציה הזו (שתי הפעלות מחדש, לעולם לא בזמן גיבוי).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "אין מכונה %@ - צור אותה עם: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "תבנית: ישנה יותר מזו של האפליקציה - הרץ: cloudmachine-agent vm-update", + "Template: not compared": + "תבנית: לא הושוותה", + "Template: this app's": + "תבנית: של האפליקציה הזו", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "במכונה אין %@ - הרץ קודם cloudmachine-agent vm-setup.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "המכונה הופעלה מחדש, אבל לא כל השירותים פועלים - בדוק: cloudmachine-agent vm-status. התבנית הקודמת ב-%@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "התבנית משנה את המכונה עצמה (%@) - לכך נדרשת מכונה חדשה, לא עדכון.", + "The upload to Google Drive hangs": + "ההעלאה ל-Google Drive תקועה", + "Time Machine is backing up - try again when it has finished.": + "Time Machine מגבה - נסה שוב כשיסיים.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "העלאה: תקועה - חלקים בעיבוד, אף אחד לא הועלה במשך %@ (רשת?); ראה /var/log/rclone-tm.log במכונה", + "limactl stop failed - nothing was changed.": + "limactl stop נכשל - דבר לא שונה.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "ל-rclone יש חלקים בעיבוד, אבל אף אחד לא הועלה במשך %@ - לרוב בגלל חיבור רשת שנותק, ש-rclone אינו מדווח עליו כשגיאה. גיבויים מאז נמצאים רק במאגר הביניים של המכונה. כשהרשת חוזרת ההעלאה ממשיכה מעצמה (ב-28.10.2026 תוך 80 s); אם לא, הפעלה מחדש של המכונה (prepare-shutdown, limactl start) מנתקת את החיבורים המתים.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil לא ענה - לא מפעילים מחדש את המכונה כל עוד מצבה לא ידוע.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+it.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+it.swift new file mode 100644 index 0000000..fcc9af1 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+it.swift @@ -0,0 +1,951 @@ +// Italian translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let it: [String: String] = [ + "Space limit: %@": + "Limite di spazio: %@", + " Time Machine quota not set to match - run: %@": + " Quota di Time Machine non impostata di conseguenza - esegui: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Imposta quanto spazio su Google Drive può usare questo Mac e stampa il comando per la quota di Time Machine.", + "Limit in GB.": + "Limite in GB.", + "Limit for this Mac: %@ GB.": + "Limite per questo Mac: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Ora imposta la quota di Time Machine (serve la password di un amministratore):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - verifica, configurazione di Google Drive e installazione. Chiamato da launchd a intervalli regolari, o a mano da Terminale.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "Si collega a Google Drive tramite rclone (OAuth nel browser) e crea la cartella di questa macchina.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Sovrascrivi il remote esistente. RISCHIOSO: sostituisce il token e i permessi.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "Impacchetta build/CloudMachine.app in build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "ERRORE: %@ non c'è - esegui prima 'cloudmachine-agent build-app'", + "==> Preparing the staging folder": + "==> Preparazione della cartella temporanea", + "==> Creating %@": + "==> Creazione di %@", + "ERROR: hdiutil exited with code %@.": + "ERRORE: hdiutil è terminato con il codice %@.", + "==> Done: %@": + "==> Fatto: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "Al primo avvio (l'app non è firmata con un account Apple Developer):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. Apri %@ e trascina CloudMachine.app nella cartella Applicazioni.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. Nel Finder, fai clic con il tasto DESTRO su CloudMachine.app -> Apri -> Apri\n (un semplice doppio clic mostra il blocco di Gatekeeper «sviluppatore non identificato»).", + "3. Later launches work normally, with a double-click.": + "3. Gli avvii successivi funzionano normalmente, con un doppio clic.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "Compila CloudMachine.app (Release) - interfaccia + cloudmachine-agent in Contents/MacOS/, più launchd/, vm/ e config/ come risorse.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Binari per Apple Silicon e Intel insieme (così il CI compila una versione; superfluo in locale).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> Compilazione di CloudMachineApp + cloudmachine-agent (release) - versione %@ (%@)", + "ERROR: swift build exited with code %@.": + "ERRORE: swift build è terminato con il codice %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "ERRORE: swift build --show-bin-path non ha indicato la cartella dei binari.", + "ERROR: no built binary found at %@": + "ERRORE: nessun binario compilato trovato in %@", + "==> Assembling the .app bundle in %@": + "==> Assemblaggio del pacchetto .app in %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> ATTENZIONE: stai compilando da un albero MODIFICATO - la versione non punterà a nessun commit.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "ERRORE: Resources/AppIcon.icns non c'è - generalo: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Firma con il certificato locale '%@' (l'Accesso completo al disco sopravviverà alle ricompilazioni)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Firma ad-hoc (senza account Apple Developer) - esegui una volta 'cloudmachine-agent setup-signing-cert' così i permessi TCC sopravvivono alle ricompilazioni", + "ERROR: codesign exited with code %@.": + "ERRORE: codesign è terminato con il codice %@.", + "Next step: %@": + "Passo successivo: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Crea un certificato locale autofirmato così l'Accesso completo al disco sopravvive alle ricompilazioni dell'app.", + "Certificate '%@' already exists in %@, nothing to do.": + "Il certificato '%@' esiste già in %@, non c'è nulla da fare.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Generazione della chiave e del certificato autofirmato '%@'...", + "ERROR: openssl req exited with code %@.": + "ERRORE: openssl req è terminato con il codice %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "ERRORE: openssl pkcs12 è terminato con il codice %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Importazione del certificato in %@ (autorizzazione preventiva di /usr/bin/codesign, per non chiedere ogni volta la password del portachiavi)...", + "ERROR: security import exited with code %@.": + "ERRORE: security import è terminato con il codice %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> Certificato considerato attendibile SOLO per la firma del codice...", + "ERROR: security add-trusted-cert exited with code %@.": + "ERRORE: security add-trusted-cert è terminato con il codice %@.", + "Done. Certificate '%@' is now available to codesign.": + "Fatto. Il certificato '%@' è ora disponibile per codesign.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "Il prossimo 'cloudmachine-agent build-app' lo userà automaticamente al posto di una firma ad-hoc.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "Dopo QUELLA UNICA ricompilazione, concedi l'Accesso completo al disco un'ultima volta - le\nricompilazioni successive non lo reimposteranno più, finché firmi con lo stesso certificato.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Controlla se il ciclo orario FUNZIONA ANCORA (data dell'ultimo backup RIUSCITO) e segnala i guasti.", + "After this many hours without a successful backup we consider the cycle broken.": + "Dopo questo numero di ore senza un backup riuscito consideriamo il ciclo interrotto.", + "Only print the state, without a system notification.": + "Stampa solo lo stato, senza notifica di sistema.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "Un altro file delle preferenze di Time Machine - per provare il controllo su un campione noto.", + "Last successful backup: %@": + "Ultimo backup riuscito: %@", + "Last successful backup: NONE": + "Ultimo backup riuscito: NESSUNO", + "Last attempt: %@": + "Ultimo tentativo: %@", + "WAITING (system startup): %@": + "IN ATTESA (avvio del sistema): %@", + "Backup cycle: OK": + "Ciclo di backup: OK", + "FAILURE: %@": + "GUASTO: %@", + " %@": + " %@", + "Check the state: %@": + "Controlla lo stato: %@", + "Preparing for restart": + "Preparazione al riavvio", + "Prepare for restart": + "Prepara al riavvio", + "Prepare": + "Prepara", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> ATTENZIONE: git rev-list non è riuscito (%@) - come numero di build viene usata la data.", + "Agents: %@": + "Agenti: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "IMPOSSIBILE AVVIARE: %@ - apri CloudMachine o esegui backup-health per ricaricarli", + "Reloaded agents that could not start: %@": + "Agenti ricaricati che non erano riusciti ad avviarsi: %@", + "Drive folder: %@": + "Cartella su Drive: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Nome della cartella di questo Mac su Google Drive (predefinito: ricavato dal nome del computer). Si imposta una sola volta; non si può cambiare in seguito.", + "Backup watchdog: %@": + "Controllo backup: %@", + "Prints the version, the build number and the commit this binary was built from.": + "Stampa la versione, il numero di build e il commit da cui è stato compilato questo binario.", + "Only one line, without a description.": + "Solo una riga, senza descrizione.", + "Build from the working tree (outside a bundle) - no version data.": + "Build dall'albero di lavoro (fuori da un pacchetto) - nessun dato sulla versione.", + "Version: %@": + "Versione: %@", + "Build: %@": + "Build: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "ATTENZIONE: compilato da un albero MODIFICATO - il binario contiene codice che\n non è in nessun commit. Il numero del commit NON descrive\n ciò che viene davvero eseguito.", + "Saving the space limit": + "Salvataggio del limite di spazio", + "Measuring usage on Google Drive": + "Misurazione dello spazio usato su Google Drive", + "Google Drive did not answer - try again later.": + "Google Drive non ha risposto - riprova più tardi.", + "Measured.": + "Misurazione completata.", + "Space limit for this Mac": + "Limite di spazio per questo Mac", + "Used on Google Drive": + "Usato su Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "Misurato %@. Il controllo misura di nuovo ogni poche ore.", + "Limit (GB)": + "Limite (GB)", + "Save": + "Salva", + "Measure now": + "Misura ora", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Quota di Time Machine: %@ GB (70%% del limite - la copia su Drive è circa un terzo più grande del backup che contiene). Time Machine elimina i backup più vecchi per restare entro la quota.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Imposta la quota di Time Machine: esegui questo in Terminale (serve sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Collega Google Drive: esegui questo in Terminale e approva nel browser", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "Concedi a CloudMachine l'Accesso completo al disco, così può capire se i backup vengono completati", + "Folder on Google Drive": + "Cartella su Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Una cartella per Mac. Si imposta una sola volta - non si può cambiare dopo il collegamento.", + "Use lowercase letters, digits and dashes.": + "Usa lettere minuscole, cifre e trattini.", + "Install rclone": + "Installa rclone", + "Open System Settings": + "Apri Impostazioni di Sistema", + "Install agents": + "Installa gli agenti", + "not checked": + "non verificato", + "none at all": + "nessuno", + "%@ ago": + "%@ fa", + "Missing: %@": + "Manca: %@", + "Google Drive not connected": + "Google Drive non collegato", + "Time Machine does not point to CloudMachine": + "Time Machine non punta a CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "NON SI SA se Time Machine punti a CloudMachine - tmutil non ha risposto", + "Backup in progress": + "Backup in corso", + "Unknown when the last backup was made": + "Non si sa quando è stato fatto l'ultimo backup", + "There is no completed backup at all": + "Non c'è nessun backup completato", + "No completed backup for %@": + "Nessun backup completato da %@", + "Ready": + "Pronto", + "Not saved: %@": + "Non salvato: %@", + "Installing rclone": + "Installazione di rclone", + "Installing launchd agents": + "Installazione degli agenti launchd", + "Starting backup": + "Avvio del backup", + "Backup started.": + "Backup avviato.", + "Could not start the backup.": + "Impossibile avviare il backup.", + "Stopping backup": + "Arresto del backup", + "Backup stopped.": + "Backup arrestato.", + "Could not stop the backup.": + "Impossibile arrestare il backup.", + "Could not prepare the AppleScript.": + "Impossibile preparare l'AppleScript.", + "Unknown authorization error.": + "Errore di autorizzazione sconosciuto.", + "Waiting to upload": + "In attesa di invio", + "%@ files": + "%@ file", + "nothing": + "niente", + "Back up now": + "Esegui backup ora", + "Stop backup": + "Arresta backup", + "Open CloudMachine": + "Apri CloudMachine", + "Quit": + "Esci", + "Healthy": + "In buono stato", + "Attention": + "Attenzione", + "Refreshed %@": + "Aggiornato %@", + "System Status": + "Stato del sistema", + "Action needed": + "Azione richiesta", + "not measured": + "non misurato", + "rclone did not answer": + "rclone non ha risposto", + "Backup in Progress": + "Backup in corso", + "Files processed": + "File elaborati", + "Write speed": + "Velocità di scrittura", + "Operation phase": + "Fase dell'operazione", + "Required Setup Steps": + "Passi di configurazione richiesti", + "Copy": + "Copia", + "Last completed backup": + "Ultimo backup completato", + "Last backup watchdog run": + "Ultima esecuzione del controllo backup", + "not read": + "non letto", + "Everything uploaded": + "Tutto inviato", + "File upload errors": + "Errori di invio dei file", + "Google Drive Credentials (OAuth 2.0)": + "Credenziali di Google Drive (OAuth 2.0)", + "Keychain OK": + "Portachiavi OK", + "No custom keys": + "Nessuna chiave personalizzata", + "Paste client_id...": + "Incolla client_id...", + "Paste client_secret...": + "Incolla client_secret...", + "Save securely in the Keychain": + "Salva in modo sicuro nel Portachiavi", + "Refresh": + "Aggiorna", + "Overview": + "Panoramica", + "Backups": + "Backup", + "Storage": + "Archiviazione", + "Settings": + "Impostazioni", + "Current status: %@": + "Stato attuale: %@", + "Does not point to CloudMachine": + "Non punta a CloudMachine", + "tmutil did not answer": + "tmutil non ha risposto", + "Backing up: %@ of %@": + "Backup in corso: %@ di %@", + "%@ of %@": + "%@ di %@", + "Copied": + "Copiato", + "No backup is running": + "Nessun backup in corso", + "Time Machine starts the next one on its own schedule.": + "Time Machine avvierà il successivo secondo il proprio programma.", + "Backup cycle": + "Ciclo di backup", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB in %@ bande, %@ in invio", + "%@ bands": + "%@ bande", + "%@ fragments abandoned - only in the machine": + "%@ frammenti abbandonati - solo nella macchina", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 risponde sul Mac: Lima inoltra il controllo remoto di rclone della macchina, che non ha password. Qualsiasi pagina web aperta in un browser può inviargli comandi - compresa l'eliminazione del backup su Google Drive. Aggiungi alla macchina la regola portForwards di vm/cmsmb.yaml e riavviala (vedi vm/README.md).", + "A service in the CloudMachine machine is not running": + "Un servizio nella macchina CloudMachine non è in esecuzione", + "Address": + "Indirizzo", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Installazione degli agenti INCOMPLETA - %@ su %@ non sono stati installati:\n%@\n%@\nOgni agente mancante è una funzione che ha smesso di funzionare in silenzio (vm-guard controlla il buffer della macchina, backup-health segnala i guasti). Rimuovi la causa e ripeti l'installazione.", + "All running": + "Tutti in esecuzione", + "Also install the launchd agents (same as install-launchd).": + "Installa anche gli agenti launchd (come install-launchd).", + "At most this many minutes of waiting for the upload.": + "Al massimo questi minuti di attesa per l'invio.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "Al limite ogni nuova banda fallisce con EMFILE e il backup si ferma. Controlla: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Cache sul disco della macchina", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Collegato a Google Drive, ma non è stato possibile creare la cartella '%@' - senza di essa la macchina non ha dove conservare il backup. Controlla i permessi dell'account e riprova.", + "Convert the image": + "Converti l'immagine", + "Converting the image to 32 MB bands": + "Conversione dell'immagine in bande da 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "Con la connessione attuale non è stato possibile verificare se il backup è su Google Drive (%@), quindi il remote '%@' NON è stato sostituito: senza questa risposta il nuovo accesso non può essere controllato.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Scarica il binario ufficiale di rclone in ~/.cloudmachine/bin (accesso a Google e rclone.conf della macchina).", + "Free in the machine": + "Libero nella macchina", + "Free in the machine: %@": + "Libero nella macchina: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "Genera e installa gli agenti launchd (app, controllo dei backup, avvio della macchina, guardia della macchina).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "Installa Lima, che esegue la macchina CloudMachine: esegui questo in Terminale", + "Install rclone (signs in to Google Drive for the machine)": + "Installa rclone (collega la macchina a Google Drive)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Installa gli agenti in background (avvio della macchina, guardia del buffer, controllo dei backup)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Installa rclone tramite Homebrew - CloudMachine stesso usa quello di install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, il token e mapped/ dell'immagine di backup esistono solo sul disco della macchina; senza di essi le bande in %@ non possono essere ripristinate. La copia (tm-meta-sync, ogni 15 min) va in %@. Controlla: cloudmachine-agent vm-status, poi nella macchina: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima dice che la macchina è in esecuzione, ma un comando al suo interno non è tornato. Senza di esso non si sa nulla di Samba, rclone o dell'invio. Controlla: cloudmachine-agent vm-status", + "Machine": + "Macchina", + "Machine %@": + "Macchina %@", + "Machine & Upload Status": + "Stato della macchina e dell'invio", + "Machine buffer": + "Buffer della macchina", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Nessuna destinazione di Time Machine è la condivisione della macchina (smb://tm@/CloudMachine) - lì non vengono fatti backup. Il comando viene stampato da: cloudmachine-agent vm-setup", + "Not running: %@": + "Non in esecuzione: %@", + "Not set up": + "Non configurata", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "Quando lo spazio finisce, rclone smette di inviare, il buffer della macchina si riempie e i backup non vengono più fatti. Con una crescita di circa 600 MB per ciclo orario sono circa %@ giorni.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "Oppure manca rclone.conf: questo Mac ha già configurato la macchina CloudMachine, quindi non viene ricollegato alla cieca. Ripristina il file da un backup (la macchina ne tiene una copia propria in %@). Per collegare comunque, crea un file vuoto nel percorso stampato da `%@ config file` ed esegui di nuovo - la cartella esistente viene mantenuta.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Punta Time Machine alla macchina: esegui questo in Terminale (serve sudo; Copia include la password)", + "Points to the machine": + "Punta alla macchina", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Prepara al riavvio: arresta il backup, attende un po' l'invio, poi arresta la macchina in modo pulito.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "La lettura della destinazione di Time Machine non è tornata entro %@ s. Così si comporta tmutil quando la sua destinazione si blocca.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "Il remote '%@' NON è stato sostituito. Il nuovo accesso riceve l'ambito 'drive.file', che vede solo i file creati con il proprio client_id. Il backup esistente è stato molto probabilmente creato dalla connessione attuale e diventerebbe invisibile. Prima di scrivere qualsiasi cosa, il nuovo token viene controllato rispetto al backup esistente, e la sostituzione viene annullata se non lo vede. La macchina conserva una propria copia della configurazione fino a vm-setup --replace-rclone-config. Per procedere, esegui di nuovo con --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Controllo remoto: APERTO sul Mac a 127.0.0.1:5572 - qualsiasi pagina web può inviare comandi a rclone; vedi vm/README.md (portForwards)", + "Running": + "In esecuzione", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone o punchfs nella macchina non è attivo, quindi Time Machine non ha dove scrivere oppure le bande non arrivano su Google Drive. Controlla: cloudmachine-agent vm-status", + "Service %@": + "Servizio %@", + "Services": + "Servizi", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "Configura la macchina CloudMachine (la prima volta scarica Ubuntu - alcuni minuti)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "Configura di nuovo la macchina CloudMachine, così stampa il comando di Time Machine", + "Set up the machine": + "Configura la macchina", + "Setting up the CloudMachine machine": + "Configurazione della macchina CloudMachine", + "Start the CloudMachine machine": + "Avvia la macchina CloudMachine", + "Start the machine": + "Avvia la macchina", + "Starting the CloudMachine machine": + "Avvio della macchina CloudMachine", + "Still to upload: %@ GiB": + "Ancora da inviare: %@ GiB", + "Stopping the Time Machine backup...": + "Arresto del backup di Time Machine...", + "Stopping the machine %@...": + "Arresto della macchina %@...", + "The CloudMachine machine does not answer": + "La macchina CloudMachine non risponde", + "The CloudMachine machine is not running": + "La macchina CloudMachine non è in esecuzione", + "The CloudMachine machine is not set up yet": + "La macchina CloudMachine non è ancora configurata", + "The CloudMachine machine is stopped": + "La macchina CloudMachine è arrestata", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "Il backup è arrestato, all'invio vengono concessi fino a 30 minuti, poi la macchina si arresta in modo pulito. Riparte al prossimo login.", + "The machine %@ is not running - nothing to prepare.": + "La macchina %@ non è in esecuzione - niente da preparare.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "La macchina è arrestata e tutto è arrivato su Google Drive. Puoi riavviare il Mac; la macchina riparte al login.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "La macchina è arrestata. %@ GiB non erano ancora arrivati su Google Drive - sono conservati nel buffer della macchina e verranno inviati dopo il prossimo avvio. Puoi riavviare il Mac.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "La macchina è arrestata. rclone non ha detto quanto restava da inviare; ciò che non è stato inviato è conservato nel buffer della macchina e verrà inviato dopo il prossimo avvio. Puoi riavviare il Mac.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "Il disco della macchina è un file su questo disco e cresce man mano che il buffer di invio si riempie. Senza spazio libero la macchina non può scrivere il buffer, e nemmeno gli snapshot locali di Time Machine hanno dove andare.", + "The image's metadata has never been copied to Drive": + "I metadati dell'immagine non sono mai stati copiati su Drive", + "The image's metadata was last copied to Drive %@ ago": + "I metadati dell'immagine sono stati copiati su Drive l'ultima volta %@ fa", + "The machine's disk is running out of space (%@ GB)": + "Il disco della macchina sta finendo lo spazio (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "Il nuovo accesso NON vede il backup esistente (%@), quindi il remote '%@' NON è stato sostituito e rclone.conf è invariato. Mantieni la connessione attuale, oppure accedi con la credenziale (client_id) che ha creato il backup.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "Il buffer di invio si trova su questo disco. La guardia mette in pausa Time Machine prima che si riempia; se l'invio non recupera, i backup restano in pausa.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Queste bande esistono solo nel buffer della macchina. Il backup su Google Drive è INCOMPLETO e potrebbe non aprirsi.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine fa il backup sulla macchina, quindi senza di essa non viene fatto alcun backup. Avviala: limactl start %@ (o il pulsante Avvia nell'app).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine non ha arrestato il backup entro 2 minuti (oppure tmutil non ha risposto) - la macchina NON è stata arrestata. Riprova tra poco.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine ha creato la sua immagine: arresta il backup, poi converti l'immagine in bande da 32 MB", + "To upload": + "Da inviare", + "Unknown whether the CloudMachine machine is running": + "Non si sa se la macchina CloudMachine sia in esecuzione", + "Waiting for the upload to Google Drive (at most %@ min)...": + "In attesa dell'invio a Google Drive (al massimo %@ min)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "Con --replace-existing: conferma che il nuovo accesso (ambito 'drive.file') potrebbe non vedere il backup esistente. Il nuovo token viene comunque prima controllato rispetto al backup.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "Senza di esso non c'è modo di verificare se qualcosa è arrivato su Drive - la guardia della macchina è allora cieca.", + "limactl did not answer": + "limactl non ha risposto", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl non ha risposto (o non è installato). Questo non significa che la macchina sia ferma - significa che nessuno ha controllato.", + "limactl start failed: %@": + "limactl start non è riuscito: %@", + "limactl stop failed: %@": + "limactl stop non è riuscito: %@", + "punchfs is close to its open-file limit": + "punchfs è vicino al limite di file aperti", + "punchfs open files": + "File aperti di punchfs", + "rclone's remote control is open on this Mac": + "Il controllo remoto di rclone è aperto su questo Mac", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') ha restituito un errore, quindi non si sa se il disco della macchina possa ancora crescere su questo Mac.", + "Google Drive's daily upload limit stops the upload": + "Il limite giornaliero di invio di Google Drive blocca l'invio", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google ha rifiutato un invio l'ultima volta %@ fa (750 GB al giorno). Da allora i backup sono solo nel buffer della macchina su questo Mac. rclone riprova ogni 5 min e riprende da solo quando il limite passa; la guardia mette in pausa Time Machine se in attesa ci sono più di %@ GiB.", + "Usage on Google Drive is not being measured": + "L'utilizzo di Google Drive non viene misurato", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "L'ultima misurazione (%@ GB) è del %@, %@ fa - da allora rclone size non ha risposto. Finché non risponde, nulla controlla il limite di %@ GB: gli avvisi al 90%% e al 100%% restano muti. Controlla vm-status, oppure premi Misura ora nella finestra.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size non ha risposto nemmeno una volta. Finché non risponde, nulla controlla il limite di %@ GB: gli avvisi al 90%% e al 100%% restano muti. Controlla vm-status, oppure premi Misura ora nella finestra.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Salvato nel Portachiavi. Il collegamento a Google Drive (configure-remote) le userà.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Salvato nel Portachiavi. Il collegamento esistente a Google Drive mantiene il vecchio client_id, e su questo Mac conviene che resti così: un collegamento fatto con le nuove chiavi (ambito 'drive.file') non può vedere il backup creato dal vecchio. Non sostituire qui il collegamento; le nuove chiavi servono per un Mac non ancora collegato.", + "it is not there for the new token": + "non c'è per il nuovo token", + "Cancel": + "Annulla", + "ACTION NEEDED": + "AZIONE RICHIESTA", + "WILL PASS BY ITSELF — DO NOTHING": + "SI RISOLVERÀ DA SOLO — NON FARE NULLA", + "UNKNOWN — CHECK AGAIN SHORTLY": + "NON SI SA — CONTROLLA DI NUOVO TRA POCO", + "ALL GOOD": + "TUTTO OK", + "Upload is not working": + "L'invio non funziona", + "Upload stopped — no space left on Google Drive": + "Invio interrotto — spazio esaurito su Google Drive", + "%@ backup fragments not uploaded": + "%@ frammenti di backup non inviati", + "Upload cannot keep up with writes": + "L'invio non sta al passo con le scritture", + "Upload paused — Google daily limit": + "Invio in pausa — limite giornaliero di Google", + "Uploading to Google Drive — %@ queued": + "Invio a Google Drive — %@ in coda", + "Everything uploaded to Google Drive": + "Tutto inviato a Google Drive", + "Unknown what is waiting in the queue": + "Non si sa cosa c'è in attesa nella coda", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Non c'è connessione a Google Drive, quindi i backup vengono fatti solo su questo Mac. Se non passa da solo entro pochi minuti, controlla la rete e il collegamento a Drive.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Su Google Drive non c'è più spazio. Questo NON passerà da solo — devi liberare spazio su Drive. Fino ad allora Time Machine è in pausa, per non riempire il disco di questo Mac.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ frammenti di backup non hanno potuto essere inviati e rclone ha smesso di provare. Questi frammenti esistono solo su questo Mac, quindi il backup su Drive è incompleto. Serve un controllo.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine scrive più velocemente di quanto proceda l'invio, e il buffer si è riempito. Il backup resterà in pausa finché l'invio non recupera — è una protezione contro il riempimento del disco, non un guasto.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google accetta 750 GB al giorno e questo limite è stato esaurito. Non c'è nulla da fare: il limite si rinnova da solo, di solito entro poche ore. Nel frattempo i backup di Time Machine vengono fatti normalmente e restano in attesa nel buffer — verranno inviati appena Google tornerà ad accettare.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ frammenti di backup sono in coda e in viaggio verso Drive.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "Niente è in attesa nella coda — il backup su Google Drive è completo.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone non ha risposto alla domanda sulla coda, quindi non si sa quanti backup siano ancora in attesa di invio. Questo non significa che qualcosa si sia rotto — sotto carico la risposta può arrivare in ritardo. Significa solo che al momento nessuno lo sa. Se persiste, il controllo del ciclo di backup lo segnalerà.", + "unknown error": + "errore sconosciuto", + "rclone lsf ended with an error": + "rclone lsf è terminato con un errore", + "This Mac is close to its space limit on Google Drive": + "Questo Mac è vicino al suo limite di spazio su Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ GB usati su %@ GB. Time Machine elimina i backup più vecchi per restare entro la quota; controlla che la quota sia impostata (vm-status).", + "This Mac is over its space limit on Google Drive": + "Questo Mac ha superato il suo limite di spazio su Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ GB usati su %@ GB. Imposta la quota di Time Machine (comando nella finestra dell'app o in vm-status), oppure alza il limite.", + "not set": + "non impostato", + "%@ GB - usage not measured yet": + "%@ GB - utilizzo non ancora misurato", + "%@ of %@ GB used (%@%%)": + "%@ di %@ GB usati (%@%%)", + "The limit must be a whole number of GB above zero.": + "Il limite deve essere un numero intero di GB maggiore di zero.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "machines.json non si può leggere, quindi non è stato sovrascritto. Correggilo o rimuovilo prima.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' non è un nome di cartella valido: usa lettere minuscole, cifre e trattini.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Questo Mac fa già il backup nella cartella '%@'. Passare a '%@' avvierebbe un nuovo backup vuoto e lascerebbe orfano quello esistente, quindi non è stato cambiato nulla.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Questo Mac ha già un'installazione di CloudMachine, il cui backup è nella cartella '%@'. Passare a '%@' la lascerebbe orfana, quindi non è stato cambiato nulla.", + "Could not save the folder name to %@: %@": + "Impossibile salvare il nome della cartella in %@: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew non è installato. Installalo manualmente: https://brew.sh", + "Installing rclone failed: %@": + "Installazione di rclone non riuscita: %@", + "Installed rclone.": + "rclone installato.", + "Own Google credentials: set.": + "Credenziali Google personali: impostate.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "INCOMPLETO: %@ manca - rclone userà comunque il client_id condiviso di rclone.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Nessuna credenziale personale - rclone usa il client_id condiviso, soggetto a un limite di frequenza comune e in dismissione nel 2026.", + "Empty value - not saving.": + "Valore vuoto - non salvato.", + "Keychain refused: %@": + "Portachiavi ha rifiutato: %@", + "DIRTY-TREE": + "ALBERO-MODIFICATO", + "Cannot create the working directory: %@": + "Impossibile creare la cartella di lavoro: %@", + "Could not read the rclone version number.": + "Impossibile leggere il numero di versione di rclone.", + "Could not download %@.": + "Impossibile scaricare %@.", + "No entry for %@ in SHA256SUMS.": + "Nessuna voce per %@ in SHA256SUMS.", + "Could not compute the checksum.": + "Impossibile calcolare il checksum.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "Il checksum SHA256 non corrisponde - installazione ANNULLATA.\n atteso: %@\n calcolato: %@", + "Could not unpack the archive.": + "Impossibile decomprimere l'archivio.", + "Could not install the binary: %@": + "Impossibile installare il binario: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %@ installato in %@ (il checksum SHA256 corrisponde).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ non ha risposto nel tempo concesso (il processo è stato lasciato orfano in background).", + "Cannot launch %@: %@": + "Impossibile avviare %@: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "Il remote '%@' esiste già e NON è stato toccato.\nSovrascriverlo sostituisce il token e l'ambito dei permessi; una credenziale con l'ambito 'drive.file' non vede i file creati da quella precedente, quindi il backup esistente diventerebbe irraggiungibile.\nSe vuoi davvero sostituirlo, fai prima un backup di ~/.config/rclone/rclone.conf ed esegui di nuovo con --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "Impossibile verificare se il remote '%@' esiste già (rclone listremotes non ha risposto o è fallito), quindi non è stato cambiato nulla. Esegui `%@ listremotes` per vedere l'errore, poi riprova.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "Impossibile verificare se questo Mac ha già un'installazione di CloudMachine (rclone non ha risposto), quindi non è stata scelta alcuna cartella. Riprova tra poco.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize non è riuscito (%@). Se manca quel binario, comincia con: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "Impossibile leggere il token dall'output di rclone authorize.", + "rclone config create failed.": + "rclone config create non è riuscito.", + "Connected to Google Drive as remote '%@', folder %@.": + "Collegato a Google Drive come remote '%@', cartella %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil non risponde - non si sa dove vada il backup", + "No successful backup for %@": + "Nessun backup riuscito da %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Ultimo backup COMPLETATO: %@. Il ciclo è orario, quindi sono %@ esecuzioni saltate.", + "There is NOT A SINGLE successful backup": + "Non c'è NEMMENO UN backup riuscito", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Le preferenze di Time Machine non contengono alcuna data di un backup completato per questa destinazione.", + "The last backup attempt did not end in a backup": + "L'ultimo tentativo di backup non è sfociato in un backup", + "The attempt at %@ is newer than the last successful backup at %@.": + "Il tentativo del %@ è più recente dell'ultimo backup riuscito del %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine segnala un errore nell'ultima esecuzione (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Un RESULT diverso da zero nelle preferenze di Time Machine significa che l'esecuzione non è riuscita.", + "rclone failed to upload %@ files": + "rclone non è riuscito a inviare %@ file", + "Buffer full of nothing but unsent data": + "Buffer pieno di soli dati non inviati", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone non ha più nulla da rimuovere dal buffer - l'invio non sta al passo o si è fermato.", + "The rclone control interface is not responding": + "L'interfaccia di controllo di rclone non risponde", + "Google Drive is running out of space (%@ GB)": + "Google Drive sta finendo lo spazio (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Il disco del Mac sta finendo lo spazio (%@ GB)", + "Cannot read the Time Machine preferences": + "Impossibile leggere le preferenze di Time Machine", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ non è leggibile - più spesso manca l'Accesso completo al disco. Senza questo file NON SI SA quando è stato fatto l'ultimo backup, quindi lo trattiamo come un guasto, non come l'assenza di un problema.", + "Cannot measure free space on the Mac's disk": + "Impossibile misurare lo spazio libero sul disco del Mac", + "%@ days": + "%@ giorni", + "CloudMachine: backup is not working": + "CloudMachine: il backup non funziona", + "unknown reason": + "motivo sconosciuto", + "osascript did not show the notification (permissions or no graphical session)": + "osascript non ha mostrato la notifica (permessi o nessuna sessione grafica)", + "UNDELIVERED ALARM: %@": + "AVVISO NON CONSEGNATO: %@", + "from %@, reason: %@": + "da %@, motivo: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "La notifica di sistema non è stata consegnata - vedrai questo avviso SOLO qui.", + "%@ (%@ ago)": + "%@ (%@ fa)", + "%@ - marker from the FUTURE": + "%@ - indicatore dal FUTURO", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (%@ fa) - IL CONTROLLO POTREBBE NON ESSERE IN ESECUZIONE", + "NEVER - the watchdog has not recorded a single run": + "MAI - il controllo non ha registrato alcuna esecuzione", + "Could not find the launchd/ directory with templates.": + "Impossibile trovare la cartella launchd/ con i modelli.", + "Could not find the compiled cloudmachine-agent binary.": + "Impossibile trovare il binario cloudmachine-agent compilato.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "ANNULLATO: impossibile mettere cloudmachine-agent in una posizione stabile\n(%@) - più spesso per mancanza di spazio o di permessi.\nNON installo agenti che puntano a %@: quel percorso\nscompare al prossimo `swift build` o `git clean`, e i backup si fermano\nsenza alcun segnale visibile.", + "ABORTED: %@": + "ANNULLATO: %@", + "Could not list the templates in %@.": + "Impossibile elencare i modelli in %@.", + "could not read the template %@": + "impossibile leggere il modello %@", + "could not write %@ (lack of space or permissions)": + "impossibile scrivere %@ (mancanza di spazio o di permessi)", + "launchctl load refused to load %@": + "launchctl load ha rifiutato di caricare %@", + "NOT A SINGLE agent was loaded.": + "NESSUN agente è stato caricato.", + "Only these went in: %@.": + "Sono stati installati solo: %@.", + "Could not load any launchd agent.": + "Impossibile caricare alcun agente launchd.", + "Installed agents: %@": + "Agenti installati: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " ATTENZIONE: vicino al limite - le nuove bande falliranno con EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands su Google Drive non è vuoto - potrebbe contenere un altro backup. NON lo sovrascrivo; controllalo a mano.", + "Address: %@": + "Indirizzo: %@", + "Already prepared (%@ exists) - nothing to do.": + "Già preparato (%@ esiste) - niente da fare.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Converte la nuova immagine vuota di Time Machine nella macchina in bande da 32 MB e sposta le bande su Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "Copia rclone.conf nella macchina anche se ne ha già uno.", + "Copying the converted image into the machine failed: %@": + "La copia dell'immagine convertita nella macchina non è riuscita: %@", + "Copying the image to the Mac failed: %@": + "La copia dell'immagine sul Mac non è riuscita: %@", + "Could not ask Lima about the machine: %@": + "Impossibile interrogare Lima sulla macchina: %@", + "Could not carry the Time Machine files over: %@": + "Impossibile trasferire i file di Time Machine: %@", + "Could not check the image in the machine.": + "Impossibile controllare l'immagine nella macchina.", + "Could not copy the rclone configuration into the machine.": + "Impossibile copiare la configurazione di rclone nella macchina.", + "Could not create %@ on Google Drive: %@": + "Impossibile creare %@ su Google Drive: %@", + "Could not create %@: %@": + "Impossibile creare %@: %@", + "Could not find the vm/ directory with the machine template.": + "Impossibile trovare la cartella vm/ con il modello della macchina.", + "Could not read the image size.": + "Impossibile leggere la dimensione dell'immagine.", + "Could not set the SMB password of user %@ in the machine.": + "Impossibile impostare la password SMB dell'utente %@ nella macchina.", + "Could not stop smbd in the machine.": + "Impossibile arrestare smbd nella macchina.", + "Could not write %@ in the machine.": + "Impossibile scrivere %@ nella macchina.", + "Could not write the password file %@.": + "Impossibile scrivere il file della password %@.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "Crea o avvia la macchina CloudMachine (Lima), le dà la configurazione di rclone e una password SMB, e stampa il comando di Time Machine.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "Creazione della macchina %@ (il primo avvio scarica Ubuntu e installa pacchetti - alcuni minuti)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Fatto: %@ ha bande da %@ MB su Google Drive; l'originale è conservato in %@ nella macchina. Avvia il backup: tmutil startbackup", + "exit code %@, no message": + "codice di uscita %@, nessun messaggio", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Metadati immagine: MAI copiati in %@ - controlla tm-meta-sync nella macchina", + "Image metadata: copied %@ ago to %@": + "Metadati immagine: copiati %@ fa in %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Metadati immagine: ultima copia %@ fa - IN RITARDO (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Metadati immagine: non ancora copiati - attende vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "Backup %@, messo in pausa dalla guardia %@: %@", + "Free in machine: %@ GiB": + "Libero nella macchina: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n ha trovato problemi: %@", + "Google Drive folder: %@": + "Cartella su Google Drive: %@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach dell'immagine convertita non è riuscito: %@", + "hdiutil convert failed: %@": + "hdiutil convert non è riuscito: %@", + "Image name in the machine (default: from the computer name).": + "Nome dell'immagine nella macchina (predefinito: ricavato dal nome del computer).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "L'installazione dell'immagine convertita NON è RIUSCITA: %@\nsmbd resta ARRESTATO perché Time Machine non apra un'immagine installata a metà. L'originale è in %@ nella macchina.", + "limactl create failed: %@": + "limactl create non è riuscito: %@", + "limactl list failed: %@": + "limactl list non è riuscito: %@", + "limactl not found - install Lima: brew install lima": + "limactl non trovato - installa Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start non è riuscito: %@\nIl registro della macchina stessa: %@", + "Machine %@ is running.": + "La macchina %@ è in esecuzione.", + "Machine %@ was already running.": + "La macchina %@ era già in esecuzione.", + "Machine: %@ (%@)": + "Macchina: %@ (%@)", + "Machine: %@": + "Macchina: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Macchina: non creata - esegui: cloudmachine-agent vm-setup", + "no answer within the time limit": + "nessuna risposta entro il limite di tempo", + "No image %@ in the machine.": + "Nessuna immagine %@ nella macchina.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "Ancora nessuna immagine nella macchina - prima punta Time Machine alla condivisione e lascia che ne crei una.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "Nessuna configurazione di rclone in %@ - collega prima Google Drive (configure-remote).", + "no SMB destination": + "nessuna destinazione SMB", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "Un controllo del buffer di invio della macchina: mette in pausa Time Machine quando si riempie, riprende ciò che ha messo in pausa.", + "Packing the converted image failed: %@": + "Il confezionamento dell'immagine convertita non è riuscito: %@", + "Packing the image failed: %@": + "Il confezionamento dell'immagine non è riuscito: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "Nessuna risposta dalla macchina (rclone rc) - la guardia non farebbe nulla.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Stampa solo ciò che la guardia deciderebbe - per provare le soglie su una macchina usa e getta.", + "Pause above this many GiB in the buffer.": + "Metti in pausa sopra questi GiB nel buffer.", + "Pause when the machine has less free than this, in GiB.": + "Metti in pausa quando alla macchina restano meno di questi GiB liberi.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Punta Time Machine alla macchina (una volta, serve la password di un amministratore):", + "punchfs files: %@ open, limit %@": + "File punchfs: %@ aperti, limite %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "La configurazione di rclone è già nella macchina - mantenuta (--replace-rclone-config la sostituisce).", + "rclone configuration copied into the machine.": + "Configurazione di rclone copiata nella macchina.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm o punchfs non è in esecuzione nella macchina - vedi cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Riprendi sotto questi GiB (solo un backup messo in pausa dalla guardia).", + "Service %@: %@": + "Servizio %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "Più immagini nella macchina (%@) - scegline una con --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Mostra la macchina: indirizzo, servizi, buffer di invio, spazio libero e destinazione di Time Machine.", + "SMB password stored in %@ (mode 600).": + "Password SMB salvata in %@ (modo 600).", + "The converted image does not have %@-byte bands.": + "L'immagine convertita non ha bande da %@ byte.", + "The converted image has no APFS partition.": + "L'immagine convertita non ha una partizione APFS.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "L'immagine occupa già %@ MB - questo comando converte solo un'immagine nuova e vuota (sotto %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "L'immagine è cifrata - la conversione di immagini cifrate non è supportata.", + "The image was not changed; smbd started again.": + "L'immagine non è stata modificata; smbd è ripartito.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "La macchina non risponde - è in esecuzione? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "La macchina non ha un indirizzo nella rete vzNAT.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "I servizi nella macchina non si sono avviati - controlla: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine sta facendo un backup - fermalo prima: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: NON punta alla macchina (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil non ha risposto", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil non ha risposto - non tocco l'immagine finché il suo stato è sconosciuto.", + "unknown": + "sconosciuto", + "Unpacking the image failed: %@": + "La decompressione dell'immagine non è riuscita: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "Ancora da inviare: %@ GiB in %@ bande, in invio %@ (cache su disco %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "Escluso %@ (la macchina e il suo buffer di invio) da Time Machine.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "ATTENZIONE: impossibile escludere %@ da Time Machine - esegui: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Buffer di invio: nessuna risposta da rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Quando Time Machine ha creato la sua immagine vuota, arresta il backup (tmutil stopbackup) ed esegui: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "Non inviati %@ GiB, liberi %@ GiB (pausa sopra %@ GiB non inviati o sotto %@ GiB liberi, ripresa sotto %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Invio: il limite giornaliero di Google ha rifiutato un invio %@ fa - rclone riprova ogni 5 min e riprende da solo", + "no": + "no", + "running": + "in esecuzione", + "stopped": + "arrestato", + "yes": + "sì", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nIl modello precedente è in %@ - ricopialo su lima.yaml ed esegui limactl start %@.", + "Could not read this app's machine template (limactl template copy).": + "Impossibile leggere il modello di macchina di questa app (limactl template copy).", + "Could not replace %@: %@": + "Impossibile sostituire %@: %@", + "Machine %@ already runs this app's template.": + "La macchina %@ usa già il modello di questa app.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "La macchina %@ ora usa il modello di questa app; quello precedente è in %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Porta la macchina sul modello di questa app (due riavvii, mai durante un backup).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "Nessuna macchina %@ - creala con: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Modello: PIÙ VECCHIO di quello di questa app - esegui: cloudmachine-agent vm-update", + "Template: not compared": + "Modello: non confrontato", + "Template: this app's": + "Modello: quello di questa app", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "La macchina non ha %@ - esegui prima cloudmachine-agent vm-setup.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "La macchina è ripartita, ma non tutti i servizi sono in esecuzione - controlla: cloudmachine-agent vm-status. Il modello precedente è in %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "Il modello modifica la macchina stessa (%@) - serve una macchina nuova, non un aggiornamento.", + "The upload to Google Drive hangs": + "L'invio a Google Drive è bloccato", + "Time Machine is backing up - try again when it has finished.": + "Time Machine sta facendo un backup - riprova quando ha finito.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Invio: BLOCCATO - bande in corso, nessuna inviata da %@ (rete?); vedi /var/log/rclone-tm.log nella macchina", + "limactl stop failed - nothing was changed.": + "limactl stop non è riuscito - nulla è stato modificato.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone ha bande in corso, ma nessuna è stata inviata da %@ - di solito una connessione di rete interrotta, che rclone non segnala come errore. I backup da allora sono solo nel buffer della macchina. Quando la rete torna, l'invio riprende da solo (il 28.10.2026 entro 80 s); se non succede, riavviare la macchina (prepare-shutdown, limactl start) chiude le connessioni morte.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil non ha risposto - non riavvio la macchina finché il suo stato è sconosciuto.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+ja.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+ja.swift new file mode 100644 index 0000000..e918b98 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+ja.swift @@ -0,0 +1,951 @@ +// Japanese translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let ja: [String: String] = [ + "Space limit: %@": + "容量の上限: %@", + " Time Machine quota not set to match - run: %@": + " Time Machineの容量制限が一致していません - 次を実行してください: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "このMacが使用できるGoogle Driveの容量を設定し、Time Machineの容量制限を設定するコマンドを表示します。", + "Limit in GB.": + "上限(GB単位)。", + "Limit for this Mac: %@ GB.": + "このMacの上限: %@ GB。", + "Now set the Time Machine quota (needs an administrator password):": + "続いて、Time Machineの容量制限を設定してください(管理者パスワードが必要です):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - 検証、Google Driveの設定、インストールを行います。launchdにより定期的に実行されるか、ターミナルから手動で実行します。", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "rclone(ブラウザでOAuth)を使ってGoogle Driveに接続し、このマシンのフォルダを作成します。", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "既存のremoteを上書きします。危険: トークンと権限が置き換えられます。", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "build/CloudMachine.appをbuild/CloudMachine-<バージョン>.dmgにまとめます。", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "エラー: %@ がありません - 先に 'cloudmachine-agent build-app' を実行してください", + "==> Preparing the staging folder": + "==> ステージングフォルダを準備しています", + "==> Creating %@": + "==> %@ を作成しています", + "ERROR: hdiutil exited with code %@.": + "エラー: hdiutilがコード %@ で終了しました。", + "==> Done: %@": + "==> 完了: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "初回の起動時(このAppはApple Developerアカウントで署名されていません):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. %@ を開き、CloudMachine.appをアプリケーションフォルダにドラッグします。", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. Finderで、CloudMachine.appを右クリックして「開く」->「開く」を選びます\n (そのままダブルクリックすると、Gatekeeperが「開発元を確認できません」と表示してブロックします)。", + "3. Later launches work normally, with a double-click.": + "3. 2回目以降は、通常どおりダブルクリックで起動できます。", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "CloudMachine.app(Release)をビルドします - GUIとcloudmachine-agentはContents/MacOS/に、launchd/、vm/、config/はResourcesとして含まれます。", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Apple SiliconとIntel向けのバイナリを同時に作成します(CIがリリースをビルドする方法です。ローカルでは不要)。", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> CloudMachineApp + cloudmachine-agent をビルドしています(release) - バージョン %@ (%@)", + "ERROR: swift build exited with code %@.": + "エラー: swift buildがコード %@ で終了しました。", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "エラー: swift build --show-bin-path がバイナリのディレクトリを返しませんでした。", + "ERROR: no built binary found at %@": + "エラー: ビルド済みのバイナリが %@ に見つかりません", + "==> Assembling the .app bundle in %@": + "==> %@ に.appバンドルを組み立てています", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> 警告: 未コミットの変更がある状態でビルドしています - バージョンはどのコミットにも対応しません。", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "エラー: Resources/AppIcon.icns がありません - 次で生成してください: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> ローカル証明書 '%@' で署名しています(以降の再ビルド後もフルディスクアクセスが維持されます)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> アドホック署名しています(Apple Developerアカウントなし) - 以降の再ビルド後もTCCの権限が維持されるよう、'cloudmachine-agent setup-signing-cert' を一度実行してください", + "ERROR: codesign exited with code %@.": + "エラー: codesignがコード %@ で終了しました。", + "Next step: %@": + "次のステップ: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "ローカルの自己署名証明書を作成し、以降のAppの再ビルド後もフルディスクアクセスが維持されるようにします。", + "Certificate '%@' already exists in %@, nothing to do.": + "証明書 '%1$@' は %2$@ にすでに存在するため、何もしません。", + "==> Generating the key and self-signed certificate '%@'...": + "==> キーと自己署名証明書 '%@' を生成しています...", + "ERROR: openssl req exited with code %@.": + "エラー: openssl reqがコード %@ で終了しました。", + "ERROR: openssl pkcs12 exited with code %@.": + "エラー: openssl pkcs12がコード %@ で終了しました。", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> 証明書を %@ に読み込んでいます(/usr/bin/codesignを事前に許可するため、毎回キーチェーンのパスワードを求められることはありません)...", + "ERROR: security import exited with code %@.": + "エラー: security importがコード %@ で終了しました。", + "==> Trusting the certificate ONLY for code signing...": + "==> 証明書をコード署名の用途にのみ信頼します...", + "ERROR: security add-trusted-cert exited with code %@.": + "エラー: security add-trusted-certがコード %@ で終了しました。", + "Done. Certificate '%@' is now available to codesign.": + "完了。証明書 '%@' をcodesignで使用できるようになりました。", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "次回の 'cloudmachine-agent build-app' では、アドホック署名の代わりにこの証明書が自動的に使用されます。", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "その再ビルドを1回行ったあとで、フルディスクアクセスをもう一度だけ許可してください。以降は\n同じ証明書で署名している限り、再ビルドしても許可がリセットされなくなります。", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "1時間ごとのサイクルが引き続き動作しているか(最後に成功したバックアップの日時)を確認し、障害を報告します。", + "After this many hours without a successful backup we consider the cycle broken.": + "成功したバックアップがないまま、この時間数が経過したら、サイクルが停止したとみなします。", + "Only print the state, without a system notification.": + "システム通知は出さず、状態のみを表示します。", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "別のTime Machine環境設定ファイル - 既知のサンプルで監視をテストするためのものです。", + "Last successful backup: %@": + "最後に成功したバックアップ: %@", + "Last successful backup: NONE": + "最後に成功したバックアップ: なし", + "Last attempt: %@": + "最後の試行: %@", + "WAITING (system startup): %@": + "待機中(システム起動時): %@", + "Backup cycle: OK": + "バックアップサイクル: 正常", + "FAILURE: %@": + "障害: %@", + " %@": + " %@", + "Check the state: %@": + "状態を確認: %@", + "Preparing for restart": + "再起動の準備中", + "Prepare for restart": + "再起動の準備", + "Prepare": + "準備", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> 警告: git rev-listが失敗しました(%@) - ビルド番号の代わりに日付を使用します。", + "Agents: %@": + "エージェント: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "起動できません: %@ - CloudMachineを開くか、backup-healthを実行して再読み込みしてください", + "Reloaded agents that could not start: %@": + "起動できなかったエージェントを再読み込みしました: %@", + "Drive folder: %@": + "Driveのフォルダ: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Google Drive上のこのMacのフォルダ名です(既定値: コンピュータ名から生成)。一度だけ設定でき、あとから変更することはできません。", + "Backup watchdog: %@": + "バックアップ監視: %@", + "Prints the version, the build number and the commit this binary was built from.": + "バージョン、ビルド番号、このバイナリのビルド元のコミットを表示します。", + "Only one line, without a description.": + "説明なしで1行だけ表示します。", + "Build from the working tree (outside a bundle) - no version data.": + "作業ツリーからのビルド(バンドル外) - バージョン情報はありません。", + "Version: %@": + "バージョン: %@", + "Build: %@": + "ビルド: %@", + "Commit: %@": + "コミット: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "警告: 未コミットの変更がある状態でビルドされています - このバイナリには、\n どのコミットにも含まれていないコードが入っています。コミット番号は\n 実際に動作している内容を表していません。", + "Saving the space limit": + "容量の上限を保存しています", + "Measuring usage on Google Drive": + "Google Driveの使用量を測定しています", + "Google Drive did not answer - try again later.": + "Google Driveから応答がありませんでした - しばらくしてからもう一度お試しください。", + "Measured.": + "測定しました。", + "Space limit for this Mac": + "このMacの容量の上限", + "Used on Google Drive": + "Google Driveでの使用量", + "Measured %@. The watchdog measures again every few hours.": + "%@に測定しました。監視は数時間ごとに再測定します。", + "Limit (GB)": + "上限 (GB)", + "Save": + "保存", + "Measure now": + "今すぐ測定", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Time Machineの容量制限: %@ GB(上限の70%% - Drive上のコピーは、中のバックアップより約3分の1大きくなります)。Time Machineは、この範囲に収めるため古いバックアップを削除します。", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Time Machineの容量制限を設定: ターミナルで次を実行してください(sudoが必要です)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Google Driveに接続: ターミナルで次を実行し、ブラウザで承認してください", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "CloudMachineにフルディスクアクセスを許可して、バックアップが完了したかどうかを確認できるようにする", + "Folder on Google Drive": + "Google Driveのフォルダ", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Macごとに1つのフォルダを使用します。一度だけ設定でき、接続後は変更できません。", + "Use lowercase letters, digits and dashes.": + "小文字、数字、ハイフンを使用してください。", + "Install rclone": + "rcloneをインストール", + "Open System Settings": + "システム設定を開く", + "Install agents": + "エージェントをインストール", + "not checked": + "未確認", + "none at all": + "まったくありません", + "%@ ago": + "%@前", + "Missing: %@": + "不足: %@", + "Google Drive not connected": + "Google Driveに接続されていません", + "Time Machine does not point to CloudMachine": + "Time MachineがCloudMachineを指していません", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "Time MachineがCloudMachineを指しているか不明です - tmutilから応答がありませんでした", + "Backup in progress": + "バックアップ中", + "Unknown when the last backup was made": + "最後のバックアップがいつ作成されたか不明です", + "There is no completed backup at all": + "完了したバックアップがまったくありません", + "No completed backup for %@": + "%@の間、完了したバックアップがありません", + "Ready": + "準備完了", + "Not saved: %@": + "保存されていません: %@", + "Installing rclone": + "rcloneをインストールしています", + "Installing launchd agents": + "launchdエージェントをインストールしています", + "Starting backup": + "バックアップを開始しています", + "Backup started.": + "バックアップを開始しました。", + "Could not start the backup.": + "バックアップを開始できませんでした。", + "Stopping backup": + "バックアップを停止しています", + "Backup stopped.": + "バックアップを停止しました。", + "Could not stop the backup.": + "バックアップを停止できませんでした。", + "Could not prepare the AppleScript.": + "AppleScriptを準備できませんでした。", + "Unknown authorization error.": + "不明な認証エラーです。", + "Waiting to upload": + "アップロード待ち", + "%@ files": + "%@ 個のファイル", + "nothing": + "なし", + "Back up now": + "今すぐバックアップ", + "Stop backup": + "バックアップを停止", + "Open CloudMachine": + "CloudMachineを開く", + "Quit": + "終了", + "Healthy": + "正常", + "Attention": + "注意", + "Refreshed %@": + "%@に更新", + "System Status": + "システムの状態", + "Action needed": + "対応が必要", + "not measured": + "未測定", + "rclone did not answer": + "rcloneから応答がありませんでした", + "Backup in Progress": + "バックアップ中", + "Files processed": + "処理済みのファイル", + "Write speed": + "書き込み速度", + "Operation phase": + "操作の段階", + "Required Setup Steps": + "必要な設定手順", + "Copy": + "コピー", + "Last completed backup": + "最後に完了したバックアップ", + "Last backup watchdog run": + "バックアップ監視の最後の実行", + "not read": + "未取得", + "Everything uploaded": + "すべてアップロード済み", + "File upload errors": + "ファイルのアップロードエラー", + "Google Drive Credentials (OAuth 2.0)": + "Google Driveの認証情報(OAuth 2.0)", + "Keychain OK": + "キーチェーン: OK", + "No custom keys": + "独自のキーなし", + "Paste client_id...": + "client_idを貼り付け...", + "Paste client_secret...": + "client_secretを貼り付け...", + "Save securely in the Keychain": + "キーチェーンに安全に保存", + "Refresh": + "更新", + "Overview": + "概要", + "Backups": + "バックアップ", + "Storage": + "ストレージ", + "Settings": + "設定", + "Current status: %@": + "現在の状態: %@", + "Does not point to CloudMachine": + "CloudMachineを指していません", + "tmutil did not answer": + "tmutilから応答がありませんでした", + "Backing up: %@ of %@": + "バックアップ中: %2$@ のうち %1$@", + "%@ of %@": + "%2$@ のうち %1$@", + "Copied": + "コピーしました", + "No backup is running": + "バックアップは実行されていません", + "Time Machine starts the next one on its own schedule.": + "Time Machineは、独自のスケジュールで次回のバックアップを開始します。", + "Backup cycle": + "バックアップサイクル", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%1$@ GiB(%2$@ バンド、うち %3$@ をアップロード中)", + "%@ bands": + "%@ バンド", + "%@ fragments abandoned - only in the machine": + "%@ 個のフラグメントのアップロードを断念 - マシン内にのみ存在します", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 がMac上で応答しています: Limaが、パスワードのないマシンのrclone遠隔操作を転送しています。ブラウザで開いているWebページからコマンドを送られる可能性があり、Google Drive上のバックアップを削除されることもあります。vm/cmsmb.yamlのportForwardsルールをマシンに追加し、マシンを再起動してください(vm/README.mdを参照)。", + "A service in the CloudMachine machine is not running": + "CloudMachineマシン内のサービスが動作していません", + "Address": + "アドレス", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "エージェントのインストールが不完全です - %2$@ 個のうち %1$@ 個がインストールされませんでした:\n%3$@\n%4$@\n不足しているエージェントは、気づかないうちに動作しなくなった機能です(vm-guardはマシンのバッファを監視し、backup-healthは障害を報告します)。原因を解消して、もう一度インストールしてください。", + "All running": + "すべて動作中", + "Also install the launchd agents (same as install-launchd).": + "launchdエージェントもインストールします(install-launchdと同じ)。", + "At most this many minutes of waiting for the upload.": + "アップロードを待つ最大の分数。", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "上限に達すると、新しいバンドがすべてEMFILEで失敗し、バックアップが停止します。確認: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "マシンのディスク上のキャッシュ", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Google Driveには接続できましたが、フォルダ '%@' を作成できませんでした - フォルダがないと、マシンはバックアップを保存する場所がありません。アカウントの権限を確認して、もう一度お試しください。", + "Convert the image": + "イメージを変換", + "Converting the image to 32 MB bands": + "イメージを32 MBのバンドに変換しています", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "現在の接続では、バックアップがGoogle Drive上にあるかどうかを確認できなかった(%1$@)ため、remote '%2$@' は置き換えられませんでした。その確認ができないと、新しいサインインを照合できません。", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "公式のrcloneバイナリを~/.cloudmachine/binにダウンロードします(Googleへのサインインとマシンのrclone.conf用)。", + "Free in the machine": + "マシンの空き容量", + "Free in the machine: %@": + "マシンの空き容量: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "launchdエージェント(App、バックアップ監視、マシンの起動、マシンのガード)を生成してインストールします。", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "CloudMachineマシンを動かすLimaをインストール: ターミナルで次を実行してください", + "Install rclone (signs in to Google Drive for the machine)": + "rcloneをインストール(マシン用にGoogle Driveへサインインします)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "バックグラウンドエージェントをインストール(マシンの起動、バッファのガード、バックアップ監視)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Homebrewでrcloneをインストールします - CloudMachine自体は、install-rcloneで入れたものを使用します。", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "バックアップイメージのInfo.plist、トークン、mapped/はマシンのディスク上にのみ存在します。これらがないと、%1$@ のバンドは復元できません。コピー(tm-meta-sync、15分ごと)は %2$@ に保存されます。確認: cloudmachine-agent vm-status、続いてマシン内で: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Limaはマシンが動作中と報告していますが、マシン内のコマンドが戻ってきませんでした。このコマンドがないと、Samba、rclone、アップロードの状態がわかりません。確認: cloudmachine-agent vm-status", + "Machine": + "マシン", + "Machine %@": + "マシン %@", + "Machine & Upload Status": + "マシンとアップロードの状態", + "Machine buffer": + "マシンのバッファ", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "マシンの共有(smb://tm@<アドレス>/CloudMachine)が、Time Machineのバックアップ先になっていません - そこにはバックアップが作成されません。コマンドは次で表示されます: cloudmachine-agent vm-setup", + "Not running: %@": + "動作していません: %@", + "Not set up": + "未設定", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "使い切ると、rcloneがアップロードを停止し、マシンのバッファがいっぱいになって、バックアップが作成されなくなります。1時間ごとのサイクルで約600 MBずつ増える場合、約 %@ 日で到達します。", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "または、rclone.confがありません: このMacはすでにCloudMachineマシンを設定済みのため、むやみに新しく接続することはしません。バックアップからファイルを復元してください(マシンは %@ に独自のコピーを保持しています)。それでも接続する場合は、`%@ config file` が表示するパスに空のファイルを作成して、もう一度実行してください - 既存のフォルダは維持されます。", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Time Machineの接続先をマシンに設定: ターミナルで次を実行してください(sudoが必要です。「コピー」にはパスワードが含まれます)", + "Points to the machine": + "マシンを指しています", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "再起動の準備をします: バックアップを停止し、アップロードをしばらく待ってから、マシンを正常に停止します。", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "Time Machineの接続先の読み取りが %@ 秒以内に戻りませんでした。接続先が応答しなくなると、tmutilはこのように動作します。", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "remote '%@' は置き換えられませんでした。新しいサインインには 'drive.file' スコープが付与され、自身のclient_idで作成したファイルしか見えません。既存のバックアップは現在の接続で作成された可能性が高く、新しい接続からは見えなくなります。何かを書き込む前に、新しいトークンを既存のバックアップと照合し、見えない場合は置き換えを中止します。マシンは、vm-setup --replace-rclone-config を実行するまで、設定の独自のコピーを保持します。このまま進めるには、--replace-existing --accept-scope-change を付けてもう一度実行してください。", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "リモート制御: Mac上の127.0.0.1:5572で公開されています - どのWebページからもrcloneコマンドを送れます。vm/README.md(portForwards)を参照", + "Running": + "動作中", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "マシン内のSamba、rclone、punchfsのいずれかが動作していないため、Time Machineの書き込み先がないか、バンドがGoogle Driveに届いていません。確認: cloudmachine-agent vm-status", + "Service %@": + "サービス %@", + "Services": + "サービス", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "CloudMachineマシンを設定(初回はUbuntuをダウンロードするため数分かかります)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "CloudMachineマシンをもう一度設定し、Time Machineのコマンドを表示", + "Set up the machine": + "マシンを設定", + "Setting up the CloudMachine machine": + "CloudMachineマシンを設定しています", + "Start the CloudMachine machine": + "CloudMachineマシンを起動", + "Start the machine": + "マシンを起動", + "Starting the CloudMachine machine": + "CloudMachineマシンを起動しています", + "Still to upload: %@ GiB": + "アップロード待ち: %@ GiB", + "Stopping the Time Machine backup...": + "Time Machineのバックアップを停止しています...", + "Stopping the machine %@...": + "マシン %@ を停止しています...", + "The CloudMachine machine does not answer": + "CloudMachineマシンから応答がありません", + "The CloudMachine machine is not running": + "CloudMachineマシンが動作していません", + "The CloudMachine machine is not set up yet": + "CloudMachineマシンはまだ設定されていません", + "The CloudMachine machine is stopped": + "CloudMachineマシンは停止しています", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "バックアップを停止し、最大30分間アップロードを待ってから、マシンを正常に停止します。次回のログイン時に再び起動します。", + "The machine %@ is not running - nothing to prepare.": + "マシン %@ は動作していません - 準備するものはありません。", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "マシンは停止し、すべてがGoogle Driveに届きました。Macを再起動できます。マシンはログイン時に再び起動します。", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "マシンは停止しました。%@ GiBがまだGoogle Driveに届いていません - マシンのバッファに保持され、次回の起動後にアップロードされます。Macを再起動できます。", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "マシンは停止しました。rcloneは、アップロード待ちの量を報告しませんでした。アップロードされていないデータはマシンのバッファに保持され、次回の起動後にアップロードされます。Macを再起動できます。", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "マシンのディスクは、このディスク上のファイルであり、アップロードバッファがいっぱいになるにつれて大きくなります。空き容量がなくなると、マシンはバッファに書き込めず、Time Machineのローカルスナップショットも保存できなくなります。", + "The image's metadata has never been copied to Drive": + "イメージのメタデータは一度もDriveにコピーされていません", + "The image's metadata was last copied to Drive %@ ago": + "イメージのメタデータは %@前にDriveへ最後にコピーされました", + "The machine's disk is running out of space (%@ GB)": + "マシンのディスクの空き容量が残りわずかです(%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "新しいサインインでは既存のバックアップ(%1$@)が見えないため、remote '%2$@' は置き換えられず、rclone.confも変更されていません。現在の接続を維持するか、バックアップを作成した認証情報(client_id)でサインインしてください。", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "アップロードバッファはこのディスク上にあります。ガードは、いっぱいになる前にTime Machineを一時停止します。アップロードが追いつかない場合、バックアップは一時停止のままになります。", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "これらのバンドはマシンのバッファにのみ存在します。Google Drive上のバックアップは不完全で、開けない可能性があります。", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machineはマシンにバックアップするため、マシンが動作していないとバックアップは作成されません。起動してください: limactl start %@(またはAppの「マシンを起動」ボタン)。", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machineが2分以内にバックアップを停止しなかった(またはtmutilが応答しなかった)ため、マシンは停止されませんでした。しばらくしてから、もう一度お試しください。", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machineがイメージを作成しました: バックアップを停止してから、イメージを32 MBのバンドに変換してください", + "To upload": + "未アップロード", + "Unknown whether the CloudMachine machine is running": + "CloudMachineマシンが動作中かどうか不明です", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Google Driveへのアップロードを待っています(最大 %@ 分)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "--replace-existing と併用: 新しいサインイン(スコープ 'drive.file')から既存のバックアップが見えない可能性があることを承認します。新しいトークンは、その前に必ずバックアップと照合されます。", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "これがないと、Driveに何かが届いたかどうかを確認する手段がなく、マシンのガードは何も見えない状態になります。", + "limactl did not answer": + "limactlから応答がありませんでした", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactlから応答がありませんでした(またはインストールされていません)。マシンが停止しているという意味ではなく、誰も確認していないという意味です。", + "limactl start failed: %@": + "limactl startが失敗しました: %@", + "limactl stop failed: %@": + "limactl stopが失敗しました: %@", + "punchfs is close to its open-file limit": + "punchfsが開けるファイル数の上限に近づいています", + "punchfs open files": + "punchfsの開いているファイル", + "rclone's remote control is open on this Mac": + "rcloneのリモート制御がこのMacで公開されています", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') がエラーを返したため、このMac上でマシンのディスクがまだ大きくなれるかどうか不明です。", + "Google Drive's daily upload limit stops the upload": + "Google Driveの1日あたりのアップロード上限により、アップロードが停止しています", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Googleは %1$@前に最後にアップロードを拒否しました(1日750 GB)。それ以降のバックアップは、このMac上のマシンのバッファにのみあります。rcloneは5分ごとに再試行し、上限が解除されると自動的に再開します。%2$@ GiBを超えるデータが待機している場合は、ガードがTime Machineを一時停止します。", + "Usage on Google Drive is not being measured": + "Google Driveの使用量が測定されていません", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "最後の測定(%1$@ GB)は %2$@、%3$@前のものです - それ以降、rclone sizeは応答していません。応答するまでは、%4$@ GBの上限を監視するものがなく、90%%と100%%のアラートも出ません。vm-statusを確認するか、ウインドウで「今すぐ測定」を押してください。", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone sizeは一度も応答していません。応答するまでは、%@ GBの上限を監視するものがなく、90%%と100%%のアラートも出ません。vm-statusを確認するか、ウインドウで「今すぐ測定」を押してください。", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "キーチェーンに保存しました。Google Drive(configure-remote)に接続するときに使用されます。", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "キーチェーンに保存しました。既存のGoogle Drive接続は古いclient_idを維持します。このMacではそのままにしてください。新しいキー('drive.file' スコープ)で作成した接続では、古い接続で作成したバックアップが見えません。ここで接続を置き換えないでください。新しいキーは、まだ接続していないMac用です。", + "it is not there for the new token": + "新しいトークンからは見えません", + "Cancel": + "キャンセル", + "ACTION NEEDED": + "対応が必要です", + "WILL PASS BY ITSELF — DO NOTHING": + "自然に解消します - 何もしなくて大丈夫です", + "UNKNOWN — CHECK AGAIN SHORTLY": + "不明 - しばらくしてからもう一度確認してください", + "ALL GOOD": + "問題なし", + "Upload is not working": + "アップロードが動作していません", + "Upload stopped — no space left on Google Drive": + "アップロードが停止しました - Google Driveの空き容量がありません", + "%@ backup fragments not uploaded": + "%@ 個のバックアップフラグメントがアップロードされていません", + "Upload cannot keep up with writes": + "アップロードが書き込みに追いついていません", + "Upload paused — Google daily limit": + "アップロードを一時停止中 - Googleの1日の上限", + "Uploading to Google Drive — %@ queued": + "Google Driveにアップロード中 - %@ 件が待機中", + "Everything uploaded to Google Drive": + "すべてGoogle Driveにアップロードされました", + "Unknown what is waiting in the queue": + "待機中のキューの内容が不明です", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Google Driveに接続できないため、バックアップはこのMac上にのみ作成されます。数分以内に自然に解消しない場合は、ネットワークとDriveへの接続を確認してください。", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Google Driveに空き容量がありません。これは自然には解消しません - Drive上の容量を空ける必要があります。それまでは、このMacのディスクがいっぱいにならないよう、Time Machineは一時停止されます。", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ 個のバックアップフラグメントをアップロードできず、rcloneは再試行を停止しました。これらのフラグメントはこのMacにのみ存在するため、Drive上のバックアップは不完全です。確認が必要です。", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machineがアップロードより速く書き込んでおり、バッファがいっぱいになりました。アップロードが追いつくまでバックアップは一時停止されます - これはディスクがいっぱいになるのを防ぐための安全策であり、障害ではありません。", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Googleは1日あたり750 GBまで受け付けており、その上限を使い切りました。できることはありません。上限は通常、数時間以内に自動的にリセットされます。その間もTime Machineのバックアップは通常どおり作成されてバッファに保持され、Googleが再び受け付けるようになりしだいアップロードされます。", + "%@ backup fragments are queued and on their way to Drive.": + "%@ 個のバックアップフラグメントが待機中で、Driveに向かっています。", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "待機中のものはありません - Google Drive上のバックアップは完全です。", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rcloneがキューに関する問い合わせに応答しなかったため、アップロード待ちのバックアップがどれだけあるかは不明です。何かが壊れたという意味ではありません - 負荷が高いと応答が遅れることがあります。今のところ誰にもわからない、というだけです。続くようであれば、バックアップサイクルの確認で報告されます。", + "unknown error": + "不明なエラー", + "rclone lsf ended with an error": + "rclone lsfがエラーで終了しました", + "This Mac is close to its space limit on Google Drive": + "このMacは、Google Driveの容量の上限に近づいています", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%2$@ GB中 %1$@ GBを使用中です。Time Machineは、容量制限に収めるため古いバックアップを削除します。容量制限が設定されていることを確認してください(vm-status)。", + "This Mac is over its space limit on Google Drive": + "このMacは、Google Driveの容量の上限を超えています", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%2$@ GB中 %1$@ GBを使用中です。Time Machineの容量制限を設定する(コマンドはAppのウインドウまたはvm-statusに表示)か、上限を引き上げてください。", + "not set": + "未設定", + "%@ GB - usage not measured yet": + "%@ GB - 使用量は未測定", + "%@ of %@ GB used (%@%%)": + "%2$@ GB中 %1$@ GBを使用中(%3$@%%)", + "The limit must be a whole number of GB above zero.": + "上限は、0より大きい整数のGBで指定してください。", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "machines.jsonを読み取れないため、上書きしませんでした。先に修正するか削除してください。", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' はフォルダ名として使用できません: 小文字、数字、ハイフンを使用してください。", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "このMacはすでにフォルダ '%1$@' にバックアップしています。'%2$@' に切り替えると、新しい空のバックアップが始まり、既存のバックアップが孤立してしまうため、何も変更していません。", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "このMacにはすでにCloudMachineがインストールされており、バックアップはフォルダ '%1$@' にあります。'%2$@' に切り替えるとバックアップが孤立してしまうため、何も変更していません。", + "Could not save the folder name to %@: %@": + "フォルダ名を %1$@ に保存できませんでした: %2$@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrewがインストールされていません。手動でインストールしてください: https://brew.sh", + "Installing rclone failed: %@": + "rcloneのインストールに失敗しました: %@", + "Installed rclone.": + "rcloneをインストールしました。", + "Own Google credentials: set.": + "独自のGoogle認証情報: 設定済み。", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "不完全: %@ がありません - rcloneは共有のclient_idをそのまま使用します。", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "独自の認証情報がありません - rcloneは共有のclient_idを使用します。これは共同でレート制限を受け、2026年に廃止されます。", + "Empty value - not saving.": + "値が空です - 保存しません。", + "Keychain refused: %@": + "キーチェーンが拒否しました: %@", + "DIRTY-TREE": + "未コミットの変更あり", + "Cannot create the working directory: %@": + "作業ディレクトリを作成できません: %@", + "Could not read the rclone version number.": + "rcloneのバージョン番号を読み取れませんでした。", + "Could not download %@.": + "%@ をダウンロードできませんでした。", + "No entry for %@ in SHA256SUMS.": + "SHA256SUMSに %@ のエントリがありません。", + "Could not compute the checksum.": + "チェックサムを計算できませんでした。", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "SHA256チェックサムが一致しません - インストールしません。\n 期待値: %1$@\n 計算値: %2$@", + "Could not unpack the archive.": + "アーカイブを展開できませんでした。", + "Could not install the binary: %@": + "バイナリをインストールできませんでした: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %1$@ を %2$@ にインストールしました(SHA256チェックサムが一致)。", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ が所定の時間内に応答しませんでした(プロセスはバックグラウンドに残されたままです)。", + "Cannot launch %@: %@": + "%1$@ を起動できません: %2$@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "remote '%@' はすでに存在し、変更されませんでした。\n上書きするとトークンと権限スコープが置き換えられます。'drive.file' スコープの認証情報は、以前の認証情報が作成したファイルを見ることができないため、既存のバックアップに到達できなくなります。\nどうしても置き換える場合は、先に~/.config/rclone/rclone.confをバックアップし、--replace-existing を付けてもう一度実行してください。", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "remote '%1$@' がすでに存在するか確認できなかった(rclone listremotesが応答しないか、失敗しました)ため、何も変更していません。`%2$@ listremotes` を実行してエラーを確認し、もう一度お試しください。", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "このMacにすでにCloudMachineがインストールされているか確認できなかった(rcloneが応答しませんでした)ため、フォルダは選択されませんでした。しばらくしてから、もう一度お試しください。", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorizeが失敗しました(%@)。そのバイナリがない場合は、次から始めてください: cloudmachine-agent install-rclone。", + "Could not read the token from the output of rclone authorize.": + "rclone authorizeの出力からトークンを読み取れませんでした。", + "rclone config create failed.": + "rclone config createが失敗しました。", + "Connected to Google Drive as remote '%@', folder %@.": + "Google Driveにremote '%1$@'、フォルダ %2$@ として接続しました。", + "tmutil is not responding - unknown where the backup goes": + "tmutilが応答していません - バックアップの保存先が不明です", + "No successful backup for %@": + "%@の間、成功したバックアップがありません", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "最後に完了したバックアップ: %1$@。サイクルは1時間ごとなので、%2$@ 回分が実行されていません。", + "There is NOT A SINGLE successful backup": + "成功したバックアップが1つもありません", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Time Machineの環境設定に、この接続先で完了したバックアップの日時が含まれていません。", + "The last backup attempt did not end in a backup": + "最後のバックアップの試行は、バックアップとして完了しませんでした", + "The attempt at %@ is newer than the last successful backup at %@.": + "%1$@の試行は、最後に成功したバックアップ(%2$@)より新しいものです。", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machineが前回の実行でエラーを報告しています(RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Time Machineの環境設定でRESULTが0以外の場合、その実行は成功しなかったことを意味します。", + "rclone failed to upload %@ files": + "rcloneが %@ 個のファイルをアップロードできませんでした", + "Buffer full of nothing but unsent data": + "バッファが未送信のデータだけでいっぱいです", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rcloneがバッファから退避できるものがもうありません - アップロードが追いついていないか、止まっています。", + "The rclone control interface is not responding": + "rcloneの制御インターフェースが応答していません", + "Google Drive is running out of space (%@ GB)": + "Google Driveの空き容量が残りわずかです(%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Macのディスクの空き容量が残りわずかです(%@ GB)", + "Cannot read the Time Machine preferences": + "Time Machineの環境設定を読み取れません", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ を読み取れません - 多くの場合、フルディスクアクセスがないことが原因です。このファイルがないと、最後のバックアップがいつ作成されたか不明のため、問題がないものとはせず、障害として扱います。", + "Cannot measure free space on the Mac's disk": + "Macのディスクの空き容量を測定できません", + "%@ days": + "%@ 日", + "CloudMachine: backup is not working": + "CloudMachine: バックアップが動作していません", + "unknown reason": + "原因不明", + "osascript did not show the notification (permissions or no graphical session)": + "osascriptが通知を表示しませんでした(権限がないか、グラフィカルセッションがありません)", + "UNDELIVERED ALARM: %@": + "未配信のアラート: %@", + "from %@, reason: %@": + "%1$@から、理由: %2$@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "システム通知が配信されませんでした - このアラートはここでのみ確認できます。", + "%@ (%@ ago)": + "%1$@(%2$@前)", + "%@ - marker from the FUTURE": + "%@ - 未来の日時のマーカー", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%1$@(%2$@前) - 監視が動作していない可能性があります", + "NEVER - the watchdog has not recorded a single run": + "一度もありません - 監視は実行を1回も記録していません", + "Could not find the launchd/ directory with templates.": + "テンプレートのあるlaunchd/ディレクトリが見つかりませんでした。", + "Could not find the compiled cloudmachine-agent binary.": + "コンパイル済みのcloudmachine-agentバイナリが見つかりませんでした。", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "中止しました: cloudmachine-agentを固定の場所に置けませんでした\n(%1$@) - 多くの場合、空き容量または権限の不足が原因です。\n%2$@ を指すエージェントはインストールしません: このパスは\n次回の `swift build` や `git clean` で消えてしまい、バックアップが\n何の兆候もなく停止します。", + "ABORTED: %@": + "中止しました: %@", + "Could not list the templates in %@.": + "%@ のテンプレートを一覧表示できませんでした。", + "could not read the template %@": + "テンプレート %@ を読み取れませんでした", + "could not write %@ (lack of space or permissions)": + "%@ を書き込めませんでした(空き容量または権限の不足)", + "launchctl load refused to load %@": + "launchctl loadが %@ の読み込みを拒否しました", + "NOT A SINGLE agent was loaded.": + "読み込まれたエージェントは1つもありません。", + "Only these went in: %@.": + "インストールされたのは次のみです: %@。", + "Could not load any launchd agent.": + "launchdエージェントを1つも読み込めませんでした。", + "Installed agents: %@": + "インストールしたエージェント: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " 警告: 上限に近づいています - 新しいバンドがEMFILEで失敗します", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "Google Drive上の %@/bands が空ではありません - 別のバックアップがある可能性があります。上書きしません。手動で確認してください。", + "Address: %@": + "アドレス: %@", + "Already prepared (%@ exists) - nothing to do.": + "すでに準備済みです(%@ が存在します) - 何もする必要はありません。", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "マシン内のTime Machineの新しい空のイメージを32 MBのバンドに変換し、バンドをGoogle Driveに移動します。", + "Copy rclone.conf into the machine even if it already has one.": + "すでにrclone.confがある場合でも、マシンにコピーします。", + "Copying the converted image into the machine failed: %@": + "変換したイメージのマシンへのコピーに失敗しました: %@", + "Copying the image to the Mac failed: %@": + "イメージのMacへのコピーに失敗しました: %@", + "Could not ask Lima about the machine: %@": + "マシンについてLimaに問い合わせできませんでした: %@", + "Could not carry the Time Machine files over: %@": + "Time Machineのファイルを移動できませんでした: %@", + "Could not check the image in the machine.": + "マシン内のイメージを確認できませんでした。", + "Could not copy the rclone configuration into the machine.": + "rcloneの設定をマシンにコピーできませんでした。", + "Could not create %@ on Google Drive: %@": + "Google Drive上に %1$@ を作成できませんでした: %2$@", + "Could not create %@: %@": + "%1$@ を作成できませんでした: %2$@", + "Could not find the vm/ directory with the machine template.": + "マシンのテンプレートがあるvm/ディレクトリが見つかりませんでした。", + "Could not read the image size.": + "イメージのサイズを読み取れませんでした。", + "Could not set the SMB password of user %@ in the machine.": + "マシン内でユーザ %@ のSMBパスワードを設定できませんでした。", + "Could not stop smbd in the machine.": + "マシン内のsmbdを停止できませんでした。", + "Could not write %@ in the machine.": + "マシン内に %@ を書き込めませんでした。", + "Could not write the password file %@.": + "パスワードファイル %@ を書き込めませんでした。", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "CloudMachineマシン(Lima)を作成または起動し、rcloneの設定とSMBパスワードを渡して、Time Machineのコマンドを表示します。", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "マシン %@ を作成しています(初回の起動ではUbuntuをダウンロードしてパッケージをインストールします - 数分かかります)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "完了: %1$@ はGoogle Drive上で %2$@ MBのバンドになりました。元のイメージはマシン内の %3$@ に保持されています。バックアップを開始: tmutil startbackup", + "exit code %@, no message": + "終了コード %@、メッセージなし", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "イメージのメタデータ: %@ に一度もコピーされていません - マシン内のtm-meta-syncを確認してください", + "Image metadata: copied %@ ago to %@": + "イメージのメタデータ: %1$@前に %2$@ にコピー済み", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "イメージのメタデータ: 最後のコピーは %1$@前 - 遅延しています(%2$@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "イメージのメタデータ: まだコピーされていません - vm-prepare-bundleを待っています", + "Backup %@, paused by the guard %@: %@": + "バックアップ %1$@、ガードによる一時停止 %2$@: %3$@", + "Free in machine: %@ GiB": + "マシンの空き: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n が問題を検出しました: %@", + "Google Drive folder: %@": + "Google Driveのフォルダ: %@", + "hdiutil attach of the converted image failed: %@": + "変換したイメージのhdiutil attachに失敗しました: %@", + "hdiutil convert failed: %@": + "hdiutil convertに失敗しました: %@", + "Image name in the machine (default: from the computer name).": + "マシン内のイメージ名(既定値: コンピュータ名から生成)。", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "変換したイメージのインストールに失敗しました: %1$@\nTime Machineが中途半端にインストールされたイメージを開かないよう、smbdは停止したままにしています。元のイメージはマシン内の %2$@ にあります。", + "limactl create failed: %@": + "limactl createに失敗しました: %@", + "limactl list failed: %@": + "limactl listに失敗しました: %@", + "limactl not found - install Lima: brew install lima": + "limactlが見つかりません - Limaをインストールしてください: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl startに失敗しました: %1$@\nマシン自身のログ: %2$@", + "Machine %@ is running.": + "マシン %@ は動作中です。", + "Machine %@ was already running.": + "マシン %@ はすでに動作していました。", + "Machine: %@ (%@)": + "マシン: %1$@(%2$@)", + "Machine: %@": + "マシン: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "マシン: 未作成 - 次を実行してください: cloudmachine-agent vm-setup", + "no answer within the time limit": + "制限時間内に応答なし", + "No image %@ in the machine.": + "マシン内にイメージ %@ がありません。", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "マシン内にまだイメージがありません - 先にTime Machineの接続先をこの共有に設定し、イメージを作成させてください。", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "%@ にrcloneの設定がありません - 先にGoogle Driveに接続してください(configure-remote)。", + "no SMB destination": + "SMBの接続先なし", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "マシンのアップロードバッファを1回確認します: いっぱいになるとTime Machineを一時停止し、一時停止したものを再開します。", + "Packing the converted image failed: %@": + "変換したイメージのパッキングに失敗しました: %@", + "Packing the image failed: %@": + "イメージのパッキングに失敗しました: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "マシンから応答がありません(rclone rc) - ガードは何もしません。", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "ガードが判断する内容だけを表示します - 使い捨てのマシンでしきい値を試すためのものです。", + "Pause above this many GiB in the buffer.": + "バッファがこのGiBを超えたら一時停止します。", + "Pause when the machine has less free than this, in GiB.": + "マシンの空き容量がこのGiBを下回ったら一時停止します。", + "Point Time Machine at the machine (once, needs an administrator password):": + "Time Machineの接続先をマシンに設定してください(一度だけ。管理者パスワードが必要です):", + "punchfs files: %@ open, limit %@": + "punchfsのファイル: %1$@ 個を開いています、上限 %2$@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "rcloneの設定はすでにマシン内にあります - そのまま維持しました(--replace-rclone-configで置き換えられます)。", + "rclone configuration copied into the machine.": + "rcloneの設定をマシンにコピーしました。", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "マシン内でrclone-tmまたはpunchfsが動作していません - cloudmachine-agent vm-statusを参照してください。", + "Resume below this many GiB (only a backup the guard paused).": + "バッファがこのGiBを下回ったら再開します(ガードが一時停止したバックアップのみ)。", + "Service %@: %@": + "サービス %1$@: %2$@", + "Several images in the machine (%@) - choose one with --bundle.": + "マシン内に複数のイメージがあります(%@) - --bundle で1つ選んでください。", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "マシンの状態を表示します: アドレス、サービス、アップロードバッファ、空き容量、Time Machineの接続先。", + "SMB password stored in %@ (mode 600).": + "SMBパスワードを %@ に保存しました(モード600)。", + "The converted image does not have %@-byte bands.": + "変換したイメージのバンドは %@ バイトではありません。", + "The converted image has no APFS partition.": + "変換したイメージにAPFSパーティションがありません。", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "イメージはすでに %1$@ MBを使用しています - このコマンドは、新しい空のイメージ(%2$@ MB未満)のみを変換します。", + "The image is encrypted - converting encrypted images is not supported.": + "イメージは暗号化されています - 暗号化されたイメージの変換には対応していません。", + "The image was not changed; smbd started again.": + "イメージは変更されていません。smbdを再起動しました。", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "マシンが応答しません - 動作していますか? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "マシンがvzNATネットワークでアドレスを持っていません。", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "マシン内のサービスが起動しませんでした - 確認: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machineがバックアップ中です - 先に停止してください: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: マシンを指していません(%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutilから応答がありませんでした", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutilから応答がありませんでした - イメージの状態が不明な間は、イメージに触れません。", + "unknown": + "不明", + "Unpacking the image failed: %@": + "イメージの展開に失敗しました: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "アップロード待ち: %1$@ GiB(%2$@ バンド)、アップロード中 %3$@(ディスク上のキャッシュ %4$@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "%@(マシンとそのアップロードバッファ)をTime Machineから除外しました。", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "警告: %1$@ をTime Machineから除外できませんでした - 次を実行してください: tmutil addexclusion %2$@", + "Upload buffer: no answer from rclone (rc %@)": + "アップロードバッファ: rclone(rc %@)から応答なし", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Time Machineが空のイメージを作成したら、バックアップを停止し(tmutil stopbackup)、次を実行してください: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "未送信 %1$@ GiB、空き %2$@ GiB(未送信が %3$@ GiBを超えるか空きが %4$@ GiBを下回ると一時停止、%5$@ GiBを下回ると再開)。", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "アップロード: Googleの1日の上限によりアップロードが %@前に拒否されました - rcloneは5分ごとに再試行し、自動的に再開します", + "no": + "いいえ", + "running": + "実行中", + "stopped": + "停止中", + "yes": + "はい", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%1$@\n以前のテンプレートは %2$@ にあります - lima.yamlの上にコピーし直して、limactl start %3$@ を実行してください。", + "Could not read this app's machine template (limactl template copy).": + "このAppのマシンテンプレートを読み取れませんでした(limactl template copy)。", + "Could not replace %@: %@": + "%1$@ を置き換えられませんでした: %2$@", + "Machine %@ already runs this app's template.": + "マシン %@ はすでにこのAppのテンプレートで動作しています。", + "Machine %@ now runs this app's template; the previous one is in %@.": + "マシン %1$@ は、このAppのテンプレートで動作するようになりました。以前のものは %2$@ にあります。", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "マシンをこのAppのテンプレートに移行します(再起動2回、バックアップ中は実行しません)。", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "マシン %@ がありません - 次で作成してください: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "テンプレート: このAppのものより古い - 次を実行してください: cloudmachine-agent vm-update", + "Template: not compared": + "テンプレート: 未比較", + "Template: this app's": + "テンプレート: このAppのもの", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "マシンに %@ がありません - 先にcloudmachine-agent vm-setupを実行してください。", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "マシンは再起動しましたが、すべてのサービスが動作しているわけではありません - 確認: cloudmachine-agent vm-status。以前のテンプレートは %@ にあります。", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "テンプレートがマシン自体(%@)を変更します - 更新ではなく、新しいマシンが必要です。", + "The upload to Google Drive hangs": + "Google Driveへのアップロードが止まっています", + "Time Machine is backing up - try again when it has finished.": + "Time Machineがバックアップ中です - 終了してから、もう一度お試しください。", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "アップロード: 停止 - 処理中のバンドがありますが、%@ の間アップロードされていません(ネットワーク?)。マシン内の/var/log/rclone-tm.logを参照", + "limactl stop failed - nothing was changed.": + "limactl stopに失敗しました - 何も変更されていません。", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rcloneには処理中のバンドがありますが、%1$@の間、1つもアップロードされていません - 通常はネットワーク接続の切断が原因で、rcloneはこれをエラーとして報告しません。それ以降のバックアップは、マシンのバッファにのみあります。ネットワークが復旧すると、アップロードは自動的に再開します(2026年10月28日には80秒以内)。再開しない場合は、マシンを再起動する(prepare-shutdown、limactl start)と、切れた接続が破棄されます。", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutilから応答がありませんでした - マシンの状態が不明な間は、マシンを再起動しません。", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+ko.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+ko.swift new file mode 100644 index 0000000..88978c4 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+ko.swift @@ -0,0 +1,951 @@ +// Korean translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let ko: [String: String] = [ + "Space limit: %@": + "공간 한도: %@", + " Time Machine quota not set to match - run: %@": + " Time Machine 할당량이 일치하지 않음 - 다음을 실행하세요: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "이 Mac이 사용할 수 있는 Google Drive 공간을 설정하고, Time Machine 할당량을 설정하는 명령어를 출력합니다.", + "Limit in GB.": + "한도(GB 단위).", + "Limit for this Mac: %@ GB.": + "이 Mac의 한도: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "이제 Time Machine 할당량을 설정하세요(관리자 암호 필요):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - 검증, Google Drive 설정 및 설치. launchd가 일정에 따라 호출하거나 터미널에서 직접 실행합니다.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "rclone(브라우저에서 OAuth)을 통해 Google Drive에 연결하고 이 머신의 폴더를 만듭니다.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "기존 remote를 덮어씁니다. 위험: 토큰과 권한이 교체됩니다.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "build/CloudMachine.app을 build/CloudMachine-<버전>.dmg로 패키징합니다.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "오류: %@이(가) 없습니다 - 먼저 'cloudmachine-agent build-app'을 실행하세요", + "==> Preparing the staging folder": + "==> 스테이징 폴더를 준비하는 중", + "==> Creating %@": + "==> %@ 생성 중", + "ERROR: hdiutil exited with code %@.": + "오류: hdiutil이 코드 %@(으)로 종료되었습니다.", + "==> Done: %@": + "==> 완료: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "처음 실행할 때(이 앱은 Apple Developer 계정으로 서명되지 않았습니다):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. %@을(를) 열고 CloudMachine.app을 응용 프로그램 폴더로 드래그합니다.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. Finder에서 CloudMachine.app을 마우스 오른쪽 버튼으로 클릭 -> 열기 -> 열기\n (그냥 더블 클릭하면 Gatekeeper가 \"확인되지 않은 개발자\"라며 차단합니다).", + "3. Later launches work normally, with a double-click.": + "3. 이후에는 더블 클릭으로 평소처럼 실행됩니다.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "CloudMachine.app(Release)을 빌드합니다 - GUI와 cloudmachine-agent는 Contents/MacOS/에, launchd/, vm/, config/는 Resources로 포함됩니다.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Apple Silicon과 Intel용 바이너리를 한 번에 만듭니다(CI가 릴리스를 빌드하는 방식이며, 로컬에서는 필요하지 않음).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> CloudMachineApp + cloudmachine-agent 빌드 중(release) - 버전 %1$@ (%2$@)", + "ERROR: swift build exited with code %@.": + "오류: swift build가 코드 %@(으)로 종료되었습니다.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "오류: swift build --show-bin-path가 바이너리 디렉터리를 알려 주지 않았습니다.", + "ERROR: no built binary found at %@": + "오류: %@에서 빌드된 바이너리를 찾을 수 없습니다", + "==> Assembling the .app bundle in %@": + "==> %@에 .app 번들을 구성하는 중", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> 경고: 커밋되지 않은 변경 사항이 있는 상태에서 빌드하고 있습니다 - 버전이 특정 커밋을 가리키지 않습니다.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "오류: Resources/AppIcon.icns가 없습니다 - 다음으로 생성하세요: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> 로컬 인증서 '%@'(으)로 서명하는 중(이후 다시 빌드해도 전체 디스크 접근 권한이 유지됩니다)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> 임시(ad-hoc) 서명 중(Apple Developer 계정 없음) - 이후 다시 빌드해도 TCC 권한이 유지되도록 'cloudmachine-agent setup-signing-cert'를 한 번 실행하세요", + "ERROR: codesign exited with code %@.": + "오류: codesign이 코드 %@(으)로 종료되었습니다.", + "Next step: %@": + "다음 단계: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "이후 앱을 다시 빌드해도 전체 디스크 접근 권한이 유지되도록 로컬 자체 서명 인증서를 만듭니다.", + "Certificate '%@' already exists in %@, nothing to do.": + "인증서 '%1$@'은(는) 이미 %2$@에 있으므로 할 일이 없습니다.", + "==> Generating the key and self-signed certificate '%@'...": + "==> 키와 자체 서명 인증서 '%@' 생성 중...", + "ERROR: openssl req exited with code %@.": + "오류: openssl req가 코드 %@(으)로 종료되었습니다.", + "ERROR: openssl pkcs12 exited with code %@.": + "오류: openssl pkcs12가 코드 %@(으)로 종료되었습니다.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> 인증서를 %@에 가져오는 중(/usr/bin/codesign을 미리 승인하므로 매번 키체인 암호를 묻지 않습니다)...", + "ERROR: security import exited with code %@.": + "오류: security import가 코드 %@(으)로 종료되었습니다.", + "==> Trusting the certificate ONLY for code signing...": + "==> 코드 서명 용도로만 인증서를 신뢰하도록 설정하는 중...", + "ERROR: security add-trusted-cert exited with code %@.": + "오류: security add-trusted-cert가 코드 %@(으)로 종료되었습니다.", + "Done. Certificate '%@' is now available to codesign.": + "완료. 인증서 '%@'을(를) 이제 codesign에서 사용할 수 있습니다.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "다음 'cloudmachine-agent build-app'은 임시 서명 대신 이 인증서를 자동으로 사용합니다.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "그 한 번의 재빌드 후 전체 디스크 접근 권한을 마지막으로 한 번 더 허용하세요 - 이후에는\n같은 인증서로 서명하는 한 재빌드해도 권한이 초기화되지 않습니다.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "1시간 주기가 여전히 작동하는지(마지막으로 성공한 백업 날짜) 확인하고 실패를 알립니다.", + "After this many hours without a successful backup we consider the cycle broken.": + "성공한 백업 없이 이 시간이 지나면 주기가 중단된 것으로 간주합니다.", + "Only print the state, without a system notification.": + "시스템 알림 없이 상태만 출력합니다.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "다른 Time Machine 환경설정 파일 - 알려진 샘플로 감시 기능을 시험하기 위한 것입니다.", + "Last successful backup: %@": + "마지막으로 성공한 백업: %@", + "Last successful backup: NONE": + "마지막으로 성공한 백업: 없음", + "Last attempt: %@": + "마지막 시도: %@", + "WAITING (system startup): %@": + "대기 중(시스템 시작): %@", + "Backup cycle: OK": + "백업 주기: 정상", + "FAILURE: %@": + "실패: %@", + " %@": + " %@", + "Check the state: %@": + "상태 확인: %@", + "Preparing for restart": + "재시동 준비 중", + "Prepare for restart": + "재시동 준비", + "Prepare": + "준비", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> 경고: git rev-list가 실패했습니다(%@) - 빌드 번호 대신 날짜를 사용합니다.", + "Agents: %@": + "에이전트: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "시작할 수 없음: %@ - CloudMachine을 열거나 backup-health를 실행하여 다시 불러오세요", + "Reloaded agents that could not start: %@": + "시작하지 못한 에이전트를 다시 불러왔습니다: %@", + "Drive folder: %@": + "Drive 폴더: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Google Drive에 있는 이 Mac의 폴더 이름입니다(기본값: 컴퓨터 이름에서 가져옴). 한 번만 설정할 수 있으며 나중에 변경할 수 없습니다.", + "Backup watchdog: %@": + "백업 감시: %@", + "Prints the version, the build number and the commit this binary was built from.": + "버전, 빌드 번호, 이 바이너리를 빌드한 커밋을 출력합니다.", + "Only one line, without a description.": + "설명 없이 한 줄만 출력합니다.", + "Build from the working tree (outside a bundle) - no version data.": + "작업 트리에서 빌드됨(번들 외부) - 버전 정보 없음.", + "Version: %@": + "버전: %@", + "Build: %@": + "빌드: %@", + "Commit: %@": + "커밋: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "경고: 커밋되지 않은 변경 사항이 있는 상태에서 빌드됨 - 이 바이너리에는\n 어떤 커밋에도 없는 코드가 들어 있습니다. 커밋 번호는\n 실제로 실행되는 내용을 설명하지 않습니다.", + "Saving the space limit": + "공간 한도를 저장하는 중", + "Measuring usage on Google Drive": + "Google Drive 사용량을 측정하는 중", + "Google Drive did not answer - try again later.": + "Google Drive가 응답하지 않았습니다 - 나중에 다시 시도하세요.", + "Measured.": + "측정했습니다.", + "Space limit for this Mac": + "이 Mac의 공간 한도", + "Used on Google Drive": + "Google Drive에서 사용 중", + "Measured %@. The watchdog measures again every few hours.": + "%@에 측정함. 감시 기능이 몇 시간마다 다시 측정합니다.", + "Limit (GB)": + "한도 (GB)", + "Save": + "저장", + "Measure now": + "지금 측정", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Time Machine 할당량: %@ GB(한도의 70%% - Drive의 복사본은 그 안의 백업보다 약 3분의 1 큽니다). Time Machine은 이 범위를 지키기 위해 가장 오래된 백업을 삭제합니다.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Time Machine 할당량 설정: 터미널에서 다음을 실행하세요(sudo 필요)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Google Drive 연결: 터미널에서 다음을 실행하고 브라우저에서 승인하세요", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "백업이 완료되는지 확인할 수 있도록 CloudMachine에 전체 디스크 접근 권한을 허용하세요", + "Folder on Google Drive": + "Google Drive 폴더", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Mac마다 폴더 하나를 사용합니다. 한 번만 설정할 수 있으며 연결 후에는 변경할 수 없습니다.", + "Use lowercase letters, digits and dashes.": + "소문자, 숫자, 하이픈을 사용하세요.", + "Install rclone": + "rclone 설치", + "Open System Settings": + "시스템 설정 열기", + "Install agents": + "에이전트 설치", + "not checked": + "확인되지 않음", + "none at all": + "전혀 없음", + "%@ ago": + "%@ 전", + "Missing: %@": + "누락: %@", + "Google Drive not connected": + "Google Drive에 연결되지 않음", + "Time Machine does not point to CloudMachine": + "Time Machine이 CloudMachine을 가리키지 않음", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "Time Machine이 CloudMachine을 가리키는지 알 수 없음 - tmutil이 응답하지 않았습니다", + "Backup in progress": + "백업 진행 중", + "Unknown when the last backup was made": + "마지막 백업 시점을 알 수 없음", + "There is no completed backup at all": + "완료된 백업이 전혀 없음", + "No completed backup for %@": + "%@ 동안 완료된 백업이 없음", + "Ready": + "준비됨", + "Not saved: %@": + "저장되지 않음: %@", + "Installing rclone": + "rclone 설치 중", + "Installing launchd agents": + "launchd 에이전트 설치 중", + "Starting backup": + "백업을 시작하는 중", + "Backup started.": + "백업을 시작했습니다.", + "Could not start the backup.": + "백업을 시작할 수 없습니다.", + "Stopping backup": + "백업을 중지하는 중", + "Backup stopped.": + "백업을 중지했습니다.", + "Could not stop the backup.": + "백업을 중지할 수 없습니다.", + "Could not prepare the AppleScript.": + "AppleScript를 준비할 수 없습니다.", + "Unknown authorization error.": + "알 수 없는 인증 오류입니다.", + "Waiting to upload": + "업로드 대기 중", + "%@ files": + "파일 %@개", + "nothing": + "없음", + "Back up now": + "지금 백업", + "Stop backup": + "백업 중지", + "Open CloudMachine": + "CloudMachine 열기", + "Quit": + "종료", + "Healthy": + "정상", + "Attention": + "주의", + "Refreshed %@": + "%@에 새로 고침됨", + "System Status": + "시스템 상태", + "Action needed": + "조치 필요", + "not measured": + "측정되지 않음", + "rclone did not answer": + "rclone이 응답하지 않았습니다", + "Backup in Progress": + "백업 진행 중", + "Files processed": + "처리된 파일", + "Write speed": + "쓰기 속도", + "Operation phase": + "작업 단계", + "Required Setup Steps": + "필수 설정 단계", + "Copy": + "복사", + "Last completed backup": + "마지막으로 완료된 백업", + "Last backup watchdog run": + "마지막 백업 감시 실행", + "not read": + "읽지 않음", + "Everything uploaded": + "모두 업로드됨", + "File upload errors": + "파일 업로드 오류", + "Google Drive Credentials (OAuth 2.0)": + "Google Drive 자격 증명(OAuth 2.0)", + "Keychain OK": + "키체인 정상", + "No custom keys": + "사용자 지정 키 없음", + "Paste client_id...": + "client_id 붙여넣기...", + "Paste client_secret...": + "client_secret 붙여넣기...", + "Save securely in the Keychain": + "키체인에 안전하게 저장", + "Refresh": + "새로 고침", + "Overview": + "개요", + "Backups": + "백업", + "Storage": + "저장 공간", + "Settings": + "설정", + "Current status: %@": + "현재 상태: %@", + "Does not point to CloudMachine": + "CloudMachine을 가리키지 않음", + "tmutil did not answer": + "tmutil이 응답하지 않았습니다", + "Backing up: %@ of %@": + "백업 중: %2$@ 중 %1$@", + "%@ of %@": + "%2$@ 중 %1$@", + "Copied": + "복사됨", + "No backup is running": + "실행 중인 백업이 없음", + "Time Machine starts the next one on its own schedule.": + "Time Machine은 자체 일정에 따라 다음 백업을 시작합니다.", + "Backup cycle": + "백업 주기", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%2$@개 밴드에 %1$@ GiB, %3$@ 업로드 중", + "%@ bands": + "밴드 %@개", + "%@ fragments abandoned - only in the machine": + "조각 %@개 포기됨 - 머신에만 있음", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572가 Mac에서 응답하고 있습니다. Lima가 암호가 없는 머신의 rclone 원격 제어를 전달하고 있습니다. 브라우저에 열려 있는 모든 웹 페이지가 여기에 명령을 보낼 수 있으며, Google Drive의 백업을 삭제하는 것도 가능합니다. vm/cmsmb.yaml의 portForwards 규칙을 머신에 추가하고 머신을 다시 시작하세요(vm/README.md 참조).", + "A service in the CloudMachine machine is not running": + "CloudMachine 머신의 서비스가 실행되고 있지 않습니다", + "Address": + "주소", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "에이전트 설치가 불완전합니다 - %2$@개 중 %1$@개가 설치되지 않았습니다:\n%3$@\n%4$@\n누락된 에이전트는 조용히 작동을 멈춘 기능입니다(vm-guard는 머신의 버퍼를 감시하고, backup-health는 실패를 알립니다). 원인을 해결한 뒤 설치를 다시 실행하세요.", + "All running": + "모두 실행 중", + "Also install the launchd agents (same as install-launchd).": + "launchd 에이전트도 설치합니다(install-launchd와 동일).", + "At most this many minutes of waiting for the upload.": + "업로드를 기다리는 최대 시간(분).", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "한도에 도달하면 모든 새 밴드가 EMFILE로 실패하고 백업이 중단됩니다. 확인: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "머신 디스크의 캐시", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Google Drive에는 연결되었지만 폴더 '%@'을(를) 만들 수 없었습니다 - 폴더가 없으면 머신이 백업을 보관할 곳이 없습니다. 계정 권한을 확인하고 다시 시도하세요.", + "Convert the image": + "이미지 변환", + "Converting the image to 32 MB bands": + "이미지를 32 MB 밴드로 변환하는 중", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "현재 연결로는 백업이 Google Drive에 있는지 확인할 수 없어(%1$@) remote '%2$@'은(는) 교체되지 않았습니다. 그 답이 없으면 새 로그인을 기존 백업과 대조할 수 없습니다.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "공식 rclone 바이너리를 ~/.cloudmachine/bin에 다운로드합니다(Google 로그인과 머신의 rclone.conf용).", + "Free in the machine": + "머신의 여유 공간", + "Free in the machine: %@": + "머신의 여유 공간: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "launchd 에이전트(앱, 백업 감시, 머신 시작, 머신 가드)를 생성하고 설치합니다.", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "CloudMachine 머신을 실행하는 Lima 설치: 터미널에서 다음을 실행하세요", + "Install rclone (signs in to Google Drive for the machine)": + "rclone 설치(머신을 위해 Google Drive에 로그인합니다)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "백그라운드 에이전트 설치(머신 시작, 버퍼 가드, 백업 감시)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Homebrew로 rclone을 설치합니다 - CloudMachine 자체는 install-rclone으로 설치한 것을 사용합니다.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "백업 이미지의 Info.plist, 토큰, mapped/는 머신의 디스크에만 있으며, 이것이 없으면 %1$@의 밴드를 복원할 수 없습니다. 복사본(tm-meta-sync, 15분마다)은 %2$@에 저장됩니다. 확인: cloudmachine-agent vm-status, 이어서 머신에서: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima는 머신이 실행 중이라고 알리지만, 머신 안의 명령이 돌아오지 않았습니다. 이 명령이 없으면 Samba, rclone, 업로드에 대해 아무것도 알 수 없습니다. 확인: cloudmachine-agent vm-status", + "Machine": + "머신", + "Machine %@": + "머신 %@", + "Machine & Upload Status": + "머신 및 업로드 상태", + "Machine buffer": + "머신 버퍼", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Time Machine 대상 중 머신의 공유(smb://tm@<주소>/CloudMachine)가 없습니다 - 그곳에는 백업이 만들어지지 않습니다. 명령어는 다음으로 출력됩니다: cloudmachine-agent vm-setup", + "Not running: %@": + "실행되지 않음: %@", + "Not set up": + "설정되지 않음", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "모두 소진되면 rclone이 업로드를 멈추고, 머신의 버퍼가 가득 차며, 백업이 만들어지지 않습니다. 1시간 주기마다 약 600 MB씩 늘어나는 경우 약 %@일 후입니다.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "또는 rclone.conf가 없습니다. 이 Mac은 이미 CloudMachine 머신을 설정했으므로 무작정 새로 연결하지 않습니다. 백업에서 파일을 복원하세요(머신은 %@에 자체 복사본을 보관합니다). 그래도 연결하려면 `%@ config file`이 출력하는 경로에 빈 파일을 만들고 다시 실행하세요 - 기존 폴더는 유지됩니다.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Time Machine이 머신을 가리키도록 설정: 터미널에서 다음을 실행하세요(sudo 필요, 복사에는 암호가 포함됨)", + "Points to the machine": + "머신을 가리킴", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "재시동을 준비합니다. 백업을 중지하고, 업로드를 잠시 기다린 다음, 머신을 안전하게 종료합니다.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "Time Machine 대상 읽기가 %@초 안에 돌아오지 않았습니다. 대상이 멈추면 tmutil이 이렇게 동작합니다.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "remote '%@'은(는) 교체되지 않았습니다. 새 로그인은 'drive.file' 범위를 받으며, 이 범위는 자체 client_id로 만든 파일만 볼 수 있습니다. 기존 백업은 현재 연결로 만들어졌을 가능성이 높아 새 연결에서는 보이지 않게 됩니다. 무엇이든 쓰기 전에 새 토큰을 기존 백업과 대조하며, 볼 수 없으면 교체를 중단합니다. 머신은 vm-setup --replace-rclone-config를 실행할 때까지 자체 구성 복사본을 유지합니다. 그래도 진행하려면 --replace-existing --accept-scope-change를 붙여 다시 실행하세요.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "원격 제어: Mac의 127.0.0.1:5572에 열려 있음 - 모든 웹 페이지가 rclone 명령을 보낼 수 있습니다. vm/README.md(portForwards) 참조", + "Running": + "실행 중", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "머신의 Samba, rclone 또는 punchfs가 활성 상태가 아니므로 Time Machine이 쓸 곳이 없거나 밴드가 Google Drive에 도달하지 않습니다. 확인: cloudmachine-agent vm-status", + "Service %@": + "서비스 %@", + "Services": + "서비스", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "CloudMachine 머신 설정(처음에는 Ubuntu를 다운로드하므로 몇 분 걸립니다)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "CloudMachine 머신을 다시 설정하여 Time Machine 명령어를 출력", + "Set up the machine": + "머신 설정", + "Setting up the CloudMachine machine": + "CloudMachine 머신을 설정하는 중", + "Start the CloudMachine machine": + "CloudMachine 머신 시작", + "Start the machine": + "머신 시작", + "Starting the CloudMachine machine": + "CloudMachine 머신을 시작하는 중", + "Still to upload: %@ GiB": + "업로드 대기: %@ GiB", + "Stopping the Time Machine backup...": + "Time Machine 백업을 중지하는 중...", + "Stopping the machine %@...": + "머신 %@을(를) 중지하는 중...", + "The CloudMachine machine does not answer": + "CloudMachine 머신이 응답하지 않습니다", + "The CloudMachine machine is not running": + "CloudMachine 머신이 실행되고 있지 않습니다", + "The CloudMachine machine is not set up yet": + "CloudMachine 머신이 아직 설정되지 않았습니다", + "The CloudMachine machine is stopped": + "CloudMachine 머신이 중지되었습니다", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "백업을 중지하고, 업로드에 최대 30분을 준 다음 머신을 안전하게 종료합니다. 다음 로그인 때 다시 시작됩니다.", + "The machine %@ is not running - nothing to prepare.": + "머신 %@이(가) 실행 중이 아닙니다 - 준비할 것이 없습니다.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "머신이 중지되었고 모든 데이터가 Google Drive에 도달했습니다. Mac을 재시동해도 됩니다. 머신은 로그인할 때 다시 시작됩니다.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "머신이 중지되었습니다. %@ GiB가 아직 Google Drive에 도달하지 않았습니다 - 머신의 버퍼에 보관되며 다음 시작 후 업로드됩니다. Mac을 재시동해도 됩니다.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "머신이 중지되었습니다. rclone이 남은 업로드 양을 알려 주지 않았습니다. 업로드되지 않은 데이터는 머신의 버퍼에 보관되며 다음 시작 후 업로드됩니다. Mac을 재시동해도 됩니다.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "머신의 디스크는 이 디스크에 있는 파일이며 업로드 버퍼가 차오르면서 커집니다. 공간이 없으면 머신이 버퍼를 쓸 수 없고, Time Machine의 로컬 스냅샷도 저장할 곳이 없습니다.", + "The image's metadata has never been copied to Drive": + "이미지의 메타데이터가 Drive에 한 번도 복사되지 않았습니다", + "The image's metadata was last copied to Drive %@ ago": + "이미지의 메타데이터가 %@ 전에 Drive에 마지막으로 복사되었습니다", + "The machine's disk is running out of space (%@ GB)": + "머신의 디스크 공간이 부족합니다(%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "새 로그인에서는 기존 백업(%1$@)이 보이지 않으므로 remote '%2$@'은(는) 교체되지 않았고 rclone.conf도 변경되지 않았습니다. 현재 연결을 유지하거나, 백업을 만든 자격 증명(client_id)으로 로그인하세요.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "업로드 버퍼는 이 디스크에 있습니다. 가드는 버퍼가 가득 차기 전에 Time Machine을 일시 중지합니다. 업로드가 따라잡지 못하면 백업은 계속 일시 중지됩니다.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "이 밴드는 머신의 버퍼에만 있습니다. Google Drive의 백업은 불완전하며 열리지 않을 수 있습니다.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine은 머신에 백업하므로 머신이 없으면 백업이 만들어지지 않습니다. 시작하세요: limactl start %@(또는 앱의 시작 버튼).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine이 2분 안에 백업을 중지하지 않았거나(또는 tmutil이 응답하지 않아) 머신이 중지되지 않았습니다. 잠시 후 다시 시도하세요.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine이 이미지를 만들었습니다: 백업을 중지한 다음 이미지를 32 MB 밴드로 변환하세요", + "To upload": + "업로드 대기", + "Unknown whether the CloudMachine machine is running": + "CloudMachine 머신이 실행 중인지 알 수 없습니다", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Google Drive로 업로드를 기다리는 중(최대 %@분)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "--replace-existing와 함께 사용: 새 로그인('drive.file' 범위)이 기존 백업을 보지 못할 수 있음을 확인합니다. 새 토큰은 그 전에 먼저 백업과 대조됩니다.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "이것이 없으면 Drive에 무언가 도달했는지 확인할 방법이 없으며, 머신의 가드는 앞이 보이지 않는 상태가 됩니다.", + "limactl did not answer": + "limactl이 응답하지 않았습니다", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl이 응답하지 않았거나 설치되어 있지 않습니다. 이는 머신이 꺼져 있다는 뜻이 아니라, 아무도 확인하지 않았다는 뜻입니다.", + "limactl start failed: %@": + "limactl start 실패: %@", + "limactl stop failed: %@": + "limactl stop 실패: %@", + "punchfs is close to its open-file limit": + "punchfs가 열 수 있는 파일 한도에 가까워졌습니다", + "punchfs open files": + "punchfs 열린 파일", + "rclone's remote control is open on this Mac": + "rclone의 원격 제어가 이 Mac에 열려 있습니다", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data')가 오류를 반환하여, 이 Mac에서 머신의 디스크가 더 커질 수 있는지 알 수 없습니다.", + "Google Drive's daily upload limit stops the upload": + "Google Drive의 일일 업로드 한도로 업로드가 중단되었습니다", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google이 %1$@ 전에 마지막으로 업로드를 거부했습니다(하루 750 GB). 그 이후의 백업은 이 Mac에 있는 머신의 버퍼에만 있습니다. rclone은 5분마다 다시 시도하며 한도가 풀리면 자동으로 재개합니다. %2$@ GiB를 넘게 대기하면 가드가 Time Machine을 일시 중지합니다.", + "Usage on Google Drive is not being measured": + "Google Drive 사용량이 측정되고 있지 않습니다", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "마지막 측정(%1$@ GB)은 %2$@, %3$@ 전의 것입니다 - 그 이후 rclone size가 응답하지 않았습니다. 응답할 때까지 %4$@ GB 한도를 감시하는 것이 없으며, 90%% 및 100%% 알림도 울리지 않습니다. vm-status를 확인하거나 창에서 지금 측정을 누르세요.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size가 한 번도 응답하지 않았습니다. 응답할 때까지 %@ GB 한도를 감시하는 것이 없으며, 90%% 및 100%% 알림도 울리지 않습니다. vm-status를 확인하거나 창에서 지금 측정을 누르세요.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "키체인에 저장했습니다. Google Drive(configure-remote)에 연결할 때 사용됩니다.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "키체인에 저장했습니다. 기존 Google Drive 연결은 이전 client_id를 유지하며, 이 Mac에서는 그대로 두어야 합니다. 새 키('drive.file' 범위)로 만든 연결은 이전 연결로 만든 백업을 볼 수 없습니다. 여기서 연결을 교체하지 마세요. 새 키는 아직 연결되지 않은 Mac용입니다.", + "it is not there for the new token": + "새 토큰에는 보이지 않습니다", + "Cancel": + "취소", + "ACTION NEEDED": + "조치 필요", + "WILL PASS BY ITSELF — DO NOTHING": + "저절로 해결됩니다 - 아무것도 하지 않아도 됩니다", + "UNKNOWN — CHECK AGAIN SHORTLY": + "알 수 없음 - 잠시 후 다시 확인하세요", + "ALL GOOD": + "모두 정상", + "Upload is not working": + "업로드가 작동하지 않습니다", + "Upload stopped — no space left on Google Drive": + "업로드 중단 - Google Drive에 남은 공간이 없습니다", + "%@ backup fragments not uploaded": + "백업 조각 %@개가 업로드되지 않았습니다", + "Upload cannot keep up with writes": + "업로드가 쓰기 속도를 따라가지 못합니다", + "Upload paused — Google daily limit": + "업로드 일시 중지 - Google 일일 한도", + "Uploading to Google Drive — %@ queued": + "Google Drive에 업로드 중 - %@개 대기 중", + "Everything uploaded to Google Drive": + "모두 Google Drive에 업로드되었습니다", + "Unknown what is waiting in the queue": + "대기열에 무엇이 있는지 알 수 없습니다", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Google Drive에 연결되어 있지 않아 백업이 이 Mac에서만 만들어집니다. 몇 분 안에 저절로 해결되지 않으면 네트워크와 Drive 연결을 확인하세요.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Google Drive에 남은 공간이 없습니다. 이 문제는 저절로 해결되지 않습니다 - Drive의 공간을 비워야 합니다. 그때까지 이 Mac의 디스크가 가득 차지 않도록 Time Machine은 일시 중지됩니다.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "백업 조각 %@개를 업로드하지 못했고 rclone이 재시도를 멈췄습니다. 이 조각들은 이 Mac에만 있으므로 Drive의 백업은 불완전합니다. 확인이 필요합니다.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine이 업로드보다 빠르게 쓰고 있어 버퍼가 가득 찼습니다. 업로드가 따라잡을 때까지 백업이 일시 중지됩니다 - 이는 디스크가 가득 차는 것을 막는 안전장치이며 오류가 아닙니다.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google은 하루 750 GB까지 받으며 그 한도를 모두 사용했습니다. 할 일은 없습니다. 한도는 보통 몇 시간 안에 저절로 초기화됩니다. 그동안 Time Machine 백업은 정상적으로 만들어져 버퍼에서 대기하며, Google이 다시 받기 시작하면 바로 업로드됩니다.", + "%@ backup fragments are queued and on their way to Drive.": + "백업 조각 %@개가 대기열에서 Drive로 가는 중입니다.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "대기열에 대기 중인 것이 없습니다 - Google Drive의 백업이 완전합니다.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone이 대기열에 대한 질문에 응답하지 않아 아직 업로드를 기다리는 백업이 얼마나 되는지 알 수 없습니다. 무언가 고장 났다는 뜻은 아닙니다 - 부하가 걸리면 응답이 늦어질 수 있습니다. 지금은 아무도 모른다는 뜻일 뿐입니다. 계속되면 백업 주기 점검이 알려 줍니다.", + "unknown error": + "알 수 없는 오류", + "rclone lsf ended with an error": + "rclone lsf가 오류와 함께 종료되었습니다", + "This Mac is close to its space limit on Google Drive": + "이 Mac이 Google Drive 공간 한도에 가까워졌습니다", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%2$@ GB 중 %1$@ GB 사용 중. Time Machine은 할당량을 지키기 위해 가장 오래된 백업을 삭제합니다. 할당량이 설정되어 있는지 확인하세요(vm-status).", + "This Mac is over its space limit on Google Drive": + "이 Mac이 Google Drive 공간 한도를 초과했습니다", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%2$@ GB 중 %1$@ GB 사용 중. Time Machine 할당량을 설정하거나(명령어는 앱 창 또는 vm-status에 있음) 한도를 높이세요.", + "not set": + "설정되지 않음", + "%@ GB - usage not measured yet": + "%@ GB - 사용량 아직 측정되지 않음", + "%@ of %@ GB used (%@%%)": + "%2$@ GB 중 %1$@ GB 사용(%3$@%%)", + "The limit must be a whole number of GB above zero.": + "한도는 0보다 큰 GB 단위의 정수여야 합니다.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "machines.json을 읽을 수 없어 덮어쓰지 않았습니다. 먼저 수정하거나 삭제하세요.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@'은(는) 올바른 폴더 이름이 아닙니다: 소문자, 숫자, 하이픈을 사용하세요.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "이 Mac은 이미 폴더 '%1$@'에 백업하고 있습니다. '%2$@'(으)로 전환하면 새 빈 백업이 시작되고 기존 백업이 고아가 되므로 아무것도 변경하지 않았습니다.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "이 Mac에는 이미 CloudMachine이 설치되어 있으며 백업은 폴더 '%1$@'에 있습니다. '%2$@'(으)로 전환하면 고아가 되므로 아무것도 변경하지 않았습니다.", + "Could not save the folder name to %@: %@": + "폴더 이름을 %1$@에 저장할 수 없습니다: %2$@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew가 설치되어 있지 않습니다. 직접 설치하세요: https://brew.sh", + "Installing rclone failed: %@": + "rclone 설치 실패: %@", + "Installed rclone.": + "rclone을 설치했습니다.", + "Own Google credentials: set.": + "자체 Google 자격 증명: 설정됨.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "불완전: %@이(가) 없습니다 - rclone은 어차피 공유 client_id를 사용합니다.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "자체 자격 증명 없음 - rclone은 공유 client_id를 사용하며, 이는 공동으로 속도 제한을 받고 2026년에 폐기됩니다.", + "Empty value - not saving.": + "빈 값 - 저장하지 않습니다.", + "Keychain refused: %@": + "키체인이 거부했습니다: %@", + "DIRTY-TREE": + "커밋되지 않은 변경", + "Cannot create the working directory: %@": + "작업 디렉터리를 만들 수 없습니다: %@", + "Could not read the rclone version number.": + "rclone 버전 번호를 읽을 수 없습니다.", + "Could not download %@.": + "%@을(를) 다운로드할 수 없습니다.", + "No entry for %@ in SHA256SUMS.": + "SHA256SUMS에 %@ 항목이 없습니다.", + "Could not compute the checksum.": + "체크섬을 계산할 수 없습니다.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "SHA256 체크섬이 일치하지 않습니다 - 설치하지 않습니다.\n 기대값: %1$@\n 계산값: %2$@", + "Could not unpack the archive.": + "압축을 풀 수 없습니다.", + "Could not install the binary: %@": + "바이너리를 설치할 수 없습니다: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %1$@을(를) %2$@에 설치했습니다(SHA256 체크섬 일치).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@이(가) 제한 시간 안에 응답하지 않았습니다(프로세스가 백그라운드에 남겨졌습니다).", + "Cannot launch %@: %@": + "%1$@을(를) 실행할 수 없습니다: %2$@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "remote '%@'은(는) 이미 있으며 변경되지 않았습니다.\n덮어쓰면 토큰과 권한 범위가 교체됩니다. 'drive.file' 범위의 자격 증명은 이전 자격 증명이 만든 파일을 볼 수 없으므로 기존 백업에 접근할 수 없게 됩니다.\n정말 교체하려면 먼저 ~/.config/rclone/rclone.conf를 백업한 다음 --replace-existing을 붙여 다시 실행하세요.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "remote '%1$@'이(가) 이미 있는지 확인할 수 없어(rclone listremotes가 응답하지 않았거나 실패함) 아무것도 변경하지 않았습니다. `%2$@ listremotes`를 실행하여 오류를 확인한 다음 다시 시도하세요.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "이 Mac에 CloudMachine이 이미 설치되어 있는지 확인할 수 없어(rclone이 응답하지 않음) 폴더를 선택하지 않았습니다. 잠시 후 다시 시도하세요.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize가 실패했습니다(%@). 해당 바이너리가 없다면 다음으로 시작하세요: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "rclone authorize의 출력에서 토큰을 읽을 수 없습니다.", + "rclone config create failed.": + "rclone config create가 실패했습니다.", + "Connected to Google Drive as remote '%@', folder %@.": + "Google Drive에 remote '%1$@', 폴더 %2$@(으)로 연결했습니다.", + "tmutil is not responding - unknown where the backup goes": + "tmutil이 응답하지 않습니다 - 백업이 어디로 가는지 알 수 없습니다", + "No successful backup for %@": + "%@ 동안 성공한 백업이 없습니다", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "마지막으로 완료된 백업: %1$@. 주기가 1시간이므로 %2$@회 실행이 누락되었습니다.", + "There is NOT A SINGLE successful backup": + "성공한 백업이 하나도 없습니다", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Time Machine 환경설정에 이 대상에 대해 완료된 백업의 날짜가 없습니다.", + "The last backup attempt did not end in a backup": + "마지막 백업 시도가 백업으로 끝나지 않았습니다", + "The attempt at %@ is newer than the last successful backup at %@.": + "%1$@의 시도가 마지막으로 성공한 백업(%2$@)보다 최근입니다.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine이 마지막 실행에서 오류를 알렸습니다(RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Time Machine 환경설정의 RESULT가 0이 아니면 해당 실행이 성공하지 못했다는 뜻입니다.", + "rclone failed to upload %@ files": + "rclone이 파일 %@개를 업로드하지 못했습니다", + "Buffer full of nothing but unsent data": + "버퍼가 전송되지 않은 데이터로만 가득 찼습니다", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone이 버퍼에서 비울 것이 더 이상 없습니다 - 업로드가 따라가지 못하거나 멈췄습니다.", + "The rclone control interface is not responding": + "rclone 제어 인터페이스가 응답하지 않습니다", + "Google Drive is running out of space (%@ GB)": + "Google Drive 공간이 부족합니다(%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Mac의 디스크 공간이 부족합니다(%@ GB)", + "Cannot read the Time Machine preferences": + "Time Machine 환경설정을 읽을 수 없습니다", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@을(를) 읽을 수 없습니다 - 대개 전체 디스크 접근 권한이 없기 때문입니다. 이 파일이 없으면 마지막 백업 시점을 알 수 없으므로, 문제가 없는 것으로 보지 않고 실패로 처리합니다.", + "Cannot measure free space on the Mac's disk": + "Mac 디스크의 여유 공간을 측정할 수 없습니다", + "%@ days": + "%@일", + "CloudMachine: backup is not working": + "CloudMachine: 백업이 작동하지 않습니다", + "unknown reason": + "알 수 없는 이유", + "osascript did not show the notification (permissions or no graphical session)": + "osascript가 알림을 표시하지 않았습니다(권한이 없거나 그래픽 세션이 없음)", + "UNDELIVERED ALARM: %@": + "전달되지 않은 경고: %@", + "from %@, reason: %@": + "%1$@에서, 이유: %2$@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "시스템 알림이 전달되지 않았습니다 - 이 경고는 여기에서만 볼 수 있습니다.", + "%@ (%@ ago)": + "%1$@(%2$@ 전)", + "%@ - marker from the FUTURE": + "%@ - 미래의 표식", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%1$@(%2$@ 전) - 감시 기능이 실행되고 있지 않을 수 있습니다", + "NEVER - the watchdog has not recorded a single run": + "한 번도 없음 - 감시 기능이 실행을 한 번도 기록하지 않았습니다", + "Could not find the launchd/ directory with templates.": + "템플릿이 있는 launchd/ 디렉터리를 찾을 수 없습니다.", + "Could not find the compiled cloudmachine-agent binary.": + "컴파일된 cloudmachine-agent 바이너리를 찾을 수 없습니다.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "중단됨: cloudmachine-agent를 고정된 위치에 둘 수 없습니다\n(%1$@) - 대개 공간 또는 권한이 부족하기 때문입니다.\n%2$@을(를) 가리키는 에이전트는 설치하지 않습니다: 이 경로는\n다음 `swift build` 또는 `git clean` 때 사라지며, 백업이\n눈에 보이는 신호 없이 중단됩니다.", + "ABORTED: %@": + "중단됨: %@", + "Could not list the templates in %@.": + "%@의 템플릿 목록을 가져올 수 없습니다.", + "could not read the template %@": + "템플릿 %@을(를) 읽을 수 없습니다", + "could not write %@ (lack of space or permissions)": + "%@을(를) 쓸 수 없습니다(공간 또는 권한 부족)", + "launchctl load refused to load %@": + "launchctl load가 %@의 로드를 거부했습니다", + "NOT A SINGLE agent was loaded.": + "로드된 에이전트가 하나도 없습니다.", + "Only these went in: %@.": + "다음만 설치되었습니다: %@.", + "Could not load any launchd agent.": + "launchd 에이전트를 하나도 로드할 수 없습니다.", + "Installed agents: %@": + "설치된 에이전트: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " 경고: 한도에 가까움 - 새 밴드가 EMFILE로 실패합니다", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "Google Drive의 %@/bands가 비어 있지 않습니다 - 다른 백업이 있을 수 있습니다. 덮어쓰지 않습니다. 직접 확인하세요.", + "Address: %@": + "주소: %@", + "Already prepared (%@ exists) - nothing to do.": + "이미 준비됨(%@이(가) 있음) - 할 일이 없습니다.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "머신에 있는 Time Machine의 새 빈 이미지를 32 MB 밴드로 변환하고 밴드를 Google Drive로 옮깁니다.", + "Copy rclone.conf into the machine even if it already has one.": + "이미 rclone.conf가 있더라도 머신에 복사합니다.", + "Copying the converted image into the machine failed: %@": + "변환된 이미지를 머신에 복사하지 못했습니다: %@", + "Copying the image to the Mac failed: %@": + "이미지를 Mac에 복사하지 못했습니다: %@", + "Could not ask Lima about the machine: %@": + "머신에 대해 Lima에 문의할 수 없습니다: %@", + "Could not carry the Time Machine files over: %@": + "Time Machine 파일을 옮길 수 없습니다: %@", + "Could not check the image in the machine.": + "머신의 이미지를 확인할 수 없습니다.", + "Could not copy the rclone configuration into the machine.": + "rclone 구성을 머신에 복사할 수 없습니다.", + "Could not create %@ on Google Drive: %@": + "Google Drive에 %1$@을(를) 만들 수 없습니다: %2$@", + "Could not create %@: %@": + "%1$@을(를) 만들 수 없습니다: %2$@", + "Could not find the vm/ directory with the machine template.": + "머신 템플릿이 있는 vm/ 디렉터리를 찾을 수 없습니다.", + "Could not read the image size.": + "이미지 크기를 읽을 수 없습니다.", + "Could not set the SMB password of user %@ in the machine.": + "머신에서 사용자 %@의 SMB 암호를 설정할 수 없습니다.", + "Could not stop smbd in the machine.": + "머신의 smbd를 중지할 수 없습니다.", + "Could not write %@ in the machine.": + "머신에 %@을(를) 쓸 수 없습니다.", + "Could not write the password file %@.": + "암호 파일 %@을(를) 쓸 수 없습니다.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "CloudMachine 머신(Lima)을 만들거나 시작하고, rclone 구성과 SMB 암호를 전달한 다음, Time Machine 명령어를 출력합니다.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "머신 %@ 생성 중(처음 시작할 때 Ubuntu를 다운로드하고 패키지를 설치합니다 - 몇 분 걸립니다)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "완료: %1$@은(는) Google Drive에서 %2$@ MB 밴드가 되었습니다. 원본은 머신의 %3$@에 보관되어 있습니다. 백업 시작: tmutil startbackup", + "exit code %@, no message": + "종료 코드 %@, 메시지 없음", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "이미지 메타데이터: %@에 한 번도 복사되지 않음 - 머신의 tm-meta-sync를 확인하세요", + "Image metadata: copied %@ ago to %@": + "이미지 메타데이터: %1$@ 전에 %2$@에 복사됨", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "이미지 메타데이터: 마지막 복사가 %1$@ 전 - 지연됨(%2$@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "이미지 메타데이터: 아직 복사되지 않음 - vm-prepare-bundle을 기다리는 중", + "Backup %@, paused by the guard %@: %@": + "백업 %1$@, 가드에 의한 일시 중지 %2$@: %3$@", + "Free in machine: %@ GiB": + "머신 여유 공간: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n이 문제를 발견했습니다: %@", + "Google Drive folder: %@": + "Google Drive 폴더: %@", + "hdiutil attach of the converted image failed: %@": + "변환된 이미지의 hdiutil attach가 실패했습니다: %@", + "hdiutil convert failed: %@": + "hdiutil convert가 실패했습니다: %@", + "Image name in the machine (default: from the computer name).": + "머신의 이미지 이름(기본값: 컴퓨터 이름에서 가져옴).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "변환된 이미지 설치에 실패했습니다: %1$@\nTime Machine이 반쯤 설치된 이미지를 열지 않도록 smbd는 중지된 상태로 둡니다. 원본은 머신의 %2$@에 있습니다.", + "limactl create failed: %@": + "limactl create 실패: %@", + "limactl list failed: %@": + "limactl list 실패: %@", + "limactl not found - install Lima: brew install lima": + "limactl을 찾을 수 없습니다 - Lima를 설치하세요: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start 실패: %1$@\n머신 자체 로그: %2$@", + "Machine %@ is running.": + "머신 %@이(가) 실행 중입니다.", + "Machine %@ was already running.": + "머신 %@이(가) 이미 실행 중이었습니다.", + "Machine: %@ (%@)": + "머신: %1$@ (%2$@)", + "Machine: %@": + "머신: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "머신: 만들어지지 않음 - 다음을 실행하세요: cloudmachine-agent vm-setup", + "no answer within the time limit": + "제한 시간 내에 응답 없음", + "No image %@ in the machine.": + "머신에 이미지 %@이(가) 없습니다.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "머신에 아직 이미지가 없습니다 - 먼저 Time Machine이 공유를 가리키게 하고 이미지를 만들도록 하세요.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "%@에 rclone 구성이 없습니다 - 먼저 Google Drive를 연결하세요(configure-remote).", + "no SMB destination": + "SMB 대상 없음", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "머신의 업로드 버퍼를 한 번 점검합니다. 버퍼가 가득 차면 Time Machine을 일시 중지하고, 일시 중지한 것을 재개합니다.", + "Packing the converted image failed: %@": + "변환된 이미지 패킹에 실패했습니다: %@", + "Packing the image failed: %@": + "이미지 패킹에 실패했습니다: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "머신(rclone rc)에서 응답이 없습니다 - 가드는 아무것도 하지 않을 것입니다.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "가드가 내릴 결정만 출력합니다 - 임시 머신에서 임곗값을 시험하기 위한 것입니다.", + "Pause above this many GiB in the buffer.": + "버퍼에 이 GiB를 넘으면 일시 중지합니다.", + "Pause when the machine has less free than this, in GiB.": + "머신의 여유 공간이 이 GiB보다 적으면 일시 중지합니다.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Time Machine이 머신을 가리키게 하세요(한 번만, 관리자 암호 필요):", + "punchfs files: %@ open, limit %@": + "punchfs 파일: %1$@개 열림, 한도 %2$@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "rclone 구성이 이미 머신에 있습니다 - 유지했습니다(--replace-rclone-config로 교체할 수 있음).", + "rclone configuration copied into the machine.": + "rclone 구성을 머신에 복사했습니다.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "머신에서 rclone-tm 또는 punchfs가 실행되고 있지 않습니다 - cloudmachine-agent vm-status를 참조하세요.", + "Resume below this many GiB (only a backup the guard paused).": + "버퍼가 이 GiB보다 줄어들면 재개합니다(가드가 일시 중지한 백업만 해당).", + "Service %@: %@": + "서비스 %1$@: %2$@", + "Several images in the machine (%@) - choose one with --bundle.": + "머신에 이미지가 여러 개 있습니다(%@) - --bundle로 하나를 선택하세요.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "머신의 상태를 보여 줍니다: 주소, 서비스, 업로드 버퍼, 여유 공간, Time Machine 대상.", + "SMB password stored in %@ (mode 600).": + "SMB 암호를 %@에 저장했습니다(모드 600).", + "The converted image does not have %@-byte bands.": + "변환된 이미지의 밴드가 %@바이트가 아닙니다.", + "The converted image has no APFS partition.": + "변환된 이미지에 APFS 파티션이 없습니다.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "이미지가 이미 %1$@ MB를 차지하고 있습니다 - 이 명령은 새 빈 이미지(%2$@ MB 미만)만 변환합니다.", + "The image is encrypted - converting encrypted images is not supported.": + "이미지가 암호화되어 있습니다 - 암호화된 이미지의 변환은 지원되지 않습니다.", + "The image was not changed; smbd started again.": + "이미지는 변경되지 않았으며 smbd를 다시 시작했습니다.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "머신이 응답하지 않습니다 - 실행 중인가요? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "머신에 vzNAT 네트워크 주소가 없습니다.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "머신의 서비스가 시작되지 않았습니다 - 확인: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine이 백업 중입니다 - 먼저 중지하세요: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: 머신을 가리키지 않음(%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil이 응답하지 않았습니다", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil이 응답하지 않았습니다 - 이미지의 상태를 모르는 동안에는 이미지를 건드리지 않습니다.", + "unknown": + "알 수 없음", + "Unpacking the image failed: %@": + "이미지 압축 풀기에 실패했습니다: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "업로드 대기: %2$@개 밴드에 %1$@ GiB, %3$@ 업로드 중(디스크 캐시 %4$@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "%@(머신과 그 업로드 버퍼)을(를) Time Machine에서 제외했습니다.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "경고: %1$@을(를) Time Machine에서 제외할 수 없습니다 - 다음을 실행하세요: tmutil addexclusion %2$@", + "Upload buffer: no answer from rclone (rc %@)": + "업로드 버퍼: rclone(rc %@)에서 응답 없음", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Time Machine이 빈 이미지를 만들면 백업을 중지(tmutil stopbackup)하고 다음을 실행하세요: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "미전송 %1$@ GiB, 여유 %2$@ GiB(미전송이 %3$@ GiB를 넘거나 여유가 %4$@ GiB 미만이면 일시 중지, %5$@ GiB 미만이면 재개).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "업로드: Google의 일일 한도로 %@ 전에 업로드가 거부됨 - rclone은 5분마다 다시 시도하며 저절로 재개합니다", + "no": + "아니요", + "running": + "실행 중", + "stopped": + "중지됨", + "yes": + "예", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%1$@\n이전 템플릿은 %2$@에 있습니다 - lima.yaml 위에 다시 복사한 다음 limactl start %3$@을(를) 실행하세요.", + "Could not read this app's machine template (limactl template copy).": + "이 앱의 머신 템플릿을 읽을 수 없습니다(limactl template copy).", + "Could not replace %@: %@": + "%1$@을(를) 교체할 수 없습니다: %2$@", + "Machine %@ already runs this app's template.": + "머신 %@은(는) 이미 이 앱의 템플릿으로 실행 중입니다.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "머신 %1$@은(는) 이제 이 앱의 템플릿으로 실행됩니다. 이전 템플릿은 %2$@에 있습니다.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "머신을 이 앱의 템플릿으로 옮깁니다(재시작 두 번, 백업 중에는 하지 않음).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "머신 %@이(가) 없습니다 - 다음으로 만드세요: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "템플릿: 이 앱의 것보다 오래됨 - 다음을 실행하세요: cloudmachine-agent vm-update", + "Template: not compared": + "템플릿: 비교하지 않음", + "Template: this app's": + "템플릿: 이 앱의 것", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "머신에 %@이(가) 없습니다 - 먼저 cloudmachine-agent vm-setup을 실행하세요.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "머신이 다시 시작되었지만 모든 서비스가 실행되고 있지는 않습니다 - 확인: cloudmachine-agent vm-status. 이전 템플릿은 %@에 있습니다.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "템플릿이 머신 자체(%@)를 변경합니다 - 업데이트가 아니라 새 머신이 필요합니다.", + "The upload to Google Drive hangs": + "Google Drive로의 업로드가 멈췄습니다", + "Time Machine is backing up - try again when it has finished.": + "Time Machine이 백업 중입니다 - 끝난 후 다시 시도하세요.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "업로드: 멈춤 - 진행 중인 밴드가 있지만 %@ 동안 업로드된 것이 없음(네트워크?). 머신의 /var/log/rclone-tm.log 참조", + "limactl stop failed - nothing was changed.": + "limactl stop 실패 - 아무것도 변경되지 않았습니다.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone에 진행 중인 밴드가 있지만 %1$@ 동안 업로드된 것이 없습니다 - 대개 네트워크 연결이 끊긴 경우이며, rclone은 이를 오류로 알리지 않습니다. 그 이후의 백업은 머신의 버퍼에만 있습니다. 네트워크가 복구되면 업로드가 저절로 재개됩니다(2026년 10월 28일에는 80초 이내). 재개되지 않으면 머신을 다시 시작하면(prepare-shutdown, limactl start) 끊어진 연결이 정리됩니다.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil이 응답하지 않았습니다 - 머신의 상태를 모르는 동안에는 머신을 다시 시작하지 않습니다.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+ms.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+ms.swift new file mode 100644 index 0000000..a68b746 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+ms.swift @@ -0,0 +1,951 @@ +// Malay translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let ms: [String: String] = [ + "Space limit: %@": + "Had ruang: %@", + " Time Machine quota not set to match - run: %@": + " Kuota Time Machine belum ditetapkan sepadan - jalankan: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Menetapkan jumlah Google Drive yang boleh digunakan oleh Mac ini dan mencetak arahan kuota Time Machine.", + "Limit in GB.": + "Had dalam GB.", + "Limit for this Mac: %@ GB.": + "Had untuk Mac ini: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Sekarang tetapkan kuota Time Machine (memerlukan kata laluan pentadbir):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - pengesahan, persediaan Google Drive dan pemasangan. Dipanggil oleh launchd mengikut jadual, atau secara manual dari Terminal.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "Menyambung ke Google Drive melalui rclone (OAuth dalam pelayar) dan mencipta folder untuk mesin ini.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Tulis ganti remote sedia ada. BERISIKO: token dan kebenaran akan diganti.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "Membungkus build/CloudMachine.app menjadi build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "RALAT: %@ tiada - jalankan 'cloudmachine-agent build-app' dahulu", + "==> Preparing the staging folder": + "==> Menyediakan folder pementasan", + "==> Creating %@": + "==> Mencipta %@", + "ERROR: hdiutil exited with code %@.": + "RALAT: hdiutil tamat dengan kod %@.", + "==> Done: %@": + "==> Selesai: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "Semasa pelancaran pertama (app ini tidak ditandatangani dengan akaun Apple Developer):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. Buka %@ dan seret CloudMachine.app ke folder Aplikasi.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. Dalam Finder, klik KANAN CloudMachine.app -> Buka -> Buka\n (klik dua kali biasa memaparkan sekatan Gatekeeper \"pembangun tidak dikenal pasti\").", + "3. Later launches work normally, with a double-click.": + "3. Pelancaran seterusnya berfungsi seperti biasa, dengan klik dua kali.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "Membina CloudMachine.app (Release) - GUI + cloudmachine-agent dalam Contents/MacOS/, serta launchd/, vm/ dan config/ sebagai Resources.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Binari untuk Apple Silicon dan Intel serentak (cara CI membina keluaran; tidak perlu secara setempat).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> Membina CloudMachineApp + cloudmachine-agent (release) - versi %@ (%@)", + "ERROR: swift build exited with code %@.": + "RALAT: swift build tamat dengan kod %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "RALAT: swift build --show-bin-path tidak melaporkan direktori binari.", + "ERROR: no built binary found at %@": + "RALAT: tiada binari terbina ditemui di %@", + "==> Assembling the .app bundle in %@": + "==> Memasang bungkusan .app dalam %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> AMARAN: anda membina daripada pokok KOTOR - versi tidak menunjuk kepada sebarang commit.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "RALAT: Resources/AppIcon.icns tiada - jana: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Menandatangani dengan sijil setempat '%@' (Capaian Cakera Penuh akan kekal selepas binaan semula)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Menandatangani ad-hoc (tiada akaun Apple Developer) - jalankan 'cloudmachine-agent setup-signing-cert' sekali supaya kebenaran TCC kekal selepas binaan semula", + "ERROR: codesign exited with code %@.": + "RALAT: codesign tamat dengan kod %@.", + "Next step: %@": + "Langkah seterusnya: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Mencipta sijil tandatangan sendiri setempat supaya Capaian Cakera Penuh kekal selepas app dibina semula.", + "Certificate '%@' already exists in %@, nothing to do.": + "Sijil '%@' sudah wujud dalam %@, tiada apa-apa untuk dilakukan.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Menjana kunci dan sijil tandatangan sendiri '%@'...", + "ERROR: openssl req exited with code %@.": + "RALAT: openssl req tamat dengan kod %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "RALAT: openssl pkcs12 tamat dengan kod %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Mengimport sijil ke dalam %@ (membenarkan /usr/bin/codesign terlebih dahulu, supaya kata laluan rantai kunci tidak diminta setiap kali)...", + "ERROR: security import exited with code %@.": + "RALAT: security import tamat dengan kod %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> Mempercayai sijil HANYA untuk penandatanganan kod...", + "ERROR: security add-trusted-cert exited with code %@.": + "RALAT: security add-trusted-cert tamat dengan kod %@.", + "Done. Certificate '%@' is now available to codesign.": + "Selesai. Sijil '%@' kini tersedia untuk codesign.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "'cloudmachine-agent build-app' yang berikutnya akan menggunakannya secara automatik dan bukannya tandatangan ad-hoc.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "Selepas SATU binaan semula itu, berikan Capaian Cakera Penuh sekali lagi buat kali terakhir - binaan\nsemula seterusnya tidak akan menetapkannya semula selagi anda menandatangani dengan sijil yang sama.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Menyemak sama ada kitaran setiap jam MASIH berfungsi (tarikh sandaran BERJAYA yang terakhir) dan melaporkan kegagalan.", + "After this many hours without a successful backup we consider the cycle broken.": + "Selepas sekian jam tanpa sandaran yang berjaya, kitaran dianggap rosak.", + "Only print the state, without a system notification.": + "Hanya cetak keadaan, tanpa pemberitahuan sistem.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "Fail pilihan Time Machine yang lain - untuk menguji pengawas pada sampel yang diketahui.", + "Last successful backup: %@": + "Sandaran berjaya terakhir: %@", + "Last successful backup: NONE": + "Sandaran berjaya terakhir: TIADA", + "Last attempt: %@": + "Percubaan terakhir: %@", + "WAITING (system startup): %@": + "MENUNGGU (permulaan sistem): %@", + "Backup cycle: OK": + "Kitaran sandaran: OK", + "FAILURE: %@": + "KEGAGALAN: %@", + " %@": + " %@", + "Check the state: %@": + "Semak keadaan: %@", + "Preparing for restart": + "Bersedia untuk mulakan semula", + "Prepare for restart": + "Sedia untuk mulakan semula", + "Prepare": + "Sediakan", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> AMARAN: git rev-list gagal (%@) - tarikh digunakan sebagai nombor binaan.", + "Agents: %@": + "Ejen: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "TIDAK DAPAT DIMULAKAN: %@ - buka CloudMachine atau jalankan backup-health untuk memuatkannya semula", + "Reloaded agents that could not start: %@": + "Ejen yang tidak dapat dimulakan telah dimuatkan semula: %@", + "Drive folder: %@": + "Folder Drive: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Nama folder Mac ini di Google Drive (lalai: diperoleh daripada nama komputer). Ditetapkan sekali; tidak boleh diubah kemudian.", + "Backup watchdog: %@": + "Pengawas sandaran: %@", + "Prints the version, the build number and the commit this binary was built from.": + "Mencetak versi, nombor binaan dan commit tempat binari ini dibina.", + "Only one line, without a description.": + "Hanya satu baris, tanpa penerangan.", + "Build from the working tree (outside a bundle) - no version data.": + "Binaan daripada pokok kerja (di luar bungkusan) - tiada data versi.", + "Version: %@": + "Versi: %@", + "Build: %@": + "Binaan: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "AMARAN: dibina daripada pokok KOTOR - binari mengandungi kod yang\n tiada dalam sebarang commit. Nombor commit TIDAK menerangkan\n apa yang sebenarnya berjalan.", + "Saving the space limit": + "Menyimpan had ruang", + "Measuring usage on Google Drive": + "Mengukur penggunaan di Google Drive", + "Google Drive did not answer - try again later.": + "Google Drive tidak menjawab - cuba lagi nanti.", + "Measured.": + "Telah diukur.", + "Space limit for this Mac": + "Had ruang untuk Mac ini", + "Used on Google Drive": + "Digunakan di Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "Diukur %@. Pengawas mengukur semula setiap beberapa jam.", + "Limit (GB)": + "Had (GB)", + "Save": + "Simpan", + "Measure now": + "Ukur sekarang", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Kuota Time Machine: %@ GB (70%% daripada had - salinan di Drive kira-kira satu pertiga lebih besar daripada sandaran di dalamnya). Time Machine memadam sandaran paling lama untuk kekal dalam kuota.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Tetapkan kuota Time Machine: jalankan ini dalam Terminal (memerlukan sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Sambung Google Drive: jalankan ini dalam Terminal dan luluskan dalam pelayar", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "Berikan Capaian Cakera Penuh kepada CloudMachine supaya ia dapat mengetahui sama ada sandaran selesai", + "Folder on Google Drive": + "Folder di Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Satu folder bagi setiap Mac. Ditetapkan sekali - tidak boleh diubah selepas disambungkan.", + "Use lowercase letters, digits and dashes.": + "Gunakan huruf kecil, digit dan tanda sempang.", + "Install rclone": + "Pasang rclone", + "Open System Settings": + "Buka Tetapan Sistem", + "Install agents": + "Pasang ejen", + "not checked": + "tidak disemak", + "none at all": + "langsung tiada", + "%@ ago": + "%@ lalu", + "Missing: %@": + "Tiada: %@", + "Google Drive not connected": + "Google Drive tidak disambungkan", + "Time Machine does not point to CloudMachine": + "Time Machine tidak menuju ke CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "TIDAK DIKETAHUI sama ada Time Machine menuju ke CloudMachine - tmutil tidak menjawab", + "Backup in progress": + "Sandaran sedang berjalan", + "Unknown when the last backup was made": + "Tidak diketahui bila sandaran terakhir dibuat", + "There is no completed backup at all": + "Langsung tiada sandaran yang selesai", + "No completed backup for %@": + "Tiada sandaran selesai selama %@", + "Ready": + "Sedia", + "Not saved: %@": + "Tidak disimpan: %@", + "Installing rclone": + "Memasang rclone", + "Installing launchd agents": + "Memasang ejen launchd", + "Starting backup": + "Memulakan sandaran", + "Backup started.": + "Sandaran dimulakan.", + "Could not start the backup.": + "Tidak dapat memulakan sandaran.", + "Stopping backup": + "Menghentikan sandaran", + "Backup stopped.": + "Sandaran dihentikan.", + "Could not stop the backup.": + "Tidak dapat menghentikan sandaran.", + "Could not prepare the AppleScript.": + "Tidak dapat menyediakan AppleScript.", + "Unknown authorization error.": + "Ralat kebenaran yang tidak diketahui.", + "Waiting to upload": + "Menunggu untuk dimuat naik", + "%@ files": + "%@ fail", + "nothing": + "tiada", + "Back up now": + "Sandar sekarang", + "Stop backup": + "Henti sandaran", + "Open CloudMachine": + "Buka CloudMachine", + "Quit": + "Keluar", + "Healthy": + "Sihat", + "Attention": + "Perhatian", + "Refreshed %@": + "Disegarkan %@", + "System Status": + "Status Sistem", + "Action needed": + "Tindakan diperlukan", + "not measured": + "belum diukur", + "rclone did not answer": + "rclone tidak menjawab", + "Backup in Progress": + "Sandaran Sedang Berjalan", + "Files processed": + "Fail diproses", + "Write speed": + "Kelajuan tulis", + "Operation phase": + "Fasa operasi", + "Required Setup Steps": + "Langkah Persediaan Wajib", + "Copy": + "Salin", + "Last completed backup": + "Sandaran selesai terakhir", + "Last backup watchdog run": + "Larian terakhir pengawas sandaran", + "not read": + "tidak dibaca", + "Everything uploaded": + "Semuanya dimuat naik", + "File upload errors": + "Ralat muat naik fail", + "Google Drive Credentials (OAuth 2.0)": + "Bukti Kelayakan Google Drive (OAuth 2.0)", + "Keychain OK": + "Rantai Kunci OK", + "No custom keys": + "Tiada kunci tersuai", + "Paste client_id...": + "Tampal client_id...", + "Paste client_secret...": + "Tampal client_secret...", + "Save securely in the Keychain": + "Simpan dengan selamat dalam Rantai Kunci", + "Refresh": + "Segarkan", + "Overview": + "Gambaran Keseluruhan", + "Backups": + "Sandaran", + "Storage": + "Storan", + "Settings": + "Tetapan", + "Current status: %@": + "Status semasa: %@", + "Does not point to CloudMachine": + "Tidak menuju ke CloudMachine", + "tmutil did not answer": + "tmutil tidak menjawab", + "Backing up: %@ of %@": + "Menyandar: %@ daripada %@", + "%@ of %@": + "%@ daripada %@", + "Copied": + "Disalin", + "No backup is running": + "Tiada sandaran sedang berjalan", + "Time Machine starts the next one on its own schedule.": + "Time Machine memulakan yang seterusnya mengikut jadualnya sendiri.", + "Backup cycle": + "Kitaran sandaran", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB dalam %@ jalur, %@ sedang dimuat naik", + "%@ bands": + "%@ jalur", + "%@ fragments abandoned - only in the machine": + "%@ serpihan ditinggalkan - hanya ada dalam mesin", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 menjawab pada Mac: Lima memajukan kawalan jauh rclone mesin, yang tidak mempunyai kata laluan. Mana-mana laman web yang terbuka dalam pelayar boleh menghantar arahan kepadanya - termasuk memadam sandaran di Google Drive. Tambahkan peraturan portForwards daripada vm/cmsmb.yaml pada mesin dan mulakan semula (lihat vm/README.md).", + "A service in the CloudMachine machine is not running": + "Satu perkhidmatan dalam mesin CloudMachine tidak berjalan", + "Address": + "Alamat", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Pemasangan ejen TIDAK LENGKAP - %@ daripada %@ tidak berjaya dipasang:\n%@\n%@\nSetiap ejen yang tiada ialah fungsi yang telah berhenti berfungsi secara senyap (vm-guard memantau penimbal mesin, backup-health melaporkan kegagalan). Betulkan puncanya dan ulang pemasangan.", + "All running": + "Semua berjalan", + "Also install the launchd agents (same as install-launchd).": + "Pasang juga ejen launchd (sama seperti install-launchd).", + "At most this many minutes of waiting for the upload.": + "Paling lama sekian minit menunggu muat naik.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "Pada had itu setiap jalur baharu gagal dengan EMFILE dan sandaran berhenti. Semak: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Cache pada cakera mesin", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Disambungkan ke Google Drive, tetapi tidak dapat mencipta folder '%@' - tanpanya mesin tiada tempat untuk menyimpan sandaran. Semak kebenaran akaun dan cuba lagi.", + "Convert the image": + "Tukar imej", + "Converting the image to 32 MB bands": + "Menukar imej kepada jalur 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "Dengan sambungan semasa, tidak dapat disemak sama ada sandaran berada di Google Drive (%@), jadi remote '%@' TIDAK diganti: tanpa jawapan itu log masuk baharu tidak dapat disemak terhadapnya.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Memuat turun binari rclone rasmi ke ~/.cloudmachine/bin (log masuk Google dan rclone.conf mesin).", + "Free in the machine": + "Ruang bebas dalam mesin", + "Free in the machine: %@": + "Ruang bebas dalam mesin: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "Menjana dan memasang ejen launchd (app, pengawas sandaran, permulaan mesin, pengawal mesin).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "Pasang Lima, yang menjalankan mesin CloudMachine: jalankan ini dalam Terminal", + "Install rclone (signs in to Google Drive for the machine)": + "Pasang rclone (log masuk ke Google Drive untuk mesin)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Pasang ejen latar belakang (permulaan mesin, pengawal penimbal, pengawas sandaran)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Memasang rclone melalui Homebrew - CloudMachine sendiri menggunakan yang daripada install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, token dan mapped/ bagi imej sandaran hanya wujud pada cakera mesin; tanpanya jalur dalam %@ tidak dapat dipulihkan. Salinan (tm-meta-sync, setiap 15 minit) dihantar ke %@. Semak: cloudmachine-agent vm-status, kemudian dalam mesin: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima mengatakan mesin sedang berjalan, tetapi satu arahan di dalamnya tidak kembali. Tanpanya tiada apa yang diketahui tentang Samba, rclone atau muat naik. Semak: cloudmachine-agent vm-status", + "Machine": + "Mesin", + "Machine %@": + "Mesin %@", + "Machine & Upload Status": + "Status Mesin & Muat Naik", + "Machine buffer": + "Penimbal mesin", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Tiada destinasi Time Machine ialah kongsi mesin (smb://tm@
/CloudMachine) - sandaran tidak dibuat di sana. Arahannya dicetak oleh: cloudmachine-agent vm-setup", + "Not running: %@": + "Tidak berjalan: %@", + "Not set up": + "Belum disediakan", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "Apabila habis, rclone berhenti memuat naik, penimbal mesin penuh dan sandaran tidak lagi dibuat. Pada pertumbuhan ~600 MB setiap kitaran sejam, itu kira-kira %@ hari.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "Atau rclone.conf tiada: Mac ini sudah menyediakan mesin CloudMachine, jadi ia tidak disambungkan semula secara membuta tuli. Pulihkan fail daripada sandaran (mesin menyimpan salinannya sendiri dalam %@). Untuk menyambung juga, cipta fail kosong pada laluan yang dicetak oleh `%@ config file` dan jalankan semula - folder sedia ada dikekalkan.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Halakan Time Machine ke mesin: jalankan ini dalam Terminal (memerlukan sudo; Salin termasuk kata laluan)", + "Points to the machine": + "Menuju ke mesin", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Bersedia untuk mulakan semula: menghentikan sandaran, menunggu seketika untuk muat naik, kemudian menghentikan mesin dengan bersih.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "Pembacaan destinasi Time Machine tidak kembali dalam %@ s. Begitulah tmutil bertindak apabila destinasinya tergantung.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "Remote '%@' TIDAK diganti. Log masuk baharu mendapat skop 'drive.file', yang hanya melihat fail yang dicipta di bawah client_id-nya sendiri. Sandaran sedia ada kemungkinan besar dicipta oleh sambungan semasa dan akan menjadi tidak kelihatan kepadanya. Sebelum apa-apa ditulis, token baharu disemak terhadap sandaran sedia ada, dan penggantian dibatalkan jika ia tidak dapat melihatnya. Mesin menyimpan salinan konfigurasinya sendiri sehingga vm-setup --replace-rclone-config. Untuk meneruskan, jalankan semula dengan --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Kawalan jauh: TERBUKA pada Mac di 127.0.0.1:5572 - mana-mana laman web boleh menghantar arahan rclone; lihat vm/README.md (portForwards)", + "Running": + "Berjalan", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone atau punchfs dalam mesin tidak aktif, jadi Time Machine tiada tempat untuk menulis atau jalur tidak sampai ke Google Drive. Semak: cloudmachine-agent vm-status", + "Service %@": + "Perkhidmatan %@", + "Services": + "Perkhidmatan", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "Sediakan mesin CloudMachine (kali pertama ia memuat turun Ubuntu - beberapa minit)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "Sediakan mesin CloudMachine sekali lagi supaya ia mencetak arahan Time Machine", + "Set up the machine": + "Sediakan mesin", + "Setting up the CloudMachine machine": + "Menyediakan mesin CloudMachine", + "Start the CloudMachine machine": + "Mulakan mesin CloudMachine", + "Start the machine": + "Mulakan mesin", + "Starting the CloudMachine machine": + "Memulakan mesin CloudMachine", + "Still to upload: %@ GiB": + "Masih perlu dimuat naik: %@ GiB", + "Stopping the Time Machine backup...": + "Menghentikan sandaran Time Machine...", + "Stopping the machine %@...": + "Menghentikan mesin %@...", + "The CloudMachine machine does not answer": + "Mesin CloudMachine tidak menjawab", + "The CloudMachine machine is not running": + "Mesin CloudMachine tidak berjalan", + "The CloudMachine machine is not set up yet": + "Mesin CloudMachine belum disediakan", + "The CloudMachine machine is stopped": + "Mesin CloudMachine dihentikan", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "Sandaran dihentikan, muat naik diberi masa sehingga 30 minit, kemudian mesin ditutup dengan bersih. Ia bermula semula pada log masuk berikutnya.", + "The machine %@ is not running - nothing to prepare.": + "Mesin %@ tidak berjalan - tiada apa untuk disediakan.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "Mesin dihentikan dan semuanya telah sampai ke Google Drive. Mac boleh dimulakan semula; mesin bermula semula semasa log masuk.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Mesin dihentikan. %@ GiB belum sampai ke Google Drive - ia disimpan dalam penimbal mesin dan dimuat naik selepas permulaan berikutnya. Mac boleh dimulakan semula.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Mesin dihentikan. rclone tidak memberitahu berapa banyak lagi yang perlu dimuat naik; apa yang belum dimuat naik disimpan dalam penimbal mesin dan dimuat naik selepas permulaan berikutnya. Mac boleh dimulakan semula.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "Cakera mesin ialah fail pada cakera ini dan membesar apabila penimbal muat naik terisi. Tanpa ruang tersisa, mesin tidak dapat menulis penimbal, dan syot kilat setempat Time Machine juga tiada tempat untuk disimpan.", + "The image's metadata has never been copied to Drive": + "Metadata imej tidak pernah disalin ke Drive", + "The image's metadata was last copied to Drive %@ ago": + "Metadata imej disalin ke Drive kali terakhir %@ lalu", + "The machine's disk is running out of space (%@ GB)": + "Cakera mesin hampir kehabisan ruang (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "Log masuk baharu TIDAK melihat sandaran sedia ada (%@), jadi remote '%@' TIDAK diganti dan rclone.conf tidak berubah. Kekalkan sambungan semasa, atau log masuk dengan bukti kelayakan (client_id) yang mencipta sandaran.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "Penimbal muat naik berada pada cakera ini. Pengawal menjeda Time Machine sebelum ia penuh; jika muat naik tidak mengejar, sandaran kekal dijeda.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Jalur ini hanya wujud dalam penimbal mesin. Sandaran di Google Drive TIDAK LENGKAP dan mungkin tidak dapat dibuka.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine membuat sandaran ke mesin, jadi tanpanya tiada sandaran dibuat. Mulakannya: limactl start %@ (atau butang Mulakan dalam app).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine tidak menghentikan sandarannya dalam 2 minit (atau tmutil tidak menjawab) - mesin TIDAK dihentikan. Cuba lagi sebentar lagi.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine telah mencipta imejnya: hentikan sandaran, kemudian tukar imej kepada jalur 32 MB", + "To upload": + "Untuk dimuat naik", + "Unknown whether the CloudMachine machine is running": + "Tidak diketahui sama ada mesin CloudMachine sedang berjalan", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Menunggu muat naik ke Google Drive (paling lama %@ min)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "Dengan --replace-existing: mengesahkan bahawa log masuk baharu (skop 'drive.file') mungkin tidak melihat sandaran sedia ada. Token baharu tetap disemak terhadap sandaran dahulu.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "Tanpanya tiada cara untuk menyemak sama ada apa-apa sampai ke Drive - pengawal mesin menjadi buta.", + "limactl did not answer": + "limactl tidak menjawab", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl tidak menjawab (atau tidak dipasang). Itu tidak bermakna mesin mati - ia bermakna tiada sesiapa yang menyemak.", + "limactl start failed: %@": + "limactl start gagal: %@", + "limactl stop failed: %@": + "limactl stop gagal: %@", + "punchfs is close to its open-file limit": + "punchfs hampir mencapai had fail terbukanya", + "punchfs open files": + "Fail terbuka punchfs", + "rclone's remote control is open on this Mac": + "Kawalan jauh rclone terbuka pada Mac ini", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') mengembalikan ralat, jadi tiada sesiapa tahu sama ada cakera mesin masih boleh membesar pada Mac ini.", + "Google Drive's daily upload limit stops the upload": + "Had muat naik harian Google Drive menghentikan muat naik", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google kali terakhir menolak muat naik %@ lalu (750 GB sehari). Sandaran sejak itu hanya ada dalam penimbal mesin pada Mac ini. rclone mencuba semula setiap 5 min dan menyambung sendiri apabila had berlalu; pengawal menjeda Time Machine jika lebih daripada %@ GiB menunggu.", + "Usage on Google Drive is not being measured": + "Penggunaan di Google Drive tidak diukur", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "Ukuran terakhir (%@ GB) ialah dari %@, %@ lalu - rclone size tidak menjawab sejak itu. Selagi ia tidak menjawab, tiada apa yang memantau had %@ GB: penggera 90%% dan 100%% kekal senyap. Semak vm-status, atau tekan Ukur sekarang dalam tetingkap.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size tidak menjawab walau sekali. Selagi ia tidak menjawab, tiada apa yang memantau had %@ GB: penggera 90%% dan 100%% kekal senyap. Semak vm-status, atau tekan Ukur sekarang dalam tetingkap.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Disimpan dalam Rantai Kunci. Menyambung Google Drive (configure-remote) akan menggunakannya.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Disimpan dalam Rantai Kunci. Sambungan Google Drive sedia ada mengekalkan client_id lamanya, dan pada Mac ini ia sepatutnya kekal begitu: sambungan yang dibuat dengan kunci baharu (skop 'drive.file') tidak dapat melihat sandaran yang dicipta oleh yang lama. Jangan ganti sambungan di sini; kunci baharu adalah untuk Mac yang belum disambungkan.", + "it is not there for the new token": + "ia tiada untuk token baharu", + "Cancel": + "Batal", + "ACTION NEEDED": + "TINDAKAN DIPERLUKAN", + "WILL PASS BY ITSELF — DO NOTHING": + "AKAN SELESAI SENDIRI - JANGAN BUAT APA-APA", + "UNKNOWN — CHECK AGAIN SHORTLY": + "TIDAK DIKETAHUI - SEMAK SEMULA SEBENTAR LAGI", + "ALL GOOD": + "SEMUA BAIK", + "Upload is not working": + "Muat naik tidak berfungsi", + "Upload stopped — no space left on Google Drive": + "Muat naik dihentikan - tiada ruang tersisa di Google Drive", + "%@ backup fragments not uploaded": + "%@ serpihan sandaran belum dimuat naik", + "Upload cannot keep up with writes": + "Muat naik tidak dapat mengejar penulisan", + "Upload paused — Google daily limit": + "Muat naik dijeda - had harian Google", + "Uploading to Google Drive — %@ queued": + "Memuat naik ke Google Drive - %@ dalam baris gilir", + "Everything uploaded to Google Drive": + "Semuanya dimuat naik ke Google Drive", + "Unknown what is waiting in the queue": + "Tidak diketahui apa yang menunggu dalam baris gilir", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Tiada sambungan ke Google Drive, jadi sandaran hanya dibuat pada Mac ini. Jika ini tidak selesai sendiri dalam beberapa minit, semak rangkaian dan sambungan ke Drive.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Tiada ruang tersisa di Google Drive. Ini TIDAK akan selesai sendiri - anda perlu mengosongkan ruang di Drive. Sehingga itu Time Machine dijeda supaya cakera Mac ini tidak penuh.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ serpihan sandaran tidak dapat dimuat naik dan rclone berhenti mencuba. Serpihan ini hanya wujud pada Mac ini, jadi sandaran di Drive tidak lengkap. Ini perlu disemak.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine menulis lebih laju daripada muat naik, dan penimbal telah penuh. Sandaran akan dijeda sehingga muat naik mengejar - ini ialah perlindungan terhadap cakera penuh, bukan kegagalan.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google menerima 750 GB sehari dan had itu telah habis digunakan. Tiada apa yang perlu dilakukan: had diperbaharui sendiri, biasanya dalam beberapa jam. Sandaran Time Machine dibuat seperti biasa sementara itu dan menunggu dalam penimbal - ia akan dimuat naik sebaik sahaja Google menerima semula.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ serpihan sandaran berada dalam baris gilir dan dalam perjalanan ke Drive.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "Tiada apa yang menunggu dalam baris gilir - sandaran di Google Drive lengkap.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone tidak menjawab soalan tentang baris gilir, jadi tidak diketahui berapa banyak sandaran yang masih menunggu untuk dimuat naik. Ini tidak bermakna ada yang rosak - ketika beban tinggi jawapan boleh lewat. Ia hanya bermakna buat masa ini tiada sesiapa tahu. Jika berterusan, semakan kitaran sandaran akan melaporkannya.", + "unknown error": + "ralat tidak diketahui", + "rclone lsf ended with an error": + "rclone lsf tamat dengan ralat", + "This Mac is close to its space limit on Google Drive": + "Mac ini hampir mencapai had ruangnya di Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ GB daripada %@ GB digunakan. Time Machine memadam sandaran paling lama untuk kekal dalam kuotanya; semak bahawa kuota telah ditetapkan (vm-status).", + "This Mac is over its space limit on Google Drive": + "Mac ini melebihi had ruangnya di Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ GB daripada %@ GB digunakan. Tetapkan kuota Time Machine (arahan dalam tetingkap app atau vm-status), atau naikkan had.", + "not set": + "belum ditetapkan", + "%@ GB - usage not measured yet": + "%@ GB - penggunaan belum diukur", + "%@ of %@ GB used (%@%%)": + "%@ daripada %@ GB digunakan (%@%%)", + "The limit must be a whole number of GB above zero.": + "Had mestilah nombor bulat GB yang lebih daripada sifar.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "machines.json tidak dapat dibaca, jadi ia tidak ditulis ganti. Betulkan atau alihkannya dahulu.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' bukan nama folder yang sah: gunakan huruf kecil, digit dan tanda sempang.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Mac ini sudah membuat sandaran ke folder '%@'. Menukar kepada '%@' akan memulakan sandaran baharu yang kosong dan meninggalkan yang sedia ada tanpa pemilik, jadi tiada apa yang diubah.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Mac ini sudah mempunyai pemasangan CloudMachine, yang sandarannya berada dalam folder '%@'. Menukar kepada '%@' akan meninggalkannya tanpa pemilik, jadi tiada apa yang diubah.", + "Could not save the folder name to %@: %@": + "Tidak dapat menyimpan nama folder ke %@: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew tidak dipasang. Pasang secara manual: https://brew.sh", + "Installing rclone failed: %@": + "Pemasangan rclone gagal: %@", + "Installed rclone.": + "rclone dipasang.", + "Own Google credentials: set.": + "Bukti kelayakan Google sendiri: ditetapkan.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "TIDAK LENGKAP: %@ tiada - rclone tetap akan menggunakan client_id kongsi rclone.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Tiada bukti kelayakan sendiri - rclone menggunakan client_id kongsi, yang dihadkan kadarnya secara bersama dan akan dihentikan pada 2026.", + "Empty value - not saving.": + "Nilai kosong - tidak disimpan.", + "Keychain refused: %@": + "Rantai Kunci menolak: %@", + "DIRTY-TREE": + "POKOK-KOTOR", + "Cannot create the working directory: %@": + "Tidak dapat mencipta direktori kerja: %@", + "Could not read the rclone version number.": + "Tidak dapat membaca nombor versi rclone.", + "Could not download %@.": + "Tidak dapat memuat turun %@.", + "No entry for %@ in SHA256SUMS.": + "Tiada entri untuk %@ dalam SHA256SUMS.", + "Could not compute the checksum.": + "Tidak dapat mengira checksum.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "Checksum SHA256 tidak sepadan - TIDAK dipasang.\n dijangka: %@\n dikira: %@", + "Could not unpack the archive.": + "Tidak dapat menyahpek arkib.", + "Could not install the binary: %@": + "Tidak dapat memasang binari: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %@ dipasang dalam %@ (checksum SHA256 sepadan).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ tidak bertindak balas dalam masa yang diperuntukkan (proses ditinggalkan tanpa pengawasan di latar belakang).", + "Cannot launch %@: %@": + "Tidak dapat melancarkan %@: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "Remote '%@' sudah wujud dan TIDAK disentuh.\nPenulisan ganti akan menggantikan token dan skop kebenaran; bukti kelayakan dengan skop 'drive.file' tidak melihat fail yang dicipta oleh yang terdahulu, jadi sandaran sedia ada menjadi tidak dapat dicapai.\nJika anda benar-benar mahu menggantinya, sandarkan ~/.config/rclone/rclone.conf dahulu dan jalankan semula dengan --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "Tidak dapat menyemak sama ada remote '%@' sudah wujud (rclone listremotes tidak menjawab atau gagal), jadi tiada apa yang diubah. Jalankan `%@ listremotes` untuk melihat ralat, kemudian cuba lagi.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "Tidak dapat menyemak sama ada Mac ini sudah mempunyai pemasangan CloudMachine (rclone tidak menjawab), jadi tiada folder dipilih. Cuba lagi sebentar lagi.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize gagal (%@). Jika binari itu tiada, mulakan dengan: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "Tidak dapat membaca token daripada output rclone authorize.", + "rclone config create failed.": + "rclone config create gagal.", + "Connected to Google Drive as remote '%@', folder %@.": + "Disambungkan ke Google Drive sebagai remote '%@', folder %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil tidak bertindak balas - tidak diketahui ke mana sandaran pergi", + "No successful backup for %@": + "Tiada sandaran berjaya selama %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Sandaran SELESAI terakhir: %@. Kitaran ialah setiap jam, jadi itu bermakna %@ larian terlepas.", + "There is NOT A SINGLE successful backup": + "TIADA LANGSUNG sandaran yang berjaya", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Pilihan Time Machine tidak mengandungi tarikh sandaran selesai untuk destinasi ini.", + "The last backup attempt did not end in a backup": + "Percubaan sandaran terakhir tidak berakhir dengan sandaran", + "The attempt at %@ is newer than the last successful backup at %@.": + "Percubaan pada %@ lebih baharu daripada sandaran berjaya terakhir pada %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine melaporkan ralat dalam larian terakhir (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "RESULT bukan sifar dalam pilihan Time Machine bermakna larian tidak berjaya.", + "rclone failed to upload %@ files": + "rclone gagal memuat naik %@ fail", + "Buffer full of nothing but unsent data": + "Penimbal penuh dengan data yang belum dihantar sahaja", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone tiada lagi apa-apa untuk dikeluarkan daripada penimbal - muat naik tidak dapat mengejar atau telah tersekat.", + "The rclone control interface is not responding": + "Antara muka kawalan rclone tidak menjawab", + "Google Drive is running out of space (%@ GB)": + "Google Drive hampir kehabisan ruang (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Cakera Mac hampir kehabisan ruang (%@ GB)", + "Cannot read the Time Machine preferences": + "Tidak dapat membaca pilihan Time Machine", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ tidak dapat dibaca - selalunya kerana Capaian Cakera Penuh tiada. Tanpa fail ini TIDAK DIKETAHUI bila sandaran terakhir dibuat, jadi kami menganggapnya kegagalan, bukan ketiadaan masalah.", + "Cannot measure free space on the Mac's disk": + "Tidak dapat mengukur ruang bebas pada cakera Mac", + "%@ days": + "%@ hari", + "CloudMachine: backup is not working": + "CloudMachine: sandaran tidak berfungsi", + "unknown reason": + "sebab tidak diketahui", + "osascript did not show the notification (permissions or no graphical session)": + "osascript tidak memaparkan pemberitahuan (kebenaran atau tiada sesi grafik)", + "UNDELIVERED ALARM: %@": + "PENGGERA TIDAK DIHANTAR: %@", + "from %@, reason: %@": + "daripada %@, sebab: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "Pemberitahuan sistem tidak dihantar - anda akan melihat penggera ini HANYA di sini.", + "%@ (%@ ago)": + "%@ (%@ lalu)", + "%@ - marker from the FUTURE": + "%@ - penanda dari MASA DEPAN", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (%@ lalu) - PENGAWAS MUNGKIN TIDAK BERJALAN", + "NEVER - the watchdog has not recorded a single run": + "TIDAK PERNAH - pengawas belum merekodkan walau satu larian", + "Could not find the launchd/ directory with templates.": + "Tidak dapat mencari direktori launchd/ yang mengandungi templat.", + "Could not find the compiled cloudmachine-agent binary.": + "Tidak dapat mencari binari cloudmachine-agent yang telah dikompil.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "DIBATALKAN: tidak dapat meletakkan cloudmachine-agent di lokasi yang stabil\n(%@) - selalunya kerana kekurangan ruang atau kebenaran.\nTIDAK memasang ejen yang menuju ke %@: laluan itu\nhilang pada `swift build` atau `git clean` berikutnya, dan sandaran berhenti\ntanpa sebarang isyarat yang kelihatan.", + "ABORTED: %@": + "DIBATALKAN: %@", + "Could not list the templates in %@.": + "Tidak dapat menyenaraikan templat dalam %@.", + "could not read the template %@": + "tidak dapat membaca templat %@", + "could not write %@ (lack of space or permissions)": + "tidak dapat menulis %@ (kekurangan ruang atau kebenaran)", + "launchctl load refused to load %@": + "launchctl load enggan memuatkan %@", + "NOT A SINGLE agent was loaded.": + "TIDAK SATU PUN ejen dimuatkan.", + "Only these went in: %@.": + "Hanya ini yang berjaya dipasang: %@.", + "Could not load any launchd agent.": + "Tidak dapat memuatkan sebarang ejen launchd.", + "Installed agents: %@": + "Ejen dipasang: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " AMARAN: hampir had - jalur baharu akan gagal dengan EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands di Google Drive tidak kosong - ia mungkin mengandungi sandaran lain. TIDAK ditulis ganti; semak sendiri.", + "Address: %@": + "Alamat: %@", + "Already prepared (%@ exists) - nothing to do.": + "Sudah disediakan (%@ wujud) - tiada apa untuk dilakukan.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Menukar imej baharu Time Machine yang kosong dalam mesin kepada jalur 32 MB dan memindahkan jalur ke Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "Salin rclone.conf ke dalam mesin walaupun ia sudah mempunyainya.", + "Copying the converted image into the machine failed: %@": + "Menyalin imej yang telah ditukar ke dalam mesin gagal: %@", + "Copying the image to the Mac failed: %@": + "Menyalin imej ke Mac gagal: %@", + "Could not ask Lima about the machine: %@": + "Tidak dapat bertanya Lima tentang mesin: %@", + "Could not carry the Time Machine files over: %@": + "Tidak dapat memindahkan fail Time Machine: %@", + "Could not check the image in the machine.": + "Tidak dapat menyemak imej dalam mesin.", + "Could not copy the rclone configuration into the machine.": + "Tidak dapat menyalin konfigurasi rclone ke dalam mesin.", + "Could not create %@ on Google Drive: %@": + "Tidak dapat mencipta %@ di Google Drive: %@", + "Could not create %@: %@": + "Tidak dapat mencipta %@: %@", + "Could not find the vm/ directory with the machine template.": + "Tidak dapat mencari direktori vm/ yang mengandungi templat mesin.", + "Could not read the image size.": + "Tidak dapat membaca saiz imej.", + "Could not set the SMB password of user %@ in the machine.": + "Tidak dapat menetapkan kata laluan SMB pengguna %@ dalam mesin.", + "Could not stop smbd in the machine.": + "Tidak dapat menghentikan smbd dalam mesin.", + "Could not write %@ in the machine.": + "Tidak dapat menulis %@ dalam mesin.", + "Could not write the password file %@.": + "Tidak dapat menulis fail kata laluan %@.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "Mencipta atau memulakan mesin CloudMachine (Lima), memberinya konfigurasi rclone dan kata laluan SMB, dan mencetak arahan Time Machine.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "Mencipta mesin %@ (permulaan pertama memuat turun Ubuntu dan memasang pakej - beberapa minit)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Selesai: %@ mempunyai jalur %@ MB di Google Drive; yang asal disimpan dalam %@ di dalam mesin. Mulakan sandaran: tmutil startbackup", + "exit code %@, no message": + "kod keluar %@, tiada mesej", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Metadata imej: TIDAK PERNAH disalin ke %@ - semak tm-meta-sync dalam mesin", + "Image metadata: copied %@ ago to %@": + "Metadata imej: disalin %@ lalu ke %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Metadata imej: kali terakhir disalin %@ lalu - TERLAMBAT (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Metadata imej: belum disalin - menunggu vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "Sandaran %@, dijeda oleh pengawal %@: %@", + "Free in machine: %@ GiB": + "Bebas dalam mesin: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n menemui masalah: %@", + "Google Drive folder: %@": + "Folder Google Drive: %@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach bagi imej yang ditukar gagal: %@", + "hdiutil convert failed: %@": + "hdiutil convert gagal: %@", + "Image name in the machine (default: from the computer name).": + "Nama imej dalam mesin (lalai: daripada nama komputer).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "Pemasangan imej yang ditukar GAGAL: %@\nsmbd dibiarkan BERHENTI supaya Time Machine tidak membuka imej yang separuh dipasang. Yang asal berada dalam %@ di dalam mesin.", + "limactl create failed: %@": + "limactl create gagal: %@", + "limactl list failed: %@": + "limactl list gagal: %@", + "limactl not found - install Lima: brew install lima": + "limactl tidak ditemui - pasang Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start gagal: %@\nLog mesin itu sendiri: %@", + "Machine %@ is running.": + "Mesin %@ sedang berjalan.", + "Machine %@ was already running.": + "Mesin %@ sudah berjalan.", + "Machine: %@ (%@)": + "Mesin: %@ (%@)", + "Machine: %@": + "Mesin: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Mesin: belum dicipta - jalankan: cloudmachine-agent vm-setup", + "no answer within the time limit": + "tiada jawapan dalam had masa", + "No image %@ in the machine.": + "Tiada imej %@ dalam mesin.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "Belum ada imej dalam mesin - halakan Time Machine ke kongsi dan biarkan ia mencipta satu dahulu.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "Tiada konfigurasi rclone di %@ - sambungkan Google Drive dahulu (configure-remote).", + "no SMB destination": + "tiada destinasi SMB", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "Satu semakan penimbal muat naik mesin: menjeda Time Machine apabila ia penuh, menyambung semula apa yang dijedanya.", + "Packing the converted image failed: %@": + "Membungkus imej yang ditukar gagal: %@", + "Packing the image failed: %@": + "Membungkus imej gagal: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "Tiada jawapan daripada mesin (rclone rc) - pengawal tidak akan melakukan apa-apa.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Hanya cetak keputusan pengawal - untuk mencuba ambang pada mesin sekali guna.", + "Pause above this many GiB in the buffer.": + "Jeda apabila penimbal melebihi sekian GiB.", + "Pause when the machine has less free than this, in GiB.": + "Jeda apabila mesin mempunyai ruang bebas kurang daripada ini, dalam GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Halakan Time Machine ke mesin (sekali, memerlukan kata laluan pentadbir):", + "punchfs files: %@ open, limit %@": + "Fail punchfs: %@ terbuka, had %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "Konfigurasi rclone sudah ada dalam mesin - dikekalkan (--replace-rclone-config menggantikannya).", + "rclone configuration copied into the machine.": + "Konfigurasi rclone disalin ke dalam mesin.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm atau punchfs tidak berjalan dalam mesin - lihat cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Sambung semula di bawah sekian GiB (hanya sandaran yang dijeda oleh pengawal).", + "Service %@: %@": + "Perkhidmatan %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "Beberapa imej dalam mesin (%@) - pilih satu dengan --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Menunjukkan mesin: alamat, perkhidmatan, penimbal muat naik, ruang bebas dan destinasi Time Machine.", + "SMB password stored in %@ (mode 600).": + "Kata laluan SMB disimpan dalam %@ (mod 600).", + "The converted image does not have %@-byte bands.": + "Imej yang ditukar tidak mempunyai jalur %@ bait.", + "The converted image has no APFS partition.": + "Imej yang ditukar tidak mempunyai partition APFS.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "Imej sudah mengambil %@ MB - arahan ini hanya menukar imej baharu yang kosong (di bawah %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "Imej disulitkan - penukaran imej yang disulitkan tidak disokong.", + "The image was not changed; smbd started again.": + "Imej tidak diubah; smbd dimulakan semula.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "Mesin tidak menjawab - adakah ia berjalan? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "Mesin tidak mempunyai alamat pada rangkaian vzNAT.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "Perkhidmatan dalam mesin tidak bermula - semak: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine sedang menyandar - hentikannya dahulu: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: TIDAK menuju ke mesin (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil tidak menjawab", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil tidak menjawab - imej tidak disentuh selagi keadaannya tidak diketahui.", + "unknown": + "tidak diketahui", + "Unpacking the image failed: %@": + "Menyahpek imej gagal: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "Masih perlu dimuat naik: %@ GiB dalam %@ jalur, %@ sedang dimuat naik (cache pada cakera %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "%@ (mesin dan penimbal muat naiknya) dikecualikan daripada Time Machine.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "AMARAN: tidak dapat mengecualikan %@ daripada Time Machine - jalankan: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Penimbal muat naik: tiada jawapan daripada rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Apabila Time Machine telah mencipta imej kosongnya, hentikan sandaran (tmutil stopbackup) dan jalankan: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "Belum dihantar %@ GiB, bebas %@ GiB (jeda di atas %@ GiB belum dihantar atau di bawah %@ GiB bebas, sambung semula di bawah %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Muat naik: had harian Google menolak muat naik %@ lalu - rclone mencuba semula setiap 5 min dan menyambung sendiri", + "no": + "tidak", + "running": + "berjalan", + "stopped": + "dihentikan", + "yes": + "ya", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nTemplat sebelumnya berada dalam %@ - salin semula ke atas lima.yaml dan jalankan limactl start %@.", + "Could not read this app's machine template (limactl template copy).": + "Tidak dapat membaca templat mesin app ini (limactl template copy).", + "Could not replace %@: %@": + "Tidak dapat menggantikan %@: %@", + "Machine %@ already runs this app's template.": + "Mesin %@ sudah menjalankan templat app ini.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "Mesin %@ kini menjalankan templat app ini; yang sebelumnya berada dalam %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Memindahkan mesin ke templat app ini (dua kali mula semula, tidak pernah semasa sandaran).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "Tiada mesin %@ - cipta dengan: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Templat: LEBIH LAMA daripada app ini - jalankan: cloudmachine-agent vm-update", + "Template: not compared": + "Templat: tidak dibandingkan", + "Template: this app's": + "Templat: milik app ini", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "Mesin tidak mempunyai %@ - jalankan cloudmachine-agent vm-setup dahulu.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "Mesin dimulakan semula, tetapi tidak semua perkhidmatan berjalan - semak: cloudmachine-agent vm-status. Templat sebelumnya berada dalam %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "Templat mengubah mesin itu sendiri (%@) - itu memerlukan mesin baharu, bukan kemas kini.", + "The upload to Google Drive hangs": + "Muat naik ke Google Drive tergantung", + "Time Machine is backing up - try again when it has finished.": + "Time Machine sedang menyandar - cuba lagi apabila ia selesai.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Muat naik: TERGANTUNG - jalur sedang berjalan, tiada yang dimuat naik selama %@ (rangkaian?); lihat /var/log/rclone-tm.log dalam mesin", + "limactl stop failed - nothing was changed.": + "limactl stop gagal - tiada apa yang diubah.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone mempunyai jalur sedang berjalan, tetapi tiada yang dimuat naik selama %@ - biasanya sambungan rangkaian terputus, yang tidak dilaporkan oleh rclone sebagai ralat. Sandaran sejak itu hanya ada dalam penimbal mesin. Apabila rangkaian kembali, muat naik menyambung sendiri (pada 28.10.2026 dalam 80 s); jika tidak, memulakan semula mesin (prepare-shutdown, limactl start) menutup sambungan yang mati.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil tidak menjawab - mesin tidak dimulakan semula selagi keadaannya tidak diketahui.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+nb.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+nb.swift new file mode 100644 index 0000000..c485bea --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+nb.swift @@ -0,0 +1,951 @@ +// Norwegian Bokmål translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let nb: [String: String] = [ + "Space limit: %@": + "Plassgrense: %@", + " Time Machine quota not set to match - run: %@": + " Time Machine-kvoten er ikke satt til å samsvare - kjør: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Angir hvor mye av Google Drive denne Mac-en kan bruke, og skriver ut kommandoen for Time Machine-kvoten.", + "Limit in GB.": + "Grense i GB.", + "Limit for this Mac: %@ GB.": + "Grense for denne Mac-en: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Angi nå Time Machine-kvoten (krever et administratorpassord):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - kontroll, oppsett av Google Drive og installasjon. Kalles av launchd etter en tidsplan, eller manuelt fra Terminal.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "Kobler til Google Drive via rclone (OAuth i nettleseren) og oppretter mappen til denne maskinen.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Overskriv den eksisterende remote. RISIKABELT: erstatter token og tillatelser.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "Pakker build/CloudMachine.app til build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "FEIL: %@ mangler - kjør 'cloudmachine-agent build-app' først", + "==> Preparing the staging folder": + "==> Klargjør staging-mappen", + "==> Creating %@": + "==> Oppretter %@", + "ERROR: hdiutil exited with code %@.": + "FEIL: hdiutil avsluttet med kode %@.", + "==> Done: %@": + "==> Ferdig: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "Ved første åpning (appen er ikke signert med en Apple Developer-konto):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. Åpne %@ og dra CloudMachine.app til Programmer.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. Høyreklikk på CloudMachine.app i Finder -> Åpne -> Åpne\n (et vanlig dobbeltklikk viser Gatekeeper-blokkeringen “ukjent utvikler”).", + "3. Later launches work normally, with a double-click.": + "3. Senere åpnes appen vanlig, med et dobbeltklikk.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "Bygger CloudMachine.app (Release) - GUI + cloudmachine-agent i Contents/MacOS/ samt launchd/, vm/ og config/ som Resources.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Binærfiler for både Apple Silicon og Intel (slik bygger CI en utgivelse; unødvendig lokalt).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> Bygger CloudMachineApp + cloudmachine-agent (release) - versjon %@ (%@)", + "ERROR: swift build exited with code %@.": + "FEIL: swift build avsluttet med kode %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "FEIL: swift build --show-bin-path oppga ikke mappen med binærfilene.", + "ERROR: no built binary found at %@": + "FEIL: fant ingen bygd binærfil i %@", + "==> Assembling the .app bundle in %@": + "==> Setter sammen .app-pakken i %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> ADVARSEL: du bygger fra et SKITTENT tre - versjonen peker ikke på en commit.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "FEIL: Resources/AppIcon.icns mangler - opprett den: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Signerer med det lokale sertifikatet '%@' (Full disktilgang bevares ved senere ombygginger)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Signerer ad hoc (ingen Apple Developer-konto) - kjør 'cloudmachine-agent setup-signing-cert' én gang, slik at TCC-tillatelser bevares ved senere ombygginger", + "ERROR: codesign exited with code %@.": + "FEIL: codesign avsluttet med kode %@.", + "Next step: %@": + "Neste trinn: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Oppretter et lokalt selvsignert sertifikat, slik at Full disktilgang bevares ved senere ombygginger av appen.", + "Certificate '%@' already exists in %@, nothing to do.": + "Sertifikatet '%@' finnes allerede i %@ - ingenting å gjøre.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Genererer nøkkelen og det selvsignerte sertifikatet '%@'...", + "ERROR: openssl req exited with code %@.": + "FEIL: openssl req avsluttet med kode %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "FEIL: openssl pkcs12 avsluttet med kode %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Importerer sertifikatet i %@ (forhåndsgodkjenner /usr/bin/codesign, slik at den ikke spør om passordet til nøkkelringen hver gang)...", + "ERROR: security import exited with code %@.": + "FEIL: security import avsluttet med kode %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> Stoler på sertifikatet KUN for kodesignering...", + "ERROR: security add-trusted-cert exited with code %@.": + "FEIL: security add-trusted-cert avsluttet med kode %@.", + "Done. Certificate '%@' is now available to codesign.": + "Ferdig. Sertifikatet '%@' er nå tilgjengelig for codesign.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "Neste 'cloudmachine-agent build-app' bruker det automatisk i stedet for en ad hoc-signatur.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "Etter DEN ENE ombyggingen må du gi Full disktilgang en siste gang - senere\nombygginger tilbakestiller den ikke lenger, så lenge du signerer med det samme sertifikatet.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Kontrollerer om den timevise syklusen FORTSATT fungerer (datoen for den siste VELLYKKEDE sikkerhetskopien) og melder feil.", + "After this many hours without a successful backup we consider the cycle broken.": + "Etter så mange timer uten en vellykket sikkerhetskopi anser vi syklusen som brutt.", + "Only print the state, without a system notification.": + "Skriv bare ut tilstanden, uten systemvarsel.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "En annen innstillingsfil for Time Machine - for å teste vakthunden på et kjent utvalg.", + "Last successful backup: %@": + "Siste vellykkede sikkerhetskopi: %@", + "Last successful backup: NONE": + "Siste vellykkede sikkerhetskopi: INGEN", + "Last attempt: %@": + "Siste forsøk: %@", + "WAITING (system startup): %@": + "VENTER (systemoppstart): %@", + "Backup cycle: OK": + "Sikkerhetskopisyklus: OK", + "FAILURE: %@": + "FEIL: %@", + " %@": + " %@", + "Check the state: %@": + "Sjekk tilstanden: %@", + "Preparing for restart": + "Forbereder omstart", + "Prepare for restart": + "Forbered til omstart", + "Prepare": + "Forbered", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> ADVARSEL: git rev-list mislyktes (%@) - datoen brukes som byggnummer.", + "Agents: %@": + "Agenter: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "KAN IKKE STARTE: %@ - åpne CloudMachine eller kjør backup-health for å laste dem på nytt", + "Reloaded agents that could not start: %@": + "Lastet på nytt agenter som ikke kunne starte: %@", + "Drive folder: %@": + "Drive-mappe: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Navnet på mappen til denne Mac-en på Google Drive (standard: avledet av datamaskinens navn). Angis én gang; kan ikke endres senere.", + "Backup watchdog: %@": + "Vakthund for sikkerhetskopi: %@", + "Prints the version, the build number and the commit this binary was built from.": + "Skriver ut versjonen, byggnummeret og commiten som denne binærfilen ble bygd fra.", + "Only one line, without a description.": + "Bare én linje, uten beskrivelse.", + "Build from the working tree (outside a bundle) - no version data.": + "Bygg fra arbeidstreet (utenfor en pakke) - ingen versjonsdata.", + "Version: %@": + "Versjon: %@", + "Build: %@": + "Bygg: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "ADVARSEL: bygd fra et SKITTENT tre - binærfilen inneholder kode som\n ikke er i noen commit. Commit-nummeret beskriver IKKE\n hva som faktisk kjører.", + "Saving the space limit": + "Lagrer plassgrensen", + "Measuring usage on Google Drive": + "Måler forbruket på Google Drive", + "Google Drive did not answer - try again later.": + "Google Drive svarte ikke - prøv igjen senere.", + "Measured.": + "Målt.", + "Space limit for this Mac": + "Plassgrense for denne Mac-en", + "Used on Google Drive": + "Brukt på Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "Målt %@. Vakthunden måler på nytt med noen timers mellomrom.", + "Limit (GB)": + "Grense (GB)", + "Save": + "Arkiver", + "Measure now": + "Mål nå", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Time Machine-kvote: %@ GB (70%% av grensen - kopien på Drive er omtrent en tredel større enn sikkerhetskopien den inneholder). Time Machine sletter de eldste sikkerhetskopiene for å holde seg innenfor den.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Angi Time Machine-kvoten: kjør dette i Terminal (krever sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Koble til Google Drive: kjør dette i Terminal, og godkjenn i nettleseren", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "Gi CloudMachine Full disktilgang, slik at den kan se om sikkerhetskopiene fullføres", + "Folder on Google Drive": + "Mappe på Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Én mappe per Mac. Angis én gang - kan ikke endres etter tilkobling.", + "Use lowercase letters, digits and dashes.": + "Bruk små bokstaver, sifre og bindestreker.", + "Install rclone": + "Installer rclone", + "Open System Settings": + "Åpne Systeminnstillinger", + "Install agents": + "Installer agenter", + "not checked": + "ikke kontrollert", + "none at all": + "ikke én eneste", + "%@ ago": + "%@ siden", + "Missing: %@": + "Mangler: %@", + "Google Drive not connected": + "Google Drive er ikke tilkoblet", + "Time Machine does not point to CloudMachine": + "Time Machine peker ikke på CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "DET ER UKJENT om Time Machine peker på CloudMachine - tmutil svarte ikke", + "Backup in progress": + "Sikkerhetskopiering pågår", + "Unknown when the last backup was made": + "Det er ukjent når den siste sikkerhetskopien ble tatt", + "There is no completed backup at all": + "Det finnes ingen fullført sikkerhetskopi i det hele tatt", + "No completed backup for %@": + "Ingen fullført sikkerhetskopi på %@", + "Ready": + "Klar", + "Not saved: %@": + "Ikke arkivert: %@", + "Installing rclone": + "Installerer rclone", + "Installing launchd agents": + "Installerer launchd-agenter", + "Starting backup": + "Starter sikkerhetskopiering", + "Backup started.": + "Sikkerhetskopiering startet.", + "Could not start the backup.": + "Kunne ikke starte sikkerhetskopieringen.", + "Stopping backup": + "Stopper sikkerhetskopiering", + "Backup stopped.": + "Sikkerhetskopiering stoppet.", + "Could not stop the backup.": + "Kunne ikke stoppe sikkerhetskopieringen.", + "Could not prepare the AppleScript.": + "Kunne ikke klargjøre AppleScript.", + "Unknown authorization error.": + "Ukjent autorisasjonsfeil.", + "Waiting to upload": + "Venter på opplasting", + "%@ files": + "%@ filer", + "nothing": + "ingenting", + "Back up now": + "Sikkerhetskopier nå", + "Stop backup": + "Stopp sikkerhetskopiering", + "Open CloudMachine": + "Åpne CloudMachine", + "Quit": + "Avslutt", + "Healthy": + "Frisk", + "Attention": + "Obs", + "Refreshed %@": + "Oppdatert %@", + "System Status": + "Systemstatus", + "Action needed": + "Handling kreves", + "not measured": + "ikke målt", + "rclone did not answer": + "rclone svarte ikke", + "Backup in Progress": + "Sikkerhetskopiering pågår", + "Files processed": + "Behandlede filer", + "Write speed": + "Skrivehastighet", + "Operation phase": + "Operasjonsfase", + "Required Setup Steps": + "Nødvendige oppsettstrinn", + "Copy": + "Kopier", + "Last completed backup": + "Siste fullførte sikkerhetskopi", + "Last backup watchdog run": + "Siste kjøring av vakthunden for sikkerhetskopi", + "not read": + "ikke lest", + "Everything uploaded": + "Alt er lastet opp", + "File upload errors": + "Feil ved opplasting av filer", + "Google Drive Credentials (OAuth 2.0)": + "Legitimasjon for Google Drive (OAuth 2.0)", + "Keychain OK": + "Nøkkelring OK", + "No custom keys": + "Ingen egne nøkler", + "Paste client_id...": + "Lim inn client_id...", + "Paste client_secret...": + "Lim inn client_secret...", + "Save securely in the Keychain": + "Arkiver trygt i nøkkelringen", + "Refresh": + "Oppdater", + "Overview": + "Oversikt", + "Backups": + "Sikkerhetskopier", + "Storage": + "Lagring", + "Settings": + "Innstillinger", + "Current status: %@": + "Gjeldende status: %@", + "Does not point to CloudMachine": + "Peker ikke på CloudMachine", + "tmutil did not answer": + "tmutil svarte ikke", + "Backing up: %@ of %@": + "Sikkerhetskopierer: %@ av %@", + "%@ of %@": + "%@ av %@", + "Copied": + "Kopiert", + "No backup is running": + "Ingen sikkerhetskopiering pågår", + "Time Machine starts the next one on its own schedule.": + "Time Machine starter den neste etter sin egen tidsplan.", + "Backup cycle": + "Sikkerhetskopisyklus", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB i %@ bånd, %@ lastes opp", + "%@ bands": + "%@ bånd", + "%@ fragments abandoned - only in the machine": + "%@ oppgitte fragmenter - bare i maskinen", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 svarer på Mac-en: Lima videresender maskinens fjernstyring av rclone, som ikke har noe passord. Enhver nettside som er åpen i en nettleser, kan sende kommandoer til den - også sletting av sikkerhetskopien på Google Drive. Legg regelen portForwards fra vm/cmsmb.yaml til i maskinen, og start den på nytt (se vm/README.md).", + "A service in the CloudMachine machine is not running": + "En tjeneste i CloudMachine-maskinen kjører ikke", + "Address": + "Adresse", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Installasjonen av agenter er UFULLSTENDIG - %@ av %@ ble ikke installert:\n%@\n%@\nHver manglende agent er en funksjon som stille har sluttet å fungere (vm-guard overvåker maskinens buffer, backup-health melder feil). Rett opp årsaken, og gjenta installasjonen.", + "All running": + "Alle kjører", + "Also install the launchd agents (same as install-launchd).": + "Installer også launchd-agentene (samme som install-launchd).", + "At most this many minutes of waiting for the upload.": + "Maksimalt så mange minutter venting på opplasting.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "Ved grensen mislykkes hvert nye bånd med EMFILE, og sikkerhetskopieringen stopper. Kontroller: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Hurtigbuffer på maskinens disk", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Tilkoblet Google Drive, men kunne ikke opprette mappen '%@' - uten den har maskinen ingen steder å lagre sikkerhetskopien. Kontroller kontoens tillatelser, og prøv igjen.", + "Convert the image": + "Konverter diskbildet", + "Converting the image to 32 MB bands": + "Konverterer diskbildet til bånd på 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "Det var ikke mulig å kontrollere med den gjeldende tilkoblingen om sikkerhetskopien finnes på Google Drive (%@), så remote '%@' ble IKKE erstattet: uten det svaret kan den nye påloggingen ikke kontrolleres mot den.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Laster ned den offisielle rclone-binærfilen til ~/.cloudmachine/bin (Google-pålogging og maskinens rclone.conf).", + "Free in the machine": + "Ledig i maskinen", + "Free in the machine: %@": + "Ledig i maskinen: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "Genererer og installerer launchd-agentene (appen, vakthund for sikkerhetskopi, maskinstart, maskinens vakt).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "Installer Lima, som kjører CloudMachine-maskinen: kjør dette i Terminal", + "Install rclone (signs in to Google Drive for the machine)": + "Installer rclone (logger maskinen på Google Drive)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Installer bakgrunnsagentene (maskinstart, buffervakt, vakthund for sikkerhetskopi)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Installerer rclone via Homebrew - CloudMachine selv bruker den som kommer fra install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, token og mapped/ fra diskbildet for sikkerhetskopien finnes bare på maskinens disk; uten dem kan ikke båndene i %@ gjenopprettes. Kopien (tm-meta-sync, hvert 15. minutt) legges i %@. Kontroller: cloudmachine-agent vm-status, og deretter i maskinen: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima sier at maskinen kjører, men en kommando i den returnerte ikke. Uten den vet man ingenting om Samba, rclone eller opplasting. Kontroller: cloudmachine-agent vm-status", + "Machine": + "Maskin", + "Machine %@": + "Maskin %@", + "Machine & Upload Status": + "Status for maskin og opplasting", + "Machine buffer": + "Maskinens buffer", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Ingen Time Machine-destinasjon er maskinens deling (smb://tm@/CloudMachine) - det tas ingen sikkerhetskopier der. Kommandoen skrives ut av: cloudmachine-agent vm-setup", + "Not running: %@": + "Kjører ikke: %@", + "Not set up": + "Ikke konfigurert", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "Når den er brukt opp, slutter rclone å laste opp, maskinens buffer fylles, og det tas ikke flere sikkerhetskopier. Ved en vekst på ca. 600 MB per timesyklus er det omtrent %@ dager.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "Eller rclone.conf mangler: denne Mac-en har allerede satt opp CloudMachine-maskinen, så den kobles ikke til på nytt i blinde. Gjenopprett filen fra en sikkerhetskopi (maskinen har sin egen kopi i %@). For å koble til likevel, opprett en tom fil på stien som `%@ config file` skriver ut, og kjør på nytt - den eksisterende mappen beholdes.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Pek Time Machine på maskinen: kjør dette i Terminal (krever sudo; Kopier tar med passordet)", + "Points to the machine": + "Peker på maskinen", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Forbereder en omstart: stopper sikkerhetskopieringen, venter en stund på opplasting og stopper deretter maskinen på en ryddig måte.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "Lesing av Time Machine-destinasjonen returnerte ikke innen %@ s. Slik oppfører tmutil seg når destinasjonen henger.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "Remote '%@' ble IKKE erstattet. Den nye påloggingen får omfanget 'drive.file', som bare ser filer opprettet under sitt eget client_id. Den eksisterende sikkerhetskopien ble mest sannsynlig opprettet av den gjeldende tilkoblingen og ville blitt usynlig for den. Før noe skrives, kontrolleres det nye tokenet mot den eksisterende sikkerhetskopien, og erstatningen oppgis hvis det ikke kan se den. Maskinen beholder sin egen kopi av konfigurasjonen til vm-setup --replace-rclone-config. For å gå videre, kjør på nytt med --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Fjernstyring: ÅPEN på Mac-en på 127.0.0.1:5572 - enhver nettside kan sende rclone-kommandoer; se vm/README.md (portForwards)", + "Running": + "Kjører", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone eller punchfs i maskinen er ikke aktiv, så Time Machine har ingen steder å skrive, eller båndene når ikke fram til Google Drive. Kontroller: cloudmachine-agent vm-status", + "Service %@": + "Tjeneste %@", + "Services": + "Tjenester", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "Sett opp CloudMachine-maskinen (første gang lastes Ubuntu ned - flere minutter)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "Sett opp CloudMachine-maskinen på nytt, slik at den skriver ut Time Machine-kommandoen", + "Set up the machine": + "Sett opp maskinen", + "Setting up the CloudMachine machine": + "Setter opp CloudMachine-maskinen", + "Start the CloudMachine machine": + "Start CloudMachine-maskinen", + "Start the machine": + "Start maskinen", + "Starting the CloudMachine machine": + "Starter CloudMachine-maskinen", + "Still to upload: %@ GiB": + "Gjenstår å laste opp: %@ GiB", + "Stopping the Time Machine backup...": + "Stopper sikkerhetskopieringen i Time Machine...", + "Stopping the machine %@...": + "Stopper maskinen %@...", + "The CloudMachine machine does not answer": + "CloudMachine-maskinen svarer ikke", + "The CloudMachine machine is not running": + "CloudMachine-maskinen kjører ikke", + "The CloudMachine machine is not set up yet": + "CloudMachine-maskinen er ikke satt opp ennå", + "The CloudMachine machine is stopped": + "CloudMachine-maskinen er stoppet", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "Sikkerhetskopieringen stoppes, opplastingen får opptil 30 minutter, og deretter slås maskinen av på en ryddig måte. Den starter igjen ved neste pålogging.", + "The machine %@ is not running - nothing to prepare.": + "Maskinen %@ kjører ikke - ingenting å forberede.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "Maskinen er stoppet, og alt nådde fram til Google Drive. Mac-en kan startes på nytt; maskinen starter igjen ved pålogging.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Maskinen er stoppet. %@ GiB hadde ennå ikke nådd fram til Google Drive - de ligger i maskinens buffer og lastes opp etter neste start. Mac-en kan startes på nytt.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Maskinen er stoppet. rclone oppga ikke hvor mye som gjensto å laste opp; det som ikke ble lastet opp, ligger i maskinens buffer og lastes opp etter neste start. Mac-en kan startes på nytt.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "Maskinens disk er en fil på denne disken og vokser etter hvert som opplastingsbufferen fylles. Uten ledig plass kan ikke maskinen skrive bufferen, og lokale øyeblikksbilder fra Time Machine har heller ingen steder å gå.", + "The image's metadata has never been copied to Drive": + "Diskbildets metadata har aldri blitt kopiert til Drive", + "The image's metadata was last copied to Drive %@ ago": + "Diskbildets metadata ble sist kopiert til Drive for %@ siden", + "The machine's disk is running out of space (%@ GB)": + "Maskinens disk er i ferd med å gå tom for plass (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "Den nye påloggingen ser IKKE den eksisterende sikkerhetskopien (%@), så remote '%@' ble IKKE erstattet, og rclone.conf er uendret. Behold den gjeldende tilkoblingen, eller logg på med legitimasjonen (client_id) som opprettet sikkerhetskopien.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "Opplastingsbufferen ligger på denne disken. Vakten setter Time Machine på pause før den fylles; hvis opplastingen ikke tar igjen, forblir sikkerhetskopieringen på pause.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Disse båndene finnes bare i maskinens buffer. Sikkerhetskopien på Google Drive er UFULLSTENDIG og kan hende den ikke kan åpnes.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine tar sikkerhetskopi til maskinen, så uten den tas det ingen sikkerhetskopi. Start den: limactl start %@ (eller Start-knappen i appen).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine stoppet ikke sikkerhetskopieringen innen 2 minutter (eller tmutil svarte ikke) - maskinen ble IKKE stoppet. Prøv igjen om et øyeblikk.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine har opprettet diskbildet sitt: stopp sikkerhetskopieringen, og konverter deretter diskbildet til bånd på 32 MB", + "To upload": + "Skal lastes opp", + "Unknown whether the CloudMachine machine is running": + "Det er ukjent om CloudMachine-maskinen kjører", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Venter på opplasting til Google Drive (maksimalt %@ min.)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "Med --replace-existing: bekrefter at den nye påloggingen (omfanget 'drive.file') kanskje ikke ser den eksisterende sikkerhetskopien. Det nye tokenet kontrolleres fortsatt mot sikkerhetskopien først.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "Uten den finnes det ingen måte å kontrollere om noe nådde fram til Drive - maskinens vakt er da blind.", + "limactl did not answer": + "limactl svarte ikke", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl svarte ikke (eller er ikke installert). Det betyr ikke at maskinen er nede - det betyr at ingen har kontrollert.", + "limactl start failed: %@": + "limactl start mislyktes: %@", + "limactl stop failed: %@": + "limactl stop mislyktes: %@", + "punchfs is close to its open-file limit": + "punchfs nærmer seg grensen for åpne filer", + "punchfs open files": + "Åpne filer i punchfs", + "rclone's remote control is open on this Mac": + "Fjernstyringen til rclone er åpen på denne Mac-en", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') returnerte en feil, så ingen vet om maskinens disk fortsatt kan vokse på denne Mac-en.", + "Google Drive's daily upload limit stops the upload": + "Googles daglige opplastingsgrense stopper opplastingen", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google avviste sist en opplasting for %@ siden (750 GB per dag). Sikkerhetskopier siden da ligger bare i maskinens buffer på denne Mac-en. rclone prøver på nytt hvert 5. minutt og fortsetter av seg selv når grensen er over; vakten setter Time Machine på pause hvis mer enn %@ GiB venter.", + "Usage on Google Drive is not being measured": + "Forbruket på Google Drive måles ikke", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "Den siste målingen (%@ GB) er fra %@, for %@ siden - rclone size har ikke svart siden. Inntil den gjør det, er det ingen som overvåker grensen på %@ GB: alarmene ved 90%% og 100%% forblir stille. Sjekk vm-status, eller trykk på Mål nå i vinduet.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size har ikke svart en eneste gang. Inntil den gjør det, er det ingen som overvåker grensen på %@ GB: alarmene ved 90%% og 100%% forblir stille. Sjekk vm-status, eller trykk på Mål nå i vinduet.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Arkivert i nøkkelringen. Tilkobling av Google Drive (configure-remote) vil bruke dem.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Arkivert i nøkkelringen. Den eksisterende Google Drive-tilkoblingen beholder sitt gamle client_id, og på denne Mac-en bør det forbli slik: en tilkobling opprettet med de nye nøklene (omfanget 'drive.file') kan ikke se sikkerhetskopien som den gamle opprettet. Ikke erstatt tilkoblingen her; de nye nøklene er for en Mac som ikke er tilkoblet ennå.", + "it is not there for the new token": + "den finnes ikke for det nye tokenet", + "Cancel": + "Avbryt", + "ACTION NEEDED": + "HANDLING KREVES", + "WILL PASS BY ITSELF — DO NOTHING": + "GÅR OVER AV SEG SELV — IKKE GJØR NOE", + "UNKNOWN — CHECK AGAIN SHORTLY": + "UKJENT — SJEKK PÅ NYTT OM LITT", + "ALL GOOD": + "ALT ER BRA", + "Upload is not working": + "Opplastingen fungerer ikke", + "Upload stopped — no space left on Google Drive": + "Opplastingen er stoppet — ingen ledig plass på Google Drive", + "%@ backup fragments not uploaded": + "%@ fragmenter av sikkerhetskopien er ikke lastet opp", + "Upload cannot keep up with writes": + "Opplastingen klarer ikke å holde følge med skrivingen", + "Upload paused — Google daily limit": + "Opplastingen er satt på pause — Googles daglige grense", + "Uploading to Google Drive — %@ queued": + "Laster opp til Google Drive — %@ i kø", + "Everything uploaded to Google Drive": + "Alt er lastet opp til Google Drive", + "Unknown what is waiting in the queue": + "Det er ukjent hva som venter i køen", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Det er ingen tilkobling til Google Drive, så sikkerhetskopier tas bare på denne Mac-en. Hvis dette ikke går over av seg selv i løpet av noen få minutter, kontroller nettverket og tilkoblingen til Drive.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Det er ingen ledig plass på Google Drive. Dette går IKKE over av seg selv — du må frigjøre plass på Drive. Inntil da er Time Machine satt på pause, slik at den ikke fyller opp disken på denne Mac-en.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ fragmenter av sikkerhetskopien kunne ikke lastes opp, og rclone har sluttet å prøve. Disse fragmentene finnes bare på denne Mac-en, så sikkerhetskopien på Drive er ufullstendig. Dette må sjekkes.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine skriver raskere enn opplastingen går, og bufferen er full. Sikkerhetskopieringen settes på pause til opplastingen tar igjen — dette er en sikring mot at disken fylles opp, ikke en feil.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google godtar 750 GB per dag, og den grensen er brukt opp. Det er ingenting å gjøre: grensen nullstilles av seg selv, vanligvis i løpet av noen timer. Sikkerhetskopier fra Time Machine tas som normalt i mellomtiden og venter i bufferen — de lastes opp så snart Google godtar data igjen.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ fragmenter av sikkerhetskopien står i kø og er på vei til Drive.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "Ingenting venter i køen — sikkerhetskopien på Google Drive er komplett.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone svarte ikke på spørsmålet om køen, så det er ukjent hvor mange sikkerhetskopier som fortsatt venter på å lastes opp. Dette betyr ikke at noe er ødelagt — under belastning kan svaret komme for sent. Det betyr bare at ingen vet det akkurat nå. Hvis det vedvarer, melder kontrollen av sikkerhetskopisyklusen det.", + "unknown error": + "ukjent feil", + "rclone lsf ended with an error": + "rclone lsf avsluttet med en feil", + "This Mac is close to its space limit on Google Drive": + "Denne Mac-en nærmer seg plassgrensen sin på Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ GB av %@ GB brukt. Time Machine sletter de eldste sikkerhetskopiene for å holde seg innenfor kvoten; kontroller at kvoten er satt (vm-status).", + "This Mac is over its space limit on Google Drive": + "Denne Mac-en har overskredet plassgrensen sin på Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ GB av %@ GB brukt. Angi Time Machine-kvoten (kommandoen i appvinduet eller vm-status), eller øk grensen.", + "not set": + "ikke angitt", + "%@ GB - usage not measured yet": + "%@ GB - forbruket er ikke målt ennå", + "%@ of %@ GB used (%@%%)": + "%@ av %@ GB brukt (%@%%)", + "The limit must be a whole number of GB above zero.": + "Grensen må være et helt tall i GB over null.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "machines.json kan ikke leses, så den ble ikke overskrevet. Rett eller fjern den først.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' er ikke et gyldig mappenavn: bruk små bokstaver, sifre og bindestreker.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Denne Mac-en tar allerede sikkerhetskopi til mappen '%@'. Et bytte til '%@' ville startet en ny, tom sikkerhetskopi og latt den eksisterende bli foreldreløs, så ingenting ble endret.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Denne Mac-en har allerede en CloudMachine-installasjon, med sikkerhetskopien i mappen '%@'. Et bytte til '%@' ville gjort den foreldreløs, så ingenting ble endret.", + "Could not save the folder name to %@: %@": + "Kunne ikke arkivere mappenavnet i %@: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew er ikke installert. Installer det manuelt: https://brew.sh", + "Installing rclone failed: %@": + "Installasjon av rclone mislyktes: %@", + "Installed rclone.": + "rclone er installert.", + "Own Google credentials: set.": + "Egen Google-legitimasjon: angitt.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "UFULLSTENDIG: %@ mangler - rclone bruker likevel rclones delte client_id.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Ingen egen legitimasjon - rclone bruker det delte client_id, som har felles hastighetsbegrensning og fases ut i 2026.", + "Empty value - not saving.": + "Tom verdi - arkiverer ikke.", + "Keychain refused: %@": + "Nøkkelringen avviste: %@", + "DIRTY-TREE": + "SKITTENT-TRE", + "Cannot create the working directory: %@": + "Kan ikke opprette arbeidsmappen: %@", + "Could not read the rclone version number.": + "Kunne ikke lese versjonsnummeret til rclone.", + "Could not download %@.": + "Kunne ikke laste ned %@.", + "No entry for %@ in SHA256SUMS.": + "Ingen oppføring for %@ i SHA256SUMS.", + "Could not compute the checksum.": + "Kunne ikke beregne sjekksummen.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "SHA256-sjekksummen stemmer ikke - installerer IKKE.\n forventet: %@\n beregnet: %@", + "Could not unpack the archive.": + "Kunne ikke pakke ut arkivet.", + "Could not install the binary: %@": + "Kunne ikke installere binærfilen: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %@ er installert i %@ (SHA256-sjekksummen stemmer).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ svarte ikke innen den tillatte tiden (prosessen ble liggende igjen som foreldreløs i bakgrunnen).", + "Cannot launch %@: %@": + "Kan ikke starte %@: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "Remote '%@' finnes allerede og ble IKKE berørt.\nHvis den overskrives, erstattes token og tillatelsesomfang; en legitimasjon med omfanget 'drive.file' ser ikke filer opprettet av den forrige, så den eksisterende sikkerhetskopien blir utilgjengelig.\nHvis du virkelig vil erstatte den, ta først en sikkerhetskopi av ~/.config/rclone/rclone.conf og kjør på nytt med --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "Kunne ikke kontrollere om remote '%@' allerede finnes (rclone listremotes svarte ikke eller mislyktes), så ingenting ble endret. Kjør `%@ listremotes` for å se feilen, og prøv deretter igjen.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "Kunne ikke kontrollere om denne Mac-en allerede har en CloudMachine-installasjon (rclone svarte ikke), så ingen mappe ble valgt. Prøv igjen om et øyeblikk.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize mislyktes (%@). Hvis binærfilen mangler, start med: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "Kunne ikke lese tokenet fra utdataene til rclone authorize.", + "rclone config create failed.": + "rclone config create mislyktes.", + "Connected to Google Drive as remote '%@', folder %@.": + "Tilkoblet Google Drive som remote '%@', mappe %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil svarer ikke - det er ukjent hvor sikkerhetskopien havner", + "No successful backup for %@": + "Ingen vellykket sikkerhetskopi på %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Siste FULLFØRTE sikkerhetskopi: %@. Syklusen er hver time, så det er %@ oversette kjøringer.", + "There is NOT A SINGLE successful backup": + "Det finnes IKKE EN ENESTE vellykket sikkerhetskopi", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Time Machine-innstillingene inneholder ingen dato for en fullført sikkerhetskopi til denne destinasjonen.", + "The last backup attempt did not end in a backup": + "Det siste forsøket på sikkerhetskopiering endte ikke i en sikkerhetskopi", + "The attempt at %@ is newer than the last successful backup at %@.": + "Forsøket kl. %@ er nyere enn den siste vellykkede sikkerhetskopien kl. %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine melder en feil i den siste kjøringen (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Et RESULT som ikke er null i Time Machine-innstillingene betyr at kjøringen ikke lyktes.", + "rclone failed to upload %@ files": + "rclone klarte ikke å laste opp %@ filer", + "Buffer full of nothing but unsent data": + "Bufferen er full av data som ikke er sendt", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone har ingenting igjen å fjerne fra bufferen - opplastingen klarer ikke å holde følge eller har stoppet opp.", + "The rclone control interface is not responding": + "Kontrollgrensesnittet til rclone svarer ikke", + "Google Drive is running out of space (%@ GB)": + "Google Drive er i ferd med å gå tom for plass (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Disken på Mac-en er i ferd med å gå tom for plass (%@ GB)", + "Cannot read the Time Machine preferences": + "Kan ikke lese Time Machine-innstillingene", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ kan ikke leses - oftest mangler Full disktilgang. Uten denne filen er det UKJENT når den siste sikkerhetskopien ble tatt, så vi behandler det som en feil og ikke som fravær av et problem.", + "Cannot measure free space on the Mac's disk": + "Kan ikke måle ledig plass på disken til Mac-en", + "%@ days": + "%@ dager", + "CloudMachine: backup is not working": + "CloudMachine: sikkerhetskopieringen fungerer ikke", + "unknown reason": + "ukjent årsak", + "osascript did not show the notification (permissions or no graphical session)": + "osascript viste ikke varselet (tillatelser eller ingen grafisk økt)", + "UNDELIVERED ALARM: %@": + "IKKE LEVERT ALARM: %@", + "from %@, reason: %@": + "fra %@, årsak: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "Systemvarselet ble ikke levert - du ser denne alarmen KUN her.", + "%@ (%@ ago)": + "%@ (%@ siden)", + "%@ - marker from the FUTURE": + "%@ - markør fra FREMTIDEN", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (%@ siden) - VAKTHUNDEN KJØRER KANSKJE IKKE", + "NEVER - the watchdog has not recorded a single run": + "ALDRI - vakthunden har ikke registrert en eneste kjøring", + "Could not find the launchd/ directory with templates.": + "Kunne ikke finne mappen launchd/ med maler.", + "Could not find the compiled cloudmachine-agent binary.": + "Kunne ikke finne den kompilerte binærfilen cloudmachine-agent.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "AVBRUTT: kunne ikke plassere cloudmachine-agent på et stabilt sted\n(%@) - oftest mangel på plass eller tillatelser.\nInstallerer IKKE agenter som peker på %@: den stien\nforsvinner ved neste `swift build` eller `git clean`, og sikkerhetskopieringen stopper\nuten noe synlig signal.", + "ABORTED: %@": + "AVBRUTT: %@", + "Could not list the templates in %@.": + "Kunne ikke liste malene i %@.", + "could not read the template %@": + "kunne ikke lese malen %@", + "could not write %@ (lack of space or permissions)": + "kunne ikke skrive %@ (mangel på plass eller tillatelser)", + "launchctl load refused to load %@": + "launchctl load nektet å laste %@", + "NOT A SINGLE agent was loaded.": + "INGEN ENESTE agent ble lastet.", + "Only these went in: %@.": + "Bare disse ble installert: %@.", + "Could not load any launchd agent.": + "Kunne ikke laste noen launchd-agent.", + "Installed agents: %@": + "Installerte agenter: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " ADVARSEL: nær grensen - nye bånd vil mislykkes med EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands på Google Drive er ikke tom - den kan inneholde en annen sikkerhetskopi. Overskriver den IKKE; kontroller den manuelt.", + "Address: %@": + "Adresse: %@", + "Already prepared (%@ exists) - nothing to do.": + "Allerede forberedt (%@ finnes) - ingenting å gjøre.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Konverterer Time Machines nye, tomme diskbilde i maskinen til bånd på 32 MB og flytter båndene til Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "Kopier rclone.conf inn i maskinen selv om den allerede har en.", + "Copying the converted image into the machine failed: %@": + "Kopiering av det konverterte diskbildet inn i maskinen mislyktes: %@", + "Copying the image to the Mac failed: %@": + "Kopiering av diskbildet til Mac-en mislyktes: %@", + "Could not ask Lima about the machine: %@": + "Kunne ikke spørre Lima om maskinen: %@", + "Could not carry the Time Machine files over: %@": + "Kunne ikke overføre Time Machine-filene: %@", + "Could not check the image in the machine.": + "Kunne ikke kontrollere diskbildet i maskinen.", + "Could not copy the rclone configuration into the machine.": + "Kunne ikke kopiere rclone-konfigurasjonen inn i maskinen.", + "Could not create %@ on Google Drive: %@": + "Kunne ikke opprette %@ på Google Drive: %@", + "Could not create %@: %@": + "Kunne ikke opprette %@: %@", + "Could not find the vm/ directory with the machine template.": + "Kunne ikke finne mappen vm/ med maskinmalen.", + "Could not read the image size.": + "Kunne ikke lese størrelsen på diskbildet.", + "Could not set the SMB password of user %@ in the machine.": + "Kunne ikke angi SMB-passordet til brukeren %@ i maskinen.", + "Could not stop smbd in the machine.": + "Kunne ikke stoppe smbd i maskinen.", + "Could not write %@ in the machine.": + "Kunne ikke skrive %@ i maskinen.", + "Could not write the password file %@.": + "Kunne ikke skrive passordfilen %@.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "Oppretter eller starter CloudMachine-maskinen (Lima), gir den rclones konfigurasjon og et SMB-passord og skriver ut Time Machine-kommandoen.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "Oppretter maskinen %@ (første start laster ned Ubuntu og installerer pakker - flere minutter)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Ferdig: %@ har bånd på %@ MB på Google Drive; originalen oppbevares i %@ i maskinen. Start sikkerhetskopieringen: tmutil startbackup", + "exit code %@, no message": + "avslutningskode %@, ingen melding", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Diskbildemetadata: ALDRI kopiert til %@ - sjekk tm-meta-sync i maskinen", + "Image metadata: copied %@ ago to %@": + "Diskbildemetadata: kopiert for %@ siden til %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Diskbildemetadata: sist kopiert for %@ siden - FORSINKET (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Diskbildemetadata: ikke kopiert ennå - venter på vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "Sikkerhetskopi %@, satt på pause av vakten %@: %@", + "Free in machine: %@ GiB": + "Ledig i maskinen: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n fant problemer: %@", + "Google Drive folder: %@": + "Google Drive-mappe: %@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach av det konverterte diskbildet mislyktes: %@", + "hdiutil convert failed: %@": + "hdiutil convert mislyktes: %@", + "Image name in the machine (default: from the computer name).": + "Navnet på diskbildet i maskinen (standard: avledet av datamaskinens navn).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "Installasjon av det konverterte diskbildet MISLYKTES: %@\nsmbd er lagt igjen STOPPET, slik at Time Machine ikke åpner et halvt installert diskbilde. Originalen ligger i %@ i maskinen.", + "limactl create failed: %@": + "limactl create mislyktes: %@", + "limactl list failed: %@": + "limactl list mislyktes: %@", + "limactl not found - install Lima: brew install lima": + "limactl ble ikke funnet - installer Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start mislyktes: %@\nMaskinens egen logg: %@", + "Machine %@ is running.": + "Maskinen %@ kjører.", + "Machine %@ was already running.": + "Maskinen %@ kjørte allerede.", + "Machine: %@ (%@)": + "Maskin: %@ (%@)", + "Machine: %@": + "Maskin: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Maskin: ikke opprettet - kjør: cloudmachine-agent vm-setup", + "no answer within the time limit": + "ingen svar innen tidsgrensen", + "No image %@ in the machine.": + "Ingen diskbilde %@ i maskinen.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "Ingen diskbilde i maskinen ennå - pek Time Machine på delingen, og la den opprette ett først.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "Ingen rclone-konfigurasjon i %@ - koble først til Google Drive (configure-remote).", + "no SMB destination": + "ingen SMB-destinasjon", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "Én kontroll av maskinens opplastingsbuffer: setter Time Machine på pause når den fylles, og gjenopptar det den satte på pause.", + "Packing the converted image failed: %@": + "Pakking av det konverterte diskbildet mislyktes: %@", + "Packing the image failed: %@": + "Pakking av diskbildet mislyktes: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "Ingen svar fra maskinen (rclone rc) - vakten ville ikke gjort noe.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Skriv bare ut hva vakten ville bestemt - for å prøve terskler på en engangsmaskin.", + "Pause above this many GiB in the buffer.": + "Sett på pause over så mange GiB i bufferen.", + "Pause when the machine has less free than this, in GiB.": + "Sett på pause når maskinen har mindre ledig plass enn dette, i GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Pek Time Machine på maskinen (én gang, krever et administratorpassord):", + "punchfs files: %@ open, limit %@": + "punchfs-filer: %@ åpne, grense %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "rclone-konfigurasjonen finnes allerede i maskinen - beholdt (--replace-rclone-config erstatter den).", + "rclone configuration copied into the machine.": + "rclone-konfigurasjonen er kopiert inn i maskinen.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm eller punchfs kjører ikke i maskinen - se cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Gjenoppta under så mange GiB (bare en sikkerhetskopi som vakten satte på pause).", + "Service %@: %@": + "Tjeneste %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "Flere diskbilder i maskinen (%@) - velg ett med --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Viser maskinen: adresse, tjenester, opplastingsbuffer, ledig plass og Time Machine-destinasjonen.", + "SMB password stored in %@ (mode 600).": + "SMB-passordet er arkivert i %@ (modus 600).", + "The converted image does not have %@-byte bands.": + "Det konverterte diskbildet har ikke bånd på %@ byte.", + "The converted image has no APFS partition.": + "Det konverterte diskbildet har ingen APFS-partisjon.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "Diskbildet tar allerede %@ MB - denne kommandoen konverterer bare et nytt, tomt diskbilde (under %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "Diskbildet er kryptert - konvertering av krypterte diskbilder støttes ikke.", + "The image was not changed; smbd started again.": + "Diskbildet ble ikke endret; smbd startet igjen.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "Maskinen svarer ikke - kjører den? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "Maskinen har ingen adresse på vzNAT-nettverket.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "Tjenestene i maskinen startet ikke - kontroller: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine tar sikkerhetskopi - stopp den først: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: PEKER IKKE på maskinen (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil svarte ikke", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil svarte ikke - rører ikke diskbildet mens tilstanden er ukjent.", + "unknown": + "ukjent", + "Unpacking the image failed: %@": + "Utpakking av diskbildet mislyktes: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "Gjenstår å laste opp: %@ GiB i %@ bånd, laster opp %@ (hurtigbuffer på disk %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "%@ (maskinen og opplastingsbufferen) er utelatt fra Time Machine.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "ADVARSEL: kunne ikke utelate %@ fra Time Machine - kjør: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Opplastingsbuffer: ingen svar fra rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Når Time Machine har opprettet det tomme diskbildet sitt, stopp sikkerhetskopieringen (tmutil stopbackup) og kjør: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "Ikke sendt %@ GiB, ledig %@ GiB (pause over %@ GiB ikke sendt eller under %@ GiB ledig, gjenoppta under %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Opplasting: Googles daglige grense avviste en opplasting for %@ siden - rclone prøver på nytt hvert 5. minutt og fortsetter av seg selv", + "no": + "nei", + "running": + "kjører", + "stopped": + "stoppet", + "yes": + "ja", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nDen forrige malen ligger i %@ - kopier den tilbake over lima.yaml, og kjør limactl start %@.", + "Could not read this app's machine template (limactl template copy).": + "Kunne ikke lese maskinmalen til denne appen (limactl template copy).", + "Could not replace %@: %@": + "Kunne ikke erstatte %@: %@", + "Machine %@ already runs this app's template.": + "Maskinen %@ kjører allerede malen til denne appen.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "Maskinen %@ kjører nå malen til denne appen; den forrige ligger i %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Flytter maskinen over til malen til denne appen (to omstarter, aldri under en sikkerhetskopiering).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "Ingen maskin %@ - opprett den med: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Mal: ELDRE enn denne appens - kjør: cloudmachine-agent vm-update", + "Template: not compared": + "Mal: ikke sammenlignet", + "Template: this app's": + "Mal: denne appens", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "Maskinen har ingen %@ - kjør cloudmachine-agent vm-setup først.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "Maskinen ble startet på nytt, men ikke alle tjenester kjører - kontroller: cloudmachine-agent vm-status. Den forrige malen ligger i %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "Malen endrer selve maskinen (%@) - det krever en ny maskin, ikke en oppdatering.", + "The upload to Google Drive hangs": + "Opplastingen til Google Drive henger", + "Time Machine is backing up - try again when it has finished.": + "Time Machine tar sikkerhetskopi - prøv igjen når den er ferdig.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Opplasting: HENGER - bånd pågår, ingen lastet opp på %@ (nettverk?); se /var/log/rclone-tm.log i maskinen", + "limactl stop failed - nothing was changed.": + "limactl stop mislyktes - ingenting ble endret.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone har bånd under behandling, men ingen er lastet opp på %@ - vanligvis en brutt nettverkstilkobling, som rclone ikke melder som en feil. Sikkerhetskopier siden da ligger bare i maskinens buffer. Når nettverket kommer tilbake, fortsetter opplastingen av seg selv (den 28.10.2026 innen 80 s); hvis ikke, fjerner en omstart av maskinen (prepare-shutdown, limactl start) de døde tilkoblingene.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil svarte ikke - starter ikke maskinen på nytt mens tilstanden er ukjent.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+nl.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+nl.swift new file mode 100644 index 0000000..3e23a14 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+nl.swift @@ -0,0 +1,951 @@ +// Dutch translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let nl: [String: String] = [ + "Space limit: %@": + "Ruimtelimiet: %@", + " Time Machine quota not set to match - run: %@": + " Time Machine-quotum niet hierop afgestemd - voer uit: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Stelt in hoeveel van Google Drive deze Mac mag gebruiken en toont het commando voor het Time Machine-quotum.", + "Limit in GB.": + "Limiet in GB.", + "Limit for this Mac: %@ GB.": + "Limiet voor deze Mac: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Stel nu het Time Machine-quotum in (beheerderswachtwoord vereist):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - controle, Google Drive-configuratie en installatie. Wordt volgens schema door launchd aangeroepen, of handmatig in Terminal.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "Maakt via rclone verbinding met Google Drive (OAuth in de browser) en maakt de map van deze machine aan.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Overschrijf de bestaande remote. RISKANT: vervangt het token en de rechten.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "Verpakt build/CloudMachine.app in build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "FOUT: %@ ontbreekt - voer eerst 'cloudmachine-agent build-app' uit", + "==> Preparing the staging folder": + "==> Opbouwmap voorbereiden", + "==> Creating %@": + "==> %@ aanmaken", + "ERROR: hdiutil exited with code %@.": + "FOUT: hdiutil is beëindigd met code %@.", + "==> Done: %@": + "==> Klaar: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "Bij de eerste start (de app is niet ondertekend met een Apple Developer-account):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. Open %@ en sleep CloudMachine.app naar Programma's.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. Klik in de Finder met de RECHTERmuisknop op CloudMachine.app -> Open -> Open\n (bij een gewone dubbelklik verschijnt de Gatekeeper-blokkade \"niet-geïdentificeerde ontwikkelaar\").", + "3. Later launches work normally, with a double-click.": + "3. Latere starts werken gewoon, met een dubbelklik.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "Bouwt CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ en config/ als bronnen.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Binaire bestanden voor Apple Silicon en Intel tegelijk (zo bouwt CI een release; lokaal overbodig).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> CloudMachineApp + cloudmachine-agent bouwen (release) - versie %@ (%@)", + "ERROR: swift build exited with code %@.": + "FOUT: swift build is beëindigd met code %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "FOUT: swift build --show-bin-path gaf de map met de binaire bestanden niet door.", + "ERROR: no built binary found at %@": + "FOUT: geen gebouwd binair bestand gevonden op %@", + "==> Assembling the .app bundle in %@": + "==> De .app-bundel samenstellen in %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> WAARSCHUWING: je bouwt vanuit een VUILE boom - de versie verwijst niet naar een commit.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "FOUT: Resources/AppIcon.icns ontbreekt - genereer het met: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Ondertekenen met het lokale certificaat '%@' (Volledige schijftoegang blijft behouden bij latere builds)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Ad-hoc ondertekenen (geen Apple Developer-account) - voer eenmalig 'cloudmachine-agent setup-signing-cert' uit, zodat TCC-rechten latere builds overleven", + "ERROR: codesign exited with code %@.": + "FOUT: codesign is beëindigd met code %@.", + "Next step: %@": + "Volgende stap: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Maakt een lokaal zelfondertekend certificaat aan, zodat Volledige schijftoegang latere builds van de app overleeft.", + "Certificate '%@' already exists in %@, nothing to do.": + "Certificaat '%@' bestaat al in %@, niets te doen.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Sleutel en zelfondertekend certificaat '%@' genereren...", + "ERROR: openssl req exited with code %@.": + "FOUT: openssl req is beëindigd met code %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "FOUT: openssl pkcs12 is beëindigd met code %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Certificaat importeren in %@ (/usr/bin/codesign vooraf autoriseren, zodat niet elke keer om het wachtwoord van de sleutelhanger wordt gevraagd)...", + "ERROR: security import exited with code %@.": + "FOUT: security import is beëindigd met code %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> Certificaat ALLEEN vertrouwen voor het ondertekenen van code...", + "ERROR: security add-trusted-cert exited with code %@.": + "FOUT: security add-trusted-cert is beëindigd met code %@.", + "Done. Certificate '%@' is now available to codesign.": + "Klaar. Certificaat '%@' is nu beschikbaar voor codesign.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "De volgende 'cloudmachine-agent build-app' gebruikt het automatisch in plaats van een ad-hoc-handtekening.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "Geef na DIE ENE herbouw Volledige schijftoegang nog een laatste keer - latere\nherbouwen zetten het niet meer terug, zolang je met hetzelfde certificaat ondertekent.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Controleert of de uurlijkse cyclus NOG werkt (datum van de laatste GESLAAGDE back-up) en meldt fouten.", + "After this many hours without a successful backup we consider the cycle broken.": + "Na zoveel uur zonder geslaagde back-up beschouwen we de cyclus als stuk.", + "Only print the state, without a system notification.": + "Toon alleen de status, zonder systeemmelding.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "Een ander voorkeurenbestand van Time Machine - om de waakhond op een bekend voorbeeld te testen.", + "Last successful backup: %@": + "Laatste geslaagde back-up: %@", + "Last successful backup: NONE": + "Laatste geslaagde back-up: GEEN", + "Last attempt: %@": + "Laatste poging: %@", + "WAITING (system startup): %@": + "WACHT (systeemstart): %@", + "Backup cycle: OK": + "Back-upcyclus: OK", + "FAILURE: %@": + "STORING: %@", + " %@": + " %@", + "Check the state: %@": + "Status controleren: %@", + "Preparing for restart": + "Voorbereiden op herstart", + "Prepare for restart": + "Voorbereiden op herstart", + "Prepare": + "Voorbereiden", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> WAARSCHUWING: git rev-list is mislukt (%@) - de datum wordt als buildnummer gebruikt.", + "Agents: %@": + "Agents: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "KAN NIET STARTEN: %@ - open CloudMachine of voer backup-health uit om ze opnieuw te laden", + "Reloaded agents that could not start: %@": + "Agents opnieuw geladen die niet konden starten: %@", + "Drive folder: %@": + "Drive-map: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Naam van de map van deze Mac op Google Drive (standaard afgeleid van de computernaam). Eenmalig in te stellen; later niet meer te wijzigen.", + "Backup watchdog: %@": + "Back-upwaakhond: %@", + "Prints the version, the build number and the commit this binary was built from.": + "Toont de versie, het buildnummer en de commit waaruit dit binaire bestand is gebouwd.", + "Only one line, without a description.": + "Slechts één regel, zonder beschrijving.", + "Build from the working tree (outside a bundle) - no version data.": + "Build vanuit de werkmap (buiten een bundel) - geen versiegegevens.", + "Version: %@": + "Versie: %@", + "Build: %@": + "Build: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "WAARSCHUWING: gebouwd vanuit een VUILE boom - het binaire bestand bevat code die\n in geen enkele commit zit. Het commitnummer beschrijft NIET\n wat er werkelijk draait.", + "Saving the space limit": + "Ruimtelimiet opslaan", + "Measuring usage on Google Drive": + "Gebruik op Google Drive meten", + "Google Drive did not answer - try again later.": + "Google Drive heeft niet geantwoord - probeer het later opnieuw.", + "Measured.": + "Gemeten.", + "Space limit for this Mac": + "Ruimtelimiet voor deze Mac", + "Used on Google Drive": + "Gebruikt op Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "Gemeten %@. De waakhond meet om de paar uur opnieuw.", + "Limit (GB)": + "Limiet (GB)", + "Save": + "Bewaar", + "Measure now": + "Nu meten", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Time Machine-quotum: %@ GB (70%% van de limiet - de kopie op Drive is ongeveer een derde groter dan de back-up erin). Time Machine verwijdert de oudste back-ups om daaronder te blijven.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Stel het Time Machine-quotum in: voer dit uit in Terminal (sudo vereist)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Verbind Google Drive: voer dit uit in Terminal en keur het goed in de browser", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "Geef CloudMachine Volledige schijftoegang, zodat het kan zien of back-ups voltooid zijn", + "Folder on Google Drive": + "Map op Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Eén map per Mac. Eenmalig in te stellen - na het verbinden niet meer te wijzigen.", + "Use lowercase letters, digits and dashes.": + "Gebruik kleine letters, cijfers en streepjes.", + "Install rclone": + "rclone installeren", + "Open System Settings": + "Systeeminstellingen openen", + "Install agents": + "Agents installeren", + "not checked": + "niet gecontroleerd", + "none at all": + "helemaal geen", + "%@ ago": + "%@ geleden", + "Missing: %@": + "Ontbreekt: %@", + "Google Drive not connected": + "Google Drive niet verbonden", + "Time Machine does not point to CloudMachine": + "Time Machine verwijst niet naar CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "ONBEKEND of Time Machine naar CloudMachine verwijst - tmutil heeft niet geantwoord", + "Backup in progress": + "Back-up bezig", + "Unknown when the last backup was made": + "Onbekend wanneer de laatste back-up is gemaakt", + "There is no completed backup at all": + "Er is helemaal geen voltooide back-up", + "No completed backup for %@": + "Geen voltooide back-up sinds %@", + "Ready": + "Gereed", + "Not saved: %@": + "Niet bewaard: %@", + "Installing rclone": + "rclone installeren", + "Installing launchd agents": + "launchd-agents installeren", + "Starting backup": + "Back-up starten", + "Backup started.": + "Back-up gestart.", + "Could not start the backup.": + "Kon de back-up niet starten.", + "Stopping backup": + "Back-up stoppen", + "Backup stopped.": + "Back-up gestopt.", + "Could not stop the backup.": + "Kon de back-up niet stoppen.", + "Could not prepare the AppleScript.": + "Kon het AppleScript niet voorbereiden.", + "Unknown authorization error.": + "Onbekende autorisatiefout.", + "Waiting to upload": + "Wacht op upload", + "%@ files": + "%@ bestanden", + "nothing": + "niets", + "Back up now": + "Nu back-uppen", + "Stop backup": + "Back-up stoppen", + "Open CloudMachine": + "CloudMachine openen", + "Quit": + "Stop", + "Healthy": + "In orde", + "Attention": + "Let op", + "Refreshed %@": + "Vernieuwd %@", + "System Status": + "Systeemstatus", + "Action needed": + "Actie nodig", + "not measured": + "niet gemeten", + "rclone did not answer": + "rclone heeft niet geantwoord", + "Backup in Progress": + "Back-up bezig", + "Files processed": + "Verwerkte bestanden", + "Write speed": + "Schrijfsnelheid", + "Operation phase": + "Fase van de bewerking", + "Required Setup Steps": + "Vereiste configuratiestappen", + "Copy": + "Kopieer", + "Last completed backup": + "Laatste voltooide back-up", + "Last backup watchdog run": + "Laatste run van de back-upwaakhond", + "not read": + "niet gelezen", + "Everything uploaded": + "Alles geüpload", + "File upload errors": + "Fouten bij het uploaden van bestanden", + "Google Drive Credentials (OAuth 2.0)": + "Google Drive-inloggegevens (OAuth 2.0)", + "Keychain OK": + "Sleutelhanger OK", + "No custom keys": + "Geen eigen sleutels", + "Paste client_id...": + "Plak client_id...", + "Paste client_secret...": + "Plak client_secret...", + "Save securely in the Keychain": + "Veilig bewaren in de sleutelhanger", + "Refresh": + "Vernieuw", + "Overview": + "Overzicht", + "Backups": + "Back-ups", + "Storage": + "Opslag", + "Settings": + "Instellingen", + "Current status: %@": + "Huidige status: %@", + "Does not point to CloudMachine": + "Verwijst niet naar CloudMachine", + "tmutil did not answer": + "tmutil heeft niet geantwoord", + "Backing up: %@ of %@": + "Back-up: %@ van %@", + "%@ of %@": + "%@ van %@", + "Copied": + "Gekopieerd", + "No backup is running": + "Er loopt geen back-up", + "Time Machine starts the next one on its own schedule.": + "Time Machine start de volgende volgens zijn eigen schema.", + "Backup cycle": + "Back-upcyclus", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB in %@ bands, %@ worden geüpload", + "%@ bands": + "%@ bands", + "%@ fragments abandoned - only in the machine": + "%@ fragmenten opgegeven - alleen in de machine aanwezig", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 antwoordt op de Mac: Lima stuurt de rclone-afstandsbediening van de machine door, die geen wachtwoord heeft. Elke webpagina die in een browser openstaat kan er commando's naartoe sturen - ook om de back-up op Google Drive te verwijderen. Voeg de portForwards-regel uit vm/cmsmb.yaml toe aan de machine en start hem opnieuw op (zie vm/README.md).", + "A service in the CloudMachine machine is not running": + "Een service in de CloudMachine-machine draait niet", + "Address": + "Adres", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Installatie van agents ONVOLLEDIG - %@ van %@ zijn er niet in gekomen:\n%@\n%@\nElke ontbrekende agent is een functie die ongemerkt is gestopt (vm-guard bewaakt de buffer van de machine, backup-health meldt fouten). Los de oorzaak op en herhaal de installatie.", + "All running": + "Alles draait", + "Also install the launchd agents (same as install-launchd).": + "Installeer ook de launchd-agents (hetzelfde als install-launchd).", + "At most this many minutes of waiting for the upload.": + "Wacht hoogstens zoveel minuten op de upload.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "Bij de limiet mislukt elke nieuwe band met EMFILE en stopt de back-up. Controleer: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Cache op de schijf van de machine", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Verbonden met Google Drive, maar de map '%@' kon niet worden aangemaakt - zonder die map kan de machine de back-up nergens bewaren. Controleer de rechten van het account en probeer het opnieuw.", + "Convert the image": + "Image converteren", + "Converting the image to 32 MB bands": + "Image converteren naar bands van 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "Met de huidige verbinding kon niet worden gecontroleerd of de back-up op Google Drive staat (%@), dus remote '%@' is NIET vervangen: zonder dat antwoord kan de nieuwe aanmelding er niet mee worden vergeleken.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Downloadt het officiële rclone-binaire bestand naar ~/.cloudmachine/bin (Google-aanmelding en de rclone.conf van de machine).", + "Free in the machine": + "Vrij in de machine", + "Free in the machine: %@": + "Vrij in de machine: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "Genereert en installeert de launchd-agents (app, back-upwaakhond, machinestart, machinebewaker).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "Installeer Lima, waarmee de CloudMachine-machine draait: voer dit uit in Terminal", + "Install rclone (signs in to Google Drive for the machine)": + "Installeer rclone (meldt de machine aan bij Google Drive)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Installeer de achtergrondagents (machinestart, bufferbewaker, back-upwaakhond)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Installeert rclone via Homebrew - CloudMachine zelf gebruikt de versie uit install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, token en mapped/ van de back-upimage bestaan alleen op de schijf van de machine; zonder die bestanden zijn de bands in %@ niet te herstellen. De kopie (tm-meta-sync, elke 15 min) gaat naar %@. Controleer: cloudmachine-agent vm-status, en daarna in de machine: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima meldt dat de machine draait, maar een commando erin is niet teruggekeerd. Zonder dat commando is er niets bekend over Samba, rclone of de upload. Controleer: cloudmachine-agent vm-status", + "Machine": + "Machine", + "Machine %@": + "Machine %@", + "Machine & Upload Status": + "Status van machine en upload", + "Machine buffer": + "Buffer van de machine", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Geen enkele Time Machine-bestemming is de share van de machine (smb://tm@
/CloudMachine) - daar worden geen back-ups gemaakt. Het commando wordt getoond door: cloudmachine-agent vm-setup", + "Not running: %@": + "Draait niet: %@", + "Not set up": + "Niet ingesteld", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "Zodra die op is, stopt rclone met uploaden, loopt de buffer van de machine vol en worden er geen back-ups meer gemaakt. Bij een groei van ~600 MB per uurlijkse cyclus is dat ongeveer %@ dagen.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "Of rclone.conf ontbreekt: deze Mac heeft de CloudMachine-machine al ingesteld, dus er wordt niet blind opnieuw verbonden. Herstel het bestand uit een back-up (de machine bewaart een eigen kopie in %@). Om toch te verbinden, maak je een leeg bestand aan op het pad dat `%@ config file` toont en voer je het opnieuw uit - de bestaande map blijft behouden.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Richt Time Machine op de machine: voer dit uit in Terminal (sudo vereist; Kopieer bevat het wachtwoord)", + "Points to the machine": + "Verwijst naar de machine", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Bereidt een herstart voor: stopt de back-up, wacht even op de upload en zet de machine daarna netjes uit.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "Het lezen van de Time Machine-bestemming kwam niet binnen %@ s terug. Zo gedraagt tmutil zich als de bestemming blijft hangen.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "Remote '%@' is NIET vervangen. De nieuwe aanmelding krijgt de scope 'drive.file', die alleen bestanden ziet die onder zijn eigen client_id zijn gemaakt. De bestaande back-up is hoogstwaarschijnlijk door de huidige verbinding gemaakt en zou er onzichtbaar voor worden. Voordat er iets wordt geschreven, wordt het nieuwe token met de bestaande back-up vergeleken, en de vervanging wordt afgebroken als het die niet kan zien. De machine houdt een eigen kopie van de configuratie tot vm-setup --replace-rclone-config. Om door te gaan, voer je het opnieuw uit met --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Afstandsbediening: OPEN op de Mac op 127.0.0.1:5572 - elke webpagina kan rclone-commando's sturen; zie vm/README.md (portForwards)", + "Running": + "Draait", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone of punchfs in de machine is niet actief, dus Time Machine kan nergens naartoe schrijven of de bands bereiken Google Drive niet. Controleer: cloudmachine-agent vm-status", + "Service %@": + "Service %@", + "Services": + "Services", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "Stel de CloudMachine-machine in (de eerste keer wordt Ubuntu gedownload - enkele minuten)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "Stel de CloudMachine-machine opnieuw in, zodat het Time Machine-commando wordt getoond", + "Set up the machine": + "Machine instellen", + "Setting up the CloudMachine machine": + "CloudMachine-machine instellen", + "Start the CloudMachine machine": + "Start de CloudMachine-machine", + "Start the machine": + "Machine starten", + "Starting the CloudMachine machine": + "CloudMachine-machine starten", + "Still to upload: %@ GiB": + "Nog te uploaden: %@ GiB", + "Stopping the Time Machine backup...": + "Time Machine-back-up stoppen...", + "Stopping the machine %@...": + "Machine %@ stoppen...", + "The CloudMachine machine does not answer": + "De CloudMachine-machine antwoordt niet", + "The CloudMachine machine is not running": + "De CloudMachine-machine draait niet", + "The CloudMachine machine is not set up yet": + "De CloudMachine-machine is nog niet ingesteld", + "The CloudMachine machine is stopped": + "De CloudMachine-machine is gestopt", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "De back-up wordt gestopt, de upload krijgt maximaal 30 minuten en daarna wordt de machine netjes uitgezet. Bij de volgende aanmelding start hij weer.", + "The machine %@ is not running - nothing to prepare.": + "De machine %@ draait niet - er valt niets voor te bereiden.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "De machine is gestopt en alles heeft Google Drive bereikt. De Mac kan opnieuw worden opgestart; de machine start weer bij het aanmelden.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "De machine is gestopt. %@ GiB had Google Drive nog niet bereikt - dit blijft in de buffer van de machine staan en wordt na de volgende start geüpload. De Mac kan opnieuw worden opgestart.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "De machine is gestopt. rclone meldde niet hoeveel er nog te uploaden was; wat niet is geüpload blijft in de buffer van de machine staan en wordt na de volgende start geüpload. De Mac kan opnieuw worden opgestart.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "De schijf van de machine is een bestand op deze schijf en groeit naarmate de uploadbuffer vol raakt. Zonder vrije ruimte kan de machine de buffer niet schrijven, en ook de lokale snapshots van Time Machine kunnen nergens heen.", + "The image's metadata has never been copied to Drive": + "De metadata van de image zijn nog nooit naar Drive gekopieerd", + "The image's metadata was last copied to Drive %@ ago": + "De metadata van de image zijn voor het laatst %@ geleden naar Drive gekopieerd", + "The machine's disk is running out of space (%@ GB)": + "De schijf van de machine raakt vol (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "De nieuwe aanmelding ziet de bestaande back-up NIET (%@), dus remote '%@' is NIET vervangen en rclone.conf is ongewijzigd. Houd de huidige verbinding aan, of meld je aan met de inloggegevens (client_id) waarmee de back-up is gemaakt.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "De uploadbuffer staat op deze schijf. De bewaker pauzeert Time Machine voordat hij vol raakt; als de upload niet inhaalt, blijven back-ups gepauzeerd.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Deze bands bestaan alleen in de buffer van de machine. De back-up op Google Drive is ONVOLLEDIG en is mogelijk niet te openen.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine maakt back-ups naar de machine, dus zonder de machine wordt er geen back-up gemaakt. Start hem met: limactl start %@ (of met de knop Machine starten in de app).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine heeft zijn back-up niet binnen 2 minuten gestopt (of tmutil heeft niet geantwoord) - de machine is NIET gestopt. Probeer het zo meteen opnieuw.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine heeft zijn image gemaakt: stop de back-up en converteer de image daarna naar bands van 32 MB", + "To upload": + "Te uploaden", + "Unknown whether the CloudMachine machine is running": + "Onbekend of de CloudMachine-machine draait", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Wachten op de upload naar Google Drive (hoogstens %@ min)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "Met --replace-existing: bevestigt dat de nieuwe aanmelding (scope 'drive.file') de bestaande back-up mogelijk niet ziet. Het nieuwe token wordt eerst nog steeds met de back-up vergeleken.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "Zonder dit is er geen manier om te controleren of er iets Drive heeft bereikt - de bewaker van de machine is dan blind.", + "limactl did not answer": + "limactl heeft niet geantwoord", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl heeft niet geantwoord (of is niet geïnstalleerd). Dat betekent niet dat de machine uit is - het betekent dat niemand het heeft gecontroleerd.", + "limactl start failed: %@": + "limactl start mislukt: %@", + "limactl stop failed: %@": + "limactl stop mislukt: %@", + "punchfs is close to its open-file limit": + "punchfs zit dicht tegen zijn limiet voor open bestanden aan", + "punchfs open files": + "Open bestanden van punchfs", + "rclone's remote control is open on this Mac": + "De afstandsbediening van rclone staat open op deze Mac", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') gaf een fout, dus het is onbekend of de schijf van de machine op deze Mac nog kan groeien.", + "Google Drive's daily upload limit stops the upload": + "De dagelijkse uploadlimiet van Google Drive stopt de upload", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google heeft %@ geleden voor het laatst een upload geweigerd (750 GB per dag). Back-ups sindsdien staan alleen in de buffer van de machine op deze Mac. rclone probeert het elke 5 min opnieuw en gaat vanzelf verder als de limiet voorbij is; de bewaker pauzeert Time Machine als er meer dan %@ GiB wacht.", + "Usage on Google Drive is not being measured": + "Het gebruik op Google Drive wordt niet gemeten", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "De laatste meting (%@ GB) is van %@, %@ geleden - rclone size heeft sindsdien niet geantwoord. Tot het weer antwoordt, bewaakt niets de limiet van %@ GB: de alarmen bij 90%% en 100%% blijven stil. Controleer vm-status, of klik in het venster op Nu meten.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size heeft nog geen enkele keer geantwoord. Tot het antwoordt, bewaakt niets de limiet van %@ GB: de alarmen bij 90%% en 100%% blijven stil. Controleer vm-status, of klik in het venster op Nu meten.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Bewaard in de sleutelhanger. Het verbinden van Google Drive (configure-remote) gebruikt ze.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Bewaard in de sleutelhanger. De bestaande Google Drive-verbinding houdt zijn oude client_id, en op deze Mac hoort dat zo te blijven: een verbinding met de nieuwe sleutels (scope 'drive.file') kan de back-up die met de oude is gemaakt niet zien. Vervang de verbinding hier niet; de nieuwe sleutels zijn voor een Mac die nog niet is verbonden.", + "it is not there for the new token": + "die is er niet voor het nieuwe token", + "Cancel": + "Annuleer", + "ACTION NEEDED": + "ACTIE NODIG", + "WILL PASS BY ITSELF — DO NOTHING": + "LOST ZICHZELF OP - NIETS DOEN", + "UNKNOWN — CHECK AGAIN SHORTLY": + "ONBEKEND - STRAKS OPNIEUW CONTROLEREN", + "ALL GOOD": + "ALLES IN ORDE", + "Upload is not working": + "Upload werkt niet", + "Upload stopped — no space left on Google Drive": + "Upload gestopt - geen ruimte meer op Google Drive", + "%@ backup fragments not uploaded": + "%@ back-upfragmenten niet geüpload", + "Upload cannot keep up with writes": + "Upload kan het schrijven niet bijhouden", + "Upload paused — Google daily limit": + "Upload gepauzeerd - dagelijkse limiet van Google", + "Uploading to Google Drive — %@ queued": + "Uploaden naar Google Drive - %@ in de wachtrij", + "Everything uploaded to Google Drive": + "Alles geüpload naar Google Drive", + "Unknown what is waiting in the queue": + "Onbekend wat er in de wachtrij wacht", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Er is geen verbinding met Google Drive, dus back-ups worden alleen op deze Mac gemaakt. Als dit niet binnen een paar minuten vanzelf overgaat, controleer dan het netwerk en de verbinding met Drive.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Er is geen ruimte meer op Google Drive. Dit gaat NIET vanzelf over - je moet ruimte op Drive vrijmaken. Tot die tijd is Time Machine gepauzeerd, zodat de schijf van deze Mac niet volloopt.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ back-upfragmenten konden niet worden geüpload en rclone is opgehouden met proberen. Deze fragmenten bestaan alleen op deze Mac, dus de back-up op Drive is onvolledig. Dit moet worden nagekeken.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine schrijft sneller dan de upload gaat, en de buffer is vol. De back-up wordt gepauzeerd totdat de upload is ingehaald - dit is een beveiliging tegen het volschrijven van de schijf, geen storing.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google accepteert 750 GB per dag en die limiet is op. Je hoeft niets te doen: de limiet wordt vanzelf vernieuwd, meestal binnen een paar uur. Time Machine-back-ups worden intussen gewoon gemaakt en wachten in de buffer - ze worden geüpload zodra Google weer accepteert.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ back-upfragmenten staan in de wachtrij en zijn onderweg naar Drive.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "Er wacht niets in de wachtrij - de back-up op Google Drive is compleet.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone heeft de vraag over de wachtrij niet beantwoord, dus het is onbekend hoeveel back-ups nog op upload wachten. Dit betekent niet dat er iets kapot is - onder belasting kan het antwoord laat komen. Het betekent alleen dat niemand het op dit moment weet. Als het aanhoudt, meldt de controle van de back-upcyclus het.", + "unknown error": + "onbekende fout", + "rclone lsf ended with an error": + "rclone lsf is met een fout beëindigd", + "This Mac is close to its space limit on Google Drive": + "Deze Mac zit dicht tegen zijn ruimtelimiet op Google Drive aan", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ GB van %@ GB gebruikt. Time Machine verwijdert de oudste back-ups om binnen zijn quotum te blijven; controleer of het quotum is ingesteld (vm-status).", + "This Mac is over its space limit on Google Drive": + "Deze Mac zit boven zijn ruimtelimiet op Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ GB van %@ GB gebruikt. Stel het Time Machine-quotum in (commando in het appvenster of in vm-status), of verhoog de limiet.", + "not set": + "niet ingesteld", + "%@ GB - usage not measured yet": + "%@ GB - gebruik nog niet gemeten", + "%@ of %@ GB used (%@%%)": + "%@ van %@ GB gebruikt (%@%%)", + "The limit must be a whole number of GB above zero.": + "De limiet moet een geheel aantal GB boven nul zijn.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "machines.json kan niet worden gelezen en is daarom niet overschreven. Herstel of verwijder het eerst.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' is geen geldige mapnaam: gebruik kleine letters, cijfers en streepjes.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Deze Mac maakt al back-ups naar map '%@'. Overschakelen naar '%@' zou een nieuwe, lege back-up beginnen en de bestaande verweesd achterlaten, dus er is niets gewijzigd.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Deze Mac heeft al een CloudMachine-installatie, waarvan de back-up in map '%@' staat. Overschakelen naar '%@' zou die verweesd achterlaten, dus er is niets gewijzigd.", + "Could not save the folder name to %@: %@": + "Kon de mapnaam niet bewaren in %@: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew is niet geïnstalleerd. Installeer het handmatig: https://brew.sh", + "Installing rclone failed: %@": + "Installatie van rclone mislukt: %@", + "Installed rclone.": + "rclone geïnstalleerd.", + "Own Google credentials: set.": + "Eigen Google-inloggegevens: ingesteld.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "ONVOLLEDIG: %@ ontbreekt - rclone gebruikt toch de gedeelde client_id van rclone.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Geen eigen inloggegevens - rclone gebruikt de gedeelde client_id, die gezamenlijk aan een limiet is gebonden en in 2026 wordt uitgefaseerd.", + "Empty value - not saving.": + "Lege waarde - wordt niet bewaard.", + "Keychain refused: %@": + "Sleutelhanger weigerde: %@", + "DIRTY-TREE": + "VUILE-BOOM", + "Cannot create the working directory: %@": + "Kan de werkmap niet aanmaken: %@", + "Could not read the rclone version number.": + "Kon het versienummer van rclone niet lezen.", + "Could not download %@.": + "Kon %@ niet downloaden.", + "No entry for %@ in SHA256SUMS.": + "Geen vermelding voor %@ in SHA256SUMS.", + "Could not compute the checksum.": + "Kon de controlesom niet berekenen.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "SHA256-controlesom komt niet overeen - wordt NIET geïnstalleerd.\n verwacht: %@\n berekend: %@", + "Could not unpack the archive.": + "Kon het archief niet uitpakken.", + "Could not install the binary: %@": + "Kon het binaire bestand niet installeren: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %@ geïnstalleerd in %@ (SHA256-controlesom komt overeen).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ heeft niet binnen de toegestane tijd gereageerd (het proces is verweesd op de achtergrond achtergebleven).", + "Cannot launch %@: %@": + "Kan %@ niet starten: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "Remote '%@' bestaat al en is NIET aangeraakt.\nOverschrijven vervangt het token en de rechtenscope; inloggegevens met de scope 'drive.file' zien geen bestanden die door de vorige zijn gemaakt, waardoor de bestaande back-up onbereikbaar wordt.\nAls je het echt wilt vervangen, maak dan eerst een back-up van ~/.config/rclone/rclone.conf en voer het opnieuw uit met --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "Kon niet controleren of remote '%@' al bestaat (rclone listremotes antwoordde niet of mislukte), dus er is niets gewijzigd. Voer `%@ listremotes` uit om de fout te zien en probeer het daarna opnieuw.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "Kon niet controleren of deze Mac al een CloudMachine-installatie heeft (rclone antwoordde niet), dus er is geen map gekozen. Probeer het zo meteen opnieuw.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize mislukt (%@). Als dat binaire bestand ontbreekt, begin dan met: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "Kon het token niet lezen uit de uitvoer van rclone authorize.", + "rclone config create failed.": + "rclone config create mislukt.", + "Connected to Google Drive as remote '%@', folder %@.": + "Verbonden met Google Drive als remote '%@', map %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil reageert niet - onbekend waarheen de back-up gaat", + "No successful backup for %@": + "Geen geslaagde back-up sinds %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Laatste VOLTOOIDE back-up: %@. De cyclus is uurlijks, dus dat zijn %@ gemiste runs.", + "There is NOT A SINGLE successful backup": + "Er is GEEN ENKELE geslaagde back-up", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "De Time Machine-voorkeuren bevatten geen datum van een voltooide back-up voor deze bestemming.", + "The last backup attempt did not end in a backup": + "De laatste back-uppoging heeft niet tot een back-up geleid", + "The attempt at %@ is newer than the last successful backup at %@.": + "De poging van %@ is nieuwer dan de laatste geslaagde back-up van %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine meldt een fout in de laatste run (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Een RESULT ongelijk aan nul in de Time Machine-voorkeuren betekent dat de run niet is geslaagd.", + "rclone failed to upload %@ files": + "rclone kon %@ bestanden niet uploaden", + "Buffer full of nothing but unsent data": + "Buffer vol met alleen nog niet-verzonden gegevens", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone kan niets meer uit de buffer verwijderen - de upload kan het niet bijhouden of is vastgelopen.", + "The rclone control interface is not responding": + "De besturingsinterface van rclone reageert niet", + "Google Drive is running out of space (%@ GB)": + "Google Drive raakt vol (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "De schijf van de Mac raakt vol (%@ GB)", + "Cannot read the Time Machine preferences": + "Kan de Time Machine-voorkeuren niet lezen", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ is onleesbaar - meestal ontbreekt Volledige schijftoegang. Zonder dit bestand is het ONBEKEND wanneer de laatste back-up is gemaakt, dus behandelen we het als een storing, niet als de afwezigheid van een probleem.", + "Cannot measure free space on the Mac's disk": + "Kan de vrije ruimte op de schijf van de Mac niet meten", + "%@ days": + "%@ dagen", + "CloudMachine: backup is not working": + "CloudMachine: back-up werkt niet", + "unknown reason": + "onbekende reden", + "osascript did not show the notification (permissions or no graphical session)": + "osascript toonde de melding niet (rechten of geen grafische sessie)", + "UNDELIVERED ALARM: %@": + "NIET BEZORGD ALARM: %@", + "from %@, reason: %@": + "van %@, reden: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "De systeemmelding is niet bezorgd - dit alarm zie je ALLEEN hier.", + "%@ (%@ ago)": + "%@ (%@ geleden)", + "%@ - marker from the FUTURE": + "%@ - markering uit de TOEKOMST", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (%@ geleden) - DE WAAKHOND DRAAIT MOGELIJK NIET", + "NEVER - the watchdog has not recorded a single run": + "NOOIT - de waakhond heeft geen enkele run vastgelegd", + "Could not find the launchd/ directory with templates.": + "Kon de map launchd/ met sjablonen niet vinden.", + "Could not find the compiled cloudmachine-agent binary.": + "Kon het gecompileerde binaire bestand cloudmachine-agent niet vinden.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "AFGEBROKEN: kon cloudmachine-agent niet op een vaste locatie plaatsen\n(%@) - meestal door een gebrek aan ruimte of rechten.\nAgents die naar %@ verwijzen worden NIET geïnstalleerd: dat pad\nverdwijnt bij de volgende `swift build` of `git clean`, en back-ups stoppen\nzonder zichtbaar signaal.", + "ABORTED: %@": + "AFGEBROKEN: %@", + "Could not list the templates in %@.": + "Kon de sjablonen in %@ niet weergeven.", + "could not read the template %@": + "kon het sjabloon %@ niet lezen", + "could not write %@ (lack of space or permissions)": + "kon %@ niet schrijven (gebrek aan ruimte of rechten)", + "launchctl load refused to load %@": + "launchctl load weigerde %@ te laden", + "NOT A SINGLE agent was loaded.": + "GEEN ENKELE agent is geladen.", + "Only these went in: %@.": + "Alleen deze zijn erin gekomen: %@.", + "Could not load any launchd agent.": + "Kon geen enkele launchd-agent laden.", + "Installed agents: %@": + "Geïnstalleerde agents: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " WAARSCHUWING: dicht bij de limiet - nieuwe bands mislukken met EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands op Google Drive is niet leeg - het bevat mogelijk een andere back-up. Wordt NIET overschreven; controleer het handmatig.", + "Address: %@": + "Adres: %@", + "Already prepared (%@ exists) - nothing to do.": + "Al voorbereid (%@ bestaat) - niets te doen.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Converteert de nieuwe, lege image van Time Machine in de machine naar bands van 32 MB en verplaatst de bands naar Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "Kopieer rclone.conf naar de machine, ook als die er al een heeft.", + "Copying the converted image into the machine failed: %@": + "Het kopiëren van de geconverteerde image naar de machine is mislukt: %@", + "Copying the image to the Mac failed: %@": + "Het kopiëren van de image naar de Mac is mislukt: %@", + "Could not ask Lima about the machine: %@": + "Kon Lima niet naar de machine vragen: %@", + "Could not carry the Time Machine files over: %@": + "Kon de Time Machine-bestanden niet overzetten: %@", + "Could not check the image in the machine.": + "Kon de image in de machine niet controleren.", + "Could not copy the rclone configuration into the machine.": + "Kon de rclone-configuratie niet naar de machine kopiëren.", + "Could not create %@ on Google Drive: %@": + "Kon %@ niet aanmaken op Google Drive: %@", + "Could not create %@: %@": + "Kon %@ niet aanmaken: %@", + "Could not find the vm/ directory with the machine template.": + "Kon de map vm/ met het machinesjabloon niet vinden.", + "Could not read the image size.": + "Kon de grootte van de image niet lezen.", + "Could not set the SMB password of user %@ in the machine.": + "Kon het SMB-wachtwoord van gebruiker %@ in de machine niet instellen.", + "Could not stop smbd in the machine.": + "Kon smbd in de machine niet stoppen.", + "Could not write %@ in the machine.": + "Kon %@ niet schrijven in de machine.", + "Could not write the password file %@.": + "Kon het wachtwoordbestand %@ niet schrijven.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "Maakt de CloudMachine-machine (Lima) aan of start die, geeft hem de configuratie van rclone en een SMB-wachtwoord, en toont het Time Machine-commando.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "Machine %@ aanmaken (bij de eerste start worden Ubuntu en pakketten gedownload - enkele minuten)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Klaar: %@ heeft bands van %@ MB op Google Drive; het origineel blijft bewaard in %@ in de machine. Start de back-up: tmutil startbackup", + "exit code %@, no message": + "exitcode %@, geen melding", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Image-metadata: NOOIT gekopieerd naar %@ - controleer tm-meta-sync in de machine", + "Image metadata: copied %@ ago to %@": + "Image-metadata: %@ geleden gekopieerd naar %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Image-metadata: laatst %@ geleden gekopieerd - ACHTERSTALLIG (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Image-metadata: nog niet gekopieerd - wacht op vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "Back-up %@, gepauzeerd door de bewaker %@: %@", + "Free in machine: %@ GiB": + "Vrij in machine: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n vond problemen: %@", + "Google Drive folder: %@": + "Google Drive-map: %@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach van de geconverteerde image mislukt: %@", + "hdiutil convert failed: %@": + "hdiutil convert mislukt: %@", + "Image name in the machine (default: from the computer name).": + "Naam van de image in de machine (standaard: afgeleid van de computernaam).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "Installeren van de geconverteerde image MISLUKT: %@\nsmbd blijft GESTOPT, zodat Time Machine geen half geïnstalleerde image opent. Het origineel staat in %@ in de machine.", + "limactl create failed: %@": + "limactl create mislukt: %@", + "limactl list failed: %@": + "limactl list mislukt: %@", + "limactl not found - install Lima: brew install lima": + "limactl niet gevonden - installeer Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start mislukt: %@\nHet eigen logboek van de machine: %@", + "Machine %@ is running.": + "Machine %@ draait.", + "Machine %@ was already running.": + "Machine %@ draaide al.", + "Machine: %@ (%@)": + "Machine: %@ (%@)", + "Machine: %@": + "Machine: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Machine: niet aangemaakt - voer uit: cloudmachine-agent vm-setup", + "no answer within the time limit": + "geen antwoord binnen de tijdslimiet", + "No image %@ in the machine.": + "Geen image %@ in de machine.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "Nog geen image in de machine - richt Time Machine op de share en laat eerst een image aanmaken.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "Geen rclone-configuratie op %@ - verbind eerst Google Drive (configure-remote).", + "no SMB destination": + "geen SMB-bestemming", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "Eén controle van de uploadbuffer van de machine: pauzeert Time Machine als die vol raakt en hervat wat het heeft gepauzeerd.", + "Packing the converted image failed: %@": + "Het verpakken van de geconverteerde image is mislukt: %@", + "Packing the image failed: %@": + "Het verpakken van de image is mislukt: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "Geen antwoord van de machine (rclone rc) - de bewaker zou niets doen.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Toon alleen wat de bewaker zou beslissen - om drempels uit te proberen op een wegwerpmachine.", + "Pause above this many GiB in the buffer.": + "Pauzeer boven zoveel GiB in de buffer.", + "Pause when the machine has less free than this, in GiB.": + "Pauzeer als de machine minder vrij heeft dan dit, in GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Richt Time Machine op de machine (eenmalig, beheerderswachtwoord vereist):", + "punchfs files: %@ open, limit %@": + "punchfs-bestanden: %@ open, limiet %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "rclone-configuratie staat al in de machine - blijft behouden (--replace-rclone-config vervangt die).", + "rclone configuration copied into the machine.": + "rclone-configuratie naar de machine gekopieerd.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm of punchfs draait niet in de machine - zie cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Hervat onder zoveel GiB (alleen een back-up die de bewaker heeft gepauzeerd).", + "Service %@: %@": + "Service %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "Meerdere images in de machine (%@) - kies er een met --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Toont de machine: adres, services, uploadbuffer, vrije ruimte en de Time Machine-bestemming.", + "SMB password stored in %@ (mode 600).": + "SMB-wachtwoord bewaard in %@ (modus 600).", + "The converted image does not have %@-byte bands.": + "De geconverteerde image heeft geen bands van %@ byte.", + "The converted image has no APFS partition.": + "De geconverteerde image heeft geen APFS-partitie.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "De image neemt al %@ MB in beslag - dit commando converteert alleen een nieuwe, lege image (onder %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "De image is versleuteld - het converteren van versleutelde images wordt niet ondersteund.", + "The image was not changed; smbd started again.": + "De image is niet gewijzigd; smbd is weer gestart.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "De machine antwoordt niet - draait hij? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "De machine heeft geen adres op het vzNAT-netwerk.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "De services in de machine zijn niet gestart - controleer: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine maakt een back-up - stop die eerst: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: wijst NIET naar de machine (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil heeft niet geantwoord", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil heeft niet geantwoord - de image wordt niet aangeraakt zolang de status onbekend is.", + "unknown": + "onbekend", + "Unpacking the image failed: %@": + "Het uitpakken van de image is mislukt: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "Nog te uploaden: %@ GiB in %@ bands, %@ worden geüpload (cache op schijf %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "%@ (de machine en de uploadbuffer ervan) uitgesloten van Time Machine.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "WAARSCHUWING: kon %@ niet uitsluiten van Time Machine - voer uit: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Uploadbuffer: geen antwoord van rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Als Time Machine zijn lege image heeft gemaakt, stop dan de back-up (tmutil stopbackup) en voer uit: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "Niet verzonden %@ GiB, vrij %@ GiB (pauzeer boven %@ GiB niet verzonden of onder %@ GiB vrij, hervat onder %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Upload: de dagelijkse limiet van Google weigerde %@ geleden een upload - rclone probeert het elke 5 min opnieuw en gaat vanzelf verder", + "no": + "nee", + "running": + "draait", + "stopped": + "gestopt", + "yes": + "ja", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nHet vorige sjabloon staat in %@ - kopieer het terug over lima.yaml en voer limactl start %@ uit.", + "Could not read this app's machine template (limactl template copy).": + "Kon het machinesjabloon van deze app niet lezen (limactl template copy).", + "Could not replace %@: %@": + "Kon %@ niet vervangen: %@", + "Machine %@ already runs this app's template.": + "Machine %@ draait al met het sjabloon van deze app.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "Machine %@ draait nu met het sjabloon van deze app; het vorige staat in %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Zet de machine over op het sjabloon van deze app (twee herstarts, nooit tijdens een back-up).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "Geen machine %@ - maak hem aan met: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Sjabloon: OUDER dan dat van deze app - voer uit: cloudmachine-agent vm-update", + "Template: not compared": + "Sjabloon: niet vergeleken", + "Template: this app's": + "Sjabloon: dat van deze app", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "De machine heeft geen %@ - voer eerst cloudmachine-agent vm-setup uit.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "De machine is opnieuw gestart, maar niet alle services draaien - controleer: cloudmachine-agent vm-status. Het vorige sjabloon staat in %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "Het sjabloon wijzigt de machine zelf (%@) - daarvoor is een nieuwe machine nodig, geen update.", + "The upload to Google Drive hangs": + "De upload naar Google Drive blijft hangen", + "Time Machine is backing up - try again when it has finished.": + "Time Machine maakt een back-up - probeer het opnieuw als die klaar is.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Upload: BLIJFT HANGEN - bands in behandeling, al %@ geen geüpload (netwerk?); zie /var/log/rclone-tm.log in de machine", + "limactl stop failed - nothing was changed.": + "limactl stop mislukt - er is niets gewijzigd.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone heeft bands in behandeling, maar al %@ is er geen geüpload - meestal een verbroken netwerkverbinding, die rclone niet als fout meldt. Back-ups sindsdien staan alleen in de buffer van de machine. Zodra het netwerk terug is, gaat de upload vanzelf verder (op 28.10.2026 binnen 80 s); zo niet, dan verwijdert een herstart van de machine (prepare-shutdown, limactl start) de dode verbindingen.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil heeft niet geantwoord - de machine wordt niet opnieuw gestart zolang de status onbekend is.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+pt-BR.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+pt-BR.swift new file mode 100644 index 0000000..7c2e2c8 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+pt-BR.swift @@ -0,0 +1,951 @@ +// Brazilian Portuguese translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let ptBR: [String: String] = [ + "Space limit: %@": + "Limite de espaço: %@", + " Time Machine quota not set to match - run: %@": + " A cota do Time Machine não corresponde - execute: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Define quanto do Google Drive este Mac pode usar e imprime o comando da cota do Time Machine.", + "Limit in GB.": + "Limite em GB.", + "Limit for this Mac: %@ GB.": + "Limite para este Mac: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Agora defina a cota do Time Machine (requer senha de administrador):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - verificação, configuração do Google Drive e instalação. Chamado pelo launchd em horários programados ou manualmente no Terminal.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "Conecta ao Google Drive por meio do rclone (OAuth no navegador) e cria a pasta desta máquina.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Sobrescreve o remote existente. ARRISCADO: substitui o token e as permissões.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "Empacota build/CloudMachine.app em build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "ERRO: %@ não existe - execute antes 'cloudmachine-agent build-app'", + "==> Preparing the staging folder": + "==> Preparando a pasta temporária", + "==> Creating %@": + "==> Criando %@", + "ERROR: hdiutil exited with code %@.": + "ERRO: hdiutil terminou com o código %@.", + "==> Done: %@": + "==> Concluído: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "Na primeira abertura (o app não é assinado com uma conta Apple Developer):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. Abra %@ e arraste CloudMachine.app para a pasta Aplicativos.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. No Finder, clique com o botão DIREITO em CloudMachine.app -> Abrir -> Abrir\n (um clique duplo simples mostra o bloqueio do Gatekeeper \"desenvolvedor não identificado\").", + "3. Later launches work normally, with a double-click.": + "3. As próximas aberturas funcionam normalmente, com clique duplo.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "Compila CloudMachine.app (Release) - interface + cloudmachine-agent em Contents/MacOS/, além de launchd/, vm/ e config/ como Resources.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Binários para Apple Silicon e Intel ao mesmo tempo (como o CI compila uma versão; desnecessário localmente).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> Compilando CloudMachineApp + cloudmachine-agent (release) - versão %@ (%@)", + "ERROR: swift build exited with code %@.": + "ERRO: swift build terminou com o código %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "ERRO: swift build --show-bin-path não informou o diretório dos binários.", + "ERROR: no built binary found at %@": + "ERRO: nenhum binário compilado encontrado em %@", + "==> Assembling the .app bundle in %@": + "==> Montando o pacote .app em %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> AVISO: você está compilando a partir de uma árvore SUJA - a versão não apontará para um commit.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "ERRO: Resources/AppIcon.icns não existe - gere-o: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Assinando com o certificado local '%@' (o Acesso Total ao Disco será mantido nas próximas compilações)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Assinando ad hoc (sem conta Apple Developer) - execute uma vez 'cloudmachine-agent setup-signing-cert' para que as permissões do TCC sejam mantidas nas próximas compilações", + "ERROR: codesign exited with code %@.": + "ERRO: codesign terminou com o código %@.", + "Next step: %@": + "Próximo passo: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Cria um certificado local autoassinado para que o Acesso Total ao Disco seja mantido ao recompilar o app.", + "Certificate '%@' already exists in %@, nothing to do.": + "O certificado '%@' já existe em %@, nada a fazer.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Gerando a chave e o certificado autoassinado '%@'...", + "ERROR: openssl req exited with code %@.": + "ERRO: openssl req terminou com o código %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "ERRO: openssl pkcs12 terminou com o código %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Importando o certificado em %@ (com pré-autorização de /usr/bin/codesign, para que não peça a senha do chaveiro toda vez)...", + "ERROR: security import exited with code %@.": + "ERRO: security import terminou com o código %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> Confiando no certificado SOMENTE para assinatura de código...", + "ERROR: security add-trusted-cert exited with code %@.": + "ERRO: security add-trusted-cert terminou com o código %@.", + "Done. Certificate '%@' is now available to codesign.": + "Pronto. O certificado '%@' agora está disponível para o codesign.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "O próximo 'cloudmachine-agent build-app' vai usá-lo automaticamente em vez de uma assinatura ad hoc.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "Depois DESSA ÚNICA recompilação, conceda o Acesso Total ao Disco mais uma vez - as\nrecompilações seguintes não vão mais redefini-lo, desde que você assine com o mesmo certificado.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Verifica se o ciclo de hora em hora AINDA funciona (data do último backup BEM-SUCEDIDO) e relata falhas.", + "After this many hours without a successful backup we consider the cycle broken.": + "Depois de tantas horas sem um backup bem-sucedido, consideramos o ciclo quebrado.", + "Only print the state, without a system notification.": + "Apenas mostra o estado, sem notificação do sistema.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "Outro arquivo de preferências do Time Machine - para testar o supervisor com uma amostra conhecida.", + "Last successful backup: %@": + "Último backup bem-sucedido: %@", + "Last successful backup: NONE": + "Último backup bem-sucedido: NENHUM", + "Last attempt: %@": + "Última tentativa: %@", + "WAITING (system startup): %@": + "AGUARDANDO (inicialização do sistema): %@", + "Backup cycle: OK": + "Ciclo de backup: OK", + "FAILURE: %@": + "FALHA: %@", + " %@": + " %@", + "Check the state: %@": + "Verificar o estado: %@", + "Preparing for restart": + "Preparando para reiniciar", + "Prepare for restart": + "Preparar para reiniciar", + "Prepare": + "Preparar", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> AVISO: git rev-list falhou (%@) - usando a data como número da compilação.", + "Agents: %@": + "Agentes: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "NÃO CONSEGUEM INICIAR: %@ - abra o CloudMachine ou execute backup-health para recarregá-los", + "Reloaded agents that could not start: %@": + "Agentes recarregados que não conseguiam iniciar: %@", + "Drive folder: %@": + "Pasta no Drive: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Nome da pasta deste Mac no Google Drive (padrão: derivado do nome do computador). Definido uma só vez; não pode ser alterado depois.", + "Backup watchdog: %@": + "Supervisor de backup: %@", + "Prints the version, the build number and the commit this binary was built from.": + "Imprime a versão, o número da compilação e o commit a partir do qual este binário foi compilado.", + "Only one line, without a description.": + "Apenas uma linha, sem descrição.", + "Build from the working tree (outside a bundle) - no version data.": + "Compilação a partir da árvore de trabalho (fora de um pacote) - sem dados de versão.", + "Version: %@": + "Versão: %@", + "Build: %@": + "Compilação: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "AVISO: compilado a partir de uma árvore SUJA - o binário contém código que\n não está em nenhum commit. O número do commit NÃO descreve\n o que realmente está em execução.", + "Saving the space limit": + "Salvando o limite de espaço", + "Measuring usage on Google Drive": + "Medindo o uso no Google Drive", + "Google Drive did not answer - try again later.": + "O Google Drive não respondeu - tente novamente mais tarde.", + "Measured.": + "Medido.", + "Space limit for this Mac": + "Limite de espaço para este Mac", + "Used on Google Drive": + "Usado no Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "Medido %@. O supervisor mede novamente a cada poucas horas.", + "Limit (GB)": + "Limite (GB)", + "Save": + "Salvar", + "Measure now": + "Medir agora", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Cota do Time Machine: %@ GB (70%% do limite - a cópia no Drive é cerca de um terço maior que o backup que ela contém). O Time Machine apaga os backups mais antigos para ficar dentro dela.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Defina a cota do Time Machine: execute isto no Terminal (requer sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Conecte o Google Drive: execute isto no Terminal e aprove no navegador", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "Conceda ao CloudMachine o Acesso Total ao Disco, para que ele possa saber se os backups são concluídos", + "Folder on Google Drive": + "Pasta no Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Uma pasta por Mac. Definida uma só vez - não pode ser alterada após a conexão.", + "Use lowercase letters, digits and dashes.": + "Use letras minúsculas, dígitos e hifens.", + "Install rclone": + "Instalar rclone", + "Open System Settings": + "Abrir Ajustes do Sistema", + "Install agents": + "Instalar agentes", + "not checked": + "não verificado", + "none at all": + "nenhum", + "%@ ago": + "há %@", + "Missing: %@": + "Ausente: %@", + "Google Drive not connected": + "Google Drive não conectado", + "Time Machine does not point to CloudMachine": + "O Time Machine não aponta para o CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "NÃO SE SABE se o Time Machine aponta para o CloudMachine - o tmutil não respondeu", + "Backup in progress": + "Backup em andamento", + "Unknown when the last backup was made": + "Não se sabe quando foi feito o último backup", + "There is no completed backup at all": + "Não há nenhum backup concluído", + "No completed backup for %@": + "Nenhum backup concluído há %@", + "Ready": + "Pronto", + "Not saved: %@": + "Não salvo: %@", + "Installing rclone": + "Instalando rclone", + "Installing launchd agents": + "Instalando agentes do launchd", + "Starting backup": + "Iniciando o backup", + "Backup started.": + "Backup iniciado.", + "Could not start the backup.": + "Não foi possível iniciar o backup.", + "Stopping backup": + "Parando o backup", + "Backup stopped.": + "Backup parado.", + "Could not stop the backup.": + "Não foi possível parar o backup.", + "Could not prepare the AppleScript.": + "Não foi possível preparar o AppleScript.", + "Unknown authorization error.": + "Erro de autorização desconhecido.", + "Waiting to upload": + "Aguardando envio", + "%@ files": + "%@ arquivos", + "nothing": + "nada", + "Back up now": + "Fazer backup agora", + "Stop backup": + "Parar backup", + "Open CloudMachine": + "Abrir o CloudMachine", + "Quit": + "Sair", + "Healthy": + "Em ordem", + "Attention": + "Atenção", + "Refreshed %@": + "Atualizado %@", + "System Status": + "Status do sistema", + "Action needed": + "Ação necessária", + "not measured": + "não medido", + "rclone did not answer": + "O rclone não respondeu", + "Backup in Progress": + "Backup em andamento", + "Files processed": + "Arquivos processados", + "Write speed": + "Velocidade de gravação", + "Operation phase": + "Fase da operação", + "Required Setup Steps": + "Etapas de configuração necessárias", + "Copy": + "Copiar", + "Last completed backup": + "Último backup concluído", + "Last backup watchdog run": + "Última execução do supervisor de backup", + "not read": + "não lido", + "Everything uploaded": + "Tudo enviado", + "File upload errors": + "Erros no envio de arquivos", + "Google Drive Credentials (OAuth 2.0)": + "Credenciais do Google Drive (OAuth 2.0)", + "Keychain OK": + "Chaveiro OK", + "No custom keys": + "Sem chaves próprias", + "Paste client_id...": + "Cole o client_id...", + "Paste client_secret...": + "Cole o client_secret...", + "Save securely in the Keychain": + "Salvar com segurança no Chaveiro", + "Refresh": + "Atualizar", + "Overview": + "Visão geral", + "Backups": + "Backups", + "Storage": + "Armazenamento", + "Settings": + "Ajustes", + "Current status: %@": + "Status atual: %@", + "Does not point to CloudMachine": + "Não aponta para o CloudMachine", + "tmutil did not answer": + "O tmutil não respondeu", + "Backing up: %@ of %@": + "Fazendo backup: %@ de %@", + "%@ of %@": + "%@ de %@", + "Copied": + "Copiado", + "No backup is running": + "Nenhum backup em andamento", + "Time Machine starts the next one on its own schedule.": + "O Time Machine inicia o próximo conforme o próprio cronograma.", + "Backup cycle": + "Ciclo de backup", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB em %@ bandas, %@ em envio", + "%@ bands": + "%@ bandas", + "%@ fragments abandoned - only in the machine": + "%@ fragmentos abandonados - só na máquina", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 responde no Mac: o Lima encaminha o controle remoto do rclone da máquina, que não tem senha. Qualquer página web aberta em um navegador pode enviar comandos a ele, inclusive apagar o backup no Google Drive. Adicione à máquina a regra portForwards de vm/cmsmb.yaml e reinicie-a (veja vm/README.md).", + "A service in the CloudMachine machine is not running": + "Um serviço da máquina do CloudMachine não está em execução", + "Address": + "Endereço", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Instalação dos agentes INCOMPLETA - %@ de %@ não foram instalados:\n%@\n%@\nCada agente ausente é uma função que parou de funcionar silenciosamente (vm-guard vigia o buffer da máquina, backup-health relata as falhas). Corrija a causa e repita a instalação.", + "All running": + "Tudo em execução", + "Also install the launchd agents (same as install-launchd).": + "Instala também os agentes do launchd (igual a install-launchd).", + "At most this many minutes of waiting for the upload.": + "No máximo esta quantidade de minutos de espera pelo envio.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "No limite, cada banda nova falha com EMFILE e o backup para. Verifique: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Cache no disco da máquina", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Conectado ao Google Drive, mas não foi possível criar a pasta '%@' - sem ela a máquina não tem onde guardar o backup. Verifique as permissões da conta e tente novamente.", + "Convert the image": + "Converter a imagem", + "Converting the image to 32 MB bands": + "Convertendo a imagem em bandas de 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "Não foi possível verificar, com a conexão atual, se o backup está no Google Drive (%@), então o remote '%@' NÃO foi substituído: sem essa resposta, o novo login não pode ser conferido.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Baixa o binário oficial do rclone para ~/.cloudmachine/bin (login do Google e rclone.conf da máquina).", + "Free in the machine": + "Livre na máquina", + "Free in the machine: %@": + "Livre na máquina: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "Gera e instala os agentes do launchd (app, supervisor de backup, inicialização da máquina, guardião da máquina).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "Instale o Lima, que executa a máquina do CloudMachine: execute isto no Terminal", + "Install rclone (signs in to Google Drive for the machine)": + "Instalar rclone (faz login no Google Drive para a máquina)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Instalar os agentes em segundo plano (inicialização da máquina, guardião do buffer, supervisor de backup)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Instala o rclone pelo Homebrew - o CloudMachine usa o de install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, token e mapped/ da imagem de backup existem apenas no disco da máquina; sem eles, as bandas em %@ não podem ser restauradas. A cópia (tm-meta-sync, a cada 15 min) vai para %@. Verifique: cloudmachine-agent vm-status e, na máquina: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "O Lima diz que a máquina está em execução, mas um comando nela não retornou. Sem ele, nada se sabe sobre Samba, rclone ou o envio. Verifique: cloudmachine-agent vm-status", + "Machine": + "Máquina", + "Machine %@": + "Máquina %@", + "Machine & Upload Status": + "Status da máquina e do envio", + "Machine buffer": + "Buffer da máquina", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Nenhum destino do Time Machine é o compartilhamento da máquina (smb://tm@
/CloudMachine) - os backups não estão sendo feitos lá. O comando é impresso por: cloudmachine-agent vm-setup", + "Not running: %@": + "Não está em execução: %@", + "Not set up": + "Não configurada", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "Quando acabar, o rclone para de enviar, o buffer da máquina enche e os backups deixam de ser feitos. Com um crescimento de ~600 MB por ciclo de hora em hora, isso dá cerca de %@ dias.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "Ou o rclone.conf está ausente: este Mac já configurou a máquina do CloudMachine, então não se conecta de novo às cegas. Restaure o arquivo de um backup (a máquina guarda uma cópia própria em %@). Para conectar mesmo assim, crie um arquivo vazio no caminho que `%@ config file` imprime e execute de novo - a pasta existente é mantida.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Aponte o Time Machine para a máquina: execute isto no Terminal (requer sudo; Copiar inclui a senha)", + "Points to the machine": + "Aponta para a máquina", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Prepara para reiniciar: para o backup, espera um pouco pelo envio e depois desliga a máquina de forma limpa.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "A leitura do destino do Time Machine não retornou em %@ s. É assim que o tmutil se comporta quando o destino trava.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "O remote '%@' NÃO foi substituído. O novo login recebe o escopo 'drive.file', que só enxerga arquivos criados sob o próprio client_id. O backup existente provavelmente foi criado pela conexão atual e ficaria invisível para ela. Antes de gravar qualquer coisa, o novo token é conferido com o backup existente, e a substituição é abandonada se ele não o enxergar. A máquina mantém uma cópia própria da configuração até vm-setup --replace-rclone-config. Para prosseguir, execute de novo com --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Controle remoto: ABERTO no Mac em 127.0.0.1:5572 - qualquer página web pode enviar comandos ao rclone; veja vm/README.md (portForwards)", + "Running": + "Em execução", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone ou punchfs na máquina não está ativo, então o Time Machine não tem onde gravar ou as bandas não chegam ao Google Drive. Verifique: cloudmachine-agent vm-status", + "Service %@": + "Serviço %@", + "Services": + "Serviços", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "Configurar a máquina do CloudMachine (na primeira vez baixa o Ubuntu - vários minutos)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "Configurar a máquina do CloudMachine de novo, para que imprima o comando do Time Machine", + "Set up the machine": + "Configurar a máquina", + "Setting up the CloudMachine machine": + "Configurando a máquina do CloudMachine", + "Start the CloudMachine machine": + "Iniciar a máquina do CloudMachine", + "Start the machine": + "Iniciar a máquina", + "Starting the CloudMachine machine": + "Iniciando a máquina do CloudMachine", + "Still to upload: %@ GiB": + "Ainda para enviar: %@ GiB", + "Stopping the Time Machine backup...": + "Parando o backup do Time Machine...", + "Stopping the machine %@...": + "Parando a máquina %@...", + "The CloudMachine machine does not answer": + "A máquina do CloudMachine não responde", + "The CloudMachine machine is not running": + "A máquina do CloudMachine não está em execução", + "The CloudMachine machine is not set up yet": + "A máquina do CloudMachine ainda não foi configurada", + "The CloudMachine machine is stopped": + "A máquina do CloudMachine está parada", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "O backup é parado, o envio tem até 30 minutos e depois a máquina é desligada de forma limpa. Ela volta a iniciar no próximo login.", + "The machine %@ is not running - nothing to prepare.": + "A máquina %@ não está em execução - nada a preparar.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "A máquina está parada e tudo chegou ao Google Drive. O Mac pode ser reiniciado; a máquina inicia de novo no login.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "A máquina está parada. %@ GiB ainda não tinham chegado ao Google Drive - ficam guardados no buffer da máquina e serão enviados após a próxima inicialização. O Mac pode ser reiniciado.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "A máquina está parada. O rclone não informou quanto ainda faltava enviar; o que não foi enviado fica guardado no buffer da máquina e será enviado após a próxima inicialização. O Mac pode ser reiniciado.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "O disco da máquina é um arquivo neste disco e cresce conforme o buffer de envio enche. Sem espaço livre, a máquina não consegue gravar o buffer, e os snapshots locais do Time Machine também não têm para onde ir.", + "The image's metadata has never been copied to Drive": + "Os metadados da imagem nunca foram copiados para o Drive", + "The image's metadata was last copied to Drive %@ ago": + "Os metadados da imagem foram copiados para o Drive pela última vez há %@", + "The machine's disk is running out of space (%@ GB)": + "O disco da máquina está ficando sem espaço (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "O novo login NÃO enxerga o backup existente (%@), então o remote '%@' NÃO foi substituído e o rclone.conf não mudou. Mantenha a conexão atual ou faça login com a credencial (client_id) que criou o backup.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "O buffer de envio fica neste disco. O guardião pausa o Time Machine antes que ele encha; se o envio não alcançar, os backups continuam pausados.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Estas bandas existem apenas no buffer da máquina. O backup no Google Drive está INCOMPLETO e pode não abrir.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "O Time Machine faz backup na máquina, então sem ela nenhum backup é feito. Inicie a máquina: limactl start %@ (ou o botão \"Iniciar a máquina\" no app).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "O Time Machine não parou o backup em 2 minutos (ou o tmutil não respondeu) - a máquina NÃO foi parada. Tente de novo daqui a pouco.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "O Time Machine criou a imagem: pare o backup e converta a imagem em bandas de 32 MB", + "To upload": + "Para enviar", + "Unknown whether the CloudMachine machine is running": + "Não se sabe se a máquina do CloudMachine está em execução", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Aguardando o envio para o Google Drive (no máximo %@ min)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "Com --replace-existing: confirma que o novo login (escopo 'drive.file') pode não enxergar o backup existente. O novo token ainda é conferido antes com o backup.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "Sem ele não há como verificar se algo chegou ao Drive - o guardião da máquina fica cego.", + "limactl did not answer": + "O limactl não respondeu", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "O limactl não respondeu (ou não está instalado). Isso não significa que a máquina esteja parada - significa que ninguém verificou.", + "limactl start failed: %@": + "limactl start falhou: %@", + "limactl stop failed: %@": + "limactl stop falhou: %@", + "punchfs is close to its open-file limit": + "O punchfs está perto do limite de arquivos abertos", + "punchfs open files": + "Arquivos abertos do punchfs", + "rclone's remote control is open on this Mac": + "O controle remoto do rclone está aberto neste Mac", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') retornou um erro, então não se sabe se o disco da máquina ainda pode crescer neste Mac.", + "Google Drive's daily upload limit stops the upload": + "O limite diário de envio do Google Drive interrompe o envio", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "O Google recusou um envio pela última vez há %@ (750 GB por dia). Os backups desde então estão apenas no buffer da máquina neste Mac. O rclone tenta de novo a cada 5 min e retoma sozinho quando o limite passa; o guardião pausa o Time Machine se mais de %@ GiB estiverem esperando.", + "Usage on Google Drive is not being measured": + "O uso do Google Drive não está sendo medido", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "A última medição (%@ GB) é de %@, há %@ - o rclone size não respondeu desde então. Até que responda, nada vigia o limite de %@ GB: os alarmes de 90%% e 100%% ficam em silêncio. Verifique vm-status ou clique em Medir agora na janela.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "O rclone size não respondeu nenhuma vez. Até que responda, nada vigia o limite de %@ GB: os alarmes de 90%% e 100%% ficam em silêncio. Verifique vm-status ou clique em Medir agora na janela.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Salvo no Chaveiro. A conexão do Google Drive (configure-remote) vai usá-las.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Salvo no Chaveiro. A conexão existente com o Google Drive mantém o client_id antigo, e neste Mac deve continuar assim: uma conexão feita com as chaves novas (escopo 'drive.file') não enxerga o backup criado pela antiga. Não substitua a conexão aqui; as chaves novas são para um Mac que ainda não está conectado.", + "it is not there for the new token": + "não está lá para o novo token", + "Cancel": + "Cancelar", + "ACTION NEEDED": + "AÇÃO NECESSÁRIA", + "WILL PASS BY ITSELF — DO NOTHING": + "VAI PASSAR SOZINHO — NÃO FAÇA NADA", + "UNKNOWN — CHECK AGAIN SHORTLY": + "DESCONHECIDO — VERIFIQUE DE NOVO EM BREVE", + "ALL GOOD": + "TUDO CERTO", + "Upload is not working": + "O envio não está funcionando", + "Upload stopped — no space left on Google Drive": + "Envio parado — sem espaço no Google Drive", + "%@ backup fragments not uploaded": + "%@ fragmentos de backup não enviados", + "Upload cannot keep up with writes": + "O envio não acompanha a gravação", + "Upload paused — Google daily limit": + "Envio pausado — limite diário do Google", + "Uploading to Google Drive — %@ queued": + "Enviando para o Google Drive — %@ na fila", + "Everything uploaded to Google Drive": + "Tudo enviado para o Google Drive", + "Unknown what is waiting in the queue": + "Não se sabe o que está na fila", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Não há conexão com o Google Drive, então os backups são feitos apenas neste Mac. Se isso não passar sozinho em alguns minutos, verifique a rede e a conexão com o Drive.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Não há mais espaço no Google Drive. Isso NÃO vai passar sozinho — você precisa liberar espaço no Drive. Até lá, o Time Machine fica pausado para não encher o disco deste Mac.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ fragmentos de backup não puderam ser enviados e o rclone parou de tentar. Esses fragmentos existem apenas neste Mac, então o backup no Drive está incompleto. É preciso verificar.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "O Time Machine está gravando mais rápido do que o envio, e o buffer encheu. O backup ficará pausado até o envio alcançar — é uma proteção contra encher o disco, não uma falha.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "O Google aceita 750 GB por dia e esse limite foi usado. Não há nada a fazer: o limite se renova sozinho, normalmente em poucas horas. Enquanto isso, os backups do Time Machine são feitos normalmente e esperam no buffer — serão enviados assim que o Google voltar a aceitar.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ fragmentos de backup estão na fila, a caminho do Drive.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "Não há nada na fila — o backup no Google Drive está completo.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "O rclone não respondeu à pergunta sobre a fila, então não se sabe quantos backups ainda aguardam envio. Isso não significa que algo quebrou — sob carga, a resposta pode atrasar. Significa apenas que, neste momento, ninguém sabe. Se persistir, a verificação do ciclo de backup vai relatar.", + "unknown error": + "erro desconhecido", + "rclone lsf ended with an error": + "rclone lsf terminou com erro", + "This Mac is close to its space limit on Google Drive": + "Este Mac está perto do limite de espaço no Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ GB de %@ GB usados. O Time Machine apaga os backups mais antigos para ficar dentro da cota; verifique se a cota está definida (vm-status).", + "This Mac is over its space limit on Google Drive": + "Este Mac ultrapassou o limite de espaço no Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ GB de %@ GB usados. Defina a cota do Time Machine (comando na janela do app ou em vm-status) ou aumente o limite.", + "not set": + "não definida", + "%@ GB - usage not measured yet": + "%@ GB - uso ainda não medido", + "%@ of %@ GB used (%@%%)": + "%@ de %@ GB usados (%@%%)", + "The limit must be a whole number of GB above zero.": + "O limite deve ser um número inteiro de GB maior que zero.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "Não foi possível ler machines.json, então ele não foi sobrescrito. Corrija-o ou remova-o primeiro.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' não é um nome de pasta válido: use letras minúsculas, dígitos e hifens.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Este Mac já faz backup na pasta '%@'. Mudar para '%@' iniciaria um backup novo e vazio e deixaria o existente órfão, então nada foi alterado.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Este Mac já tem uma instalação do CloudMachine, cujo backup está na pasta '%@'. Mudar para '%@' o deixaria órfão, então nada foi alterado.", + "Could not save the folder name to %@: %@": + "Não foi possível salvar o nome da pasta em %@: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "O Homebrew não está instalado. Instale-o manualmente: https://brew.sh", + "Installing rclone failed: %@": + "Falha ao instalar o rclone: %@", + "Installed rclone.": + "rclone instalado.", + "Own Google credentials: set.": + "Credenciais próprias do Google: definidas.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "INCOMPLETO: %@ está ausente - o rclone usará o client_id compartilhado do rclone mesmo assim.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Sem credenciais próprias - o rclone usa o client_id compartilhado, com limite de uso conjunto e que será desativado em 2026.", + "Empty value - not saving.": + "Valor vazio - não será salvo.", + "Keychain refused: %@": + "O Chaveiro recusou: %@", + "DIRTY-TREE": + "ÁRVORE-SUJA", + "Cannot create the working directory: %@": + "Não foi possível criar o diretório de trabalho: %@", + "Could not read the rclone version number.": + "Não foi possível ler o número de versão do rclone.", + "Could not download %@.": + "Não foi possível baixar %@.", + "No entry for %@ in SHA256SUMS.": + "Não há entrada para %@ em SHA256SUMS.", + "Could not compute the checksum.": + "Não foi possível calcular o checksum.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "O checksum SHA256 não confere - NÃO será instalado.\n esperado: %@\n calculado: %@", + "Could not unpack the archive.": + "Não foi possível descompactar o arquivo.", + "Could not install the binary: %@": + "Não foi possível instalar o binário: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %@ instalado em %@ (o checksum SHA256 confere).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ não respondeu dentro do tempo previsto (o processo ficou órfão em segundo plano).", + "Cannot launch %@: %@": + "Não foi possível iniciar %@: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "O remote '%@' já existe e NÃO foi alterado.\nSobrescrevê-lo substitui o token e o escopo de permissões; uma credencial com o escopo 'drive.file' não enxerga arquivos criados pela anterior, então o backup existente ficaria inacessível.\nSe você realmente quer substituí-lo, primeiro faça backup de ~/.config/rclone/rclone.conf e execute de novo com --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "Não foi possível verificar se o remote '%@' já existe (rclone listremotes não respondeu ou falhou), então nada foi alterado. Execute `%@ listremotes` para ver o erro e tente de novo.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "Não foi possível verificar se este Mac já tem uma instalação do CloudMachine (o rclone não respondeu), então nenhuma pasta foi escolhida. Tente de novo daqui a pouco.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize falhou (%@). Se esse binário estiver ausente, comece com: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "Não foi possível ler o token da saída de rclone authorize.", + "rclone config create failed.": + "rclone config create falhou.", + "Connected to Google Drive as remote '%@', folder %@.": + "Conectado ao Google Drive como remote '%@', pasta %@.", + "tmutil is not responding - unknown where the backup goes": + "O tmutil não está respondendo - não se sabe para onde vai o backup", + "No successful backup for %@": + "Nenhum backup bem-sucedido há %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Último backup CONCLUÍDO: %@. O ciclo é de hora em hora, então são %@ execuções perdidas.", + "There is NOT A SINGLE successful backup": + "NÃO HÁ NENHUM backup bem-sucedido", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "As preferências do Time Machine não contêm a data de nenhum backup concluído para este destino.", + "The last backup attempt did not end in a backup": + "A última tentativa de backup não resultou em um backup", + "The attempt at %@ is newer than the last successful backup at %@.": + "A tentativa de %@ é mais recente que o último backup bem-sucedido, de %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "O Time Machine relata um erro na última execução (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Um RESULT diferente de zero nas preferências do Time Machine significa que a execução não teve sucesso.", + "rclone failed to upload %@ files": + "O rclone não conseguiu enviar %@ arquivos", + "Buffer full of nothing but unsent data": + "Buffer cheio só de dados não enviados", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "O rclone não tem mais nada a descartar do buffer - o envio não acompanha ou travou.", + "The rclone control interface is not responding": + "A interface de controle do rclone não responde", + "Google Drive is running out of space (%@ GB)": + "O Google Drive está ficando sem espaço (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "O disco do Mac está ficando sem espaço (%@ GB)", + "Cannot read the Time Machine preferences": + "Não é possível ler as preferências do Time Machine", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ não pode ser lido - o mais comum é faltar o Acesso Total ao Disco. Sem este arquivo, NÃO SE SABE quando foi feito o último backup, então tratamos isso como falha, e não como ausência de problema.", + "Cannot measure free space on the Mac's disk": + "Não é possível medir o espaço livre no disco do Mac", + "%@ days": + "%@ dias", + "CloudMachine: backup is not working": + "CloudMachine: o backup não está funcionando", + "unknown reason": + "motivo desconhecido", + "osascript did not show the notification (permissions or no graphical session)": + "O osascript não exibiu a notificação (permissões ou nenhuma sessão gráfica)", + "UNDELIVERED ALARM: %@": + "ALARME NÃO ENTREGUE: %@", + "from %@, reason: %@": + "de %@, motivo: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "A notificação do sistema não foi entregue - você verá este alarme SOMENTE aqui.", + "%@ (%@ ago)": + "%@ (há %@)", + "%@ - marker from the FUTURE": + "%@ - marcador do FUTURO", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (há %@) - O SUPERVISOR PODE NÃO ESTAR EM EXECUÇÃO", + "NEVER - the watchdog has not recorded a single run": + "NUNCA - o supervisor não registrou nenhuma execução", + "Could not find the launchd/ directory with templates.": + "Não foi possível encontrar o diretório launchd/ com os modelos.", + "Could not find the compiled cloudmachine-agent binary.": + "Não foi possível encontrar o binário compilado do cloudmachine-agent.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "ABORTADO: não foi possível colocar o cloudmachine-agent em um local estável\n(%@) - o mais comum é falta de espaço ou de permissões.\nNÃO serão instalados agentes apontando para %@: esse caminho\ndesaparece no próximo `swift build` ou `git clean`, e os backups param\nsem nenhum sinal visível.", + "ABORTED: %@": + "ABORTADO: %@", + "Could not list the templates in %@.": + "Não foi possível listar os modelos em %@.", + "could not read the template %@": + "não foi possível ler o modelo %@", + "could not write %@ (lack of space or permissions)": + "não foi possível gravar %@ (falta de espaço ou de permissões)", + "launchctl load refused to load %@": + "launchctl load recusou-se a carregar %@", + "NOT A SINGLE agent was loaded.": + "NENHUM agente foi carregado.", + "Only these went in: %@.": + "Só estes foram instalados: %@.", + "Could not load any launchd agent.": + "Não foi possível carregar nenhum agente do launchd.", + "Installed agents: %@": + "Agentes instalados: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " AVISO: perto do limite - as novas bandas falharão com EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands no Google Drive não está vazio - pode conter outro backup. NÃO será sobrescrito; verifique manualmente.", + "Address: %@": + "Endereço: %@", + "Already prepared (%@ exists) - nothing to do.": + "Já preparado (%@ existe) - nada a fazer.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Converte a imagem nova e vazia do Time Machine na máquina em bandas de 32 MB e move as bandas para o Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "Copia o rclone.conf para a máquina mesmo que ela já tenha um.", + "Copying the converted image into the machine failed: %@": + "Falha ao copiar a imagem convertida para a máquina: %@", + "Copying the image to the Mac failed: %@": + "Falha ao copiar a imagem para o Mac: %@", + "Could not ask Lima about the machine: %@": + "Não foi possível consultar o Lima sobre a máquina: %@", + "Could not carry the Time Machine files over: %@": + "Não foi possível transferir os arquivos do Time Machine: %@", + "Could not check the image in the machine.": + "Não foi possível verificar a imagem na máquina.", + "Could not copy the rclone configuration into the machine.": + "Não foi possível copiar a configuração do rclone para a máquina.", + "Could not create %@ on Google Drive: %@": + "Não foi possível criar %@ no Google Drive: %@", + "Could not create %@: %@": + "Não foi possível criar %@: %@", + "Could not find the vm/ directory with the machine template.": + "Não foi possível encontrar o diretório vm/ com o modelo da máquina.", + "Could not read the image size.": + "Não foi possível ler o tamanho da imagem.", + "Could not set the SMB password of user %@ in the machine.": + "Não foi possível definir a senha SMB do usuário %@ na máquina.", + "Could not stop smbd in the machine.": + "Não foi possível parar o smbd na máquina.", + "Could not write %@ in the machine.": + "Não foi possível gravar %@ na máquina.", + "Could not write the password file %@.": + "Não foi possível gravar o arquivo de senha %@.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "Cria ou inicia a máquina do CloudMachine (Lima), fornece a ela a configuração do rclone e uma senha SMB, e imprime o comando do Time Machine.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "Criando a máquina %@ (a primeira inicialização baixa o Ubuntu e instala pacotes - vários minutos)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Pronto: %@ tem bandas de %@ MB no Google Drive; o original fica em %@ na máquina. Inicie o backup: tmutil startbackup", + "exit code %@, no message": + "código de saída %@, sem mensagem", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Metadados imagem: NUNCA copiados para %@ - verifique o tm-meta-sync na máquina", + "Image metadata: copied %@ ago to %@": + "Metadados imagem: copiados há %@ para %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Metadados imagem: última cópia há %@ - ATRASADO (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Metadados imagem: ainda não copiados - aguardam vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "Backup %@, pausado pelo guardião %@: %@", + "Free in machine: %@ GiB": + "Livre na máquina: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n encontrou problemas: %@", + "Google Drive folder: %@": + "Pasta do Google Drive: %@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach da imagem convertida falhou: %@", + "hdiutil convert failed: %@": + "hdiutil convert falhou: %@", + "Image name in the machine (default: from the computer name).": + "Nome da imagem na máquina (padrão: derivado do nome do computador).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "A instalação da imagem convertida FALHOU: %@\nO smbd permanece PARADO para que o Time Machine não abra uma imagem instalada pela metade. O original está em %@ na máquina.", + "limactl create failed: %@": + "limactl create falhou: %@", + "limactl list failed: %@": + "limactl list falhou: %@", + "limactl not found - install Lima: brew install lima": + "limactl não encontrado - instale o Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start falhou: %@\nO log da própria máquina: %@", + "Machine %@ is running.": + "A máquina %@ está em execução.", + "Machine %@ was already running.": + "A máquina %@ já estava em execução.", + "Machine: %@ (%@)": + "Máquina: %@ (%@)", + "Machine: %@": + "Máquina: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Máquina: não criada - execute: cloudmachine-agent vm-setup", + "no answer within the time limit": + "sem resposta dentro do limite de tempo", + "No image %@ in the machine.": + "Não há imagem %@ na máquina.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "Ainda não há imagem na máquina - aponte o Time Machine para o compartilhamento e deixe que ele crie uma primeiro.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "Não há configuração do rclone em %@ - conecte primeiro o Google Drive (configure-remote).", + "no SMB destination": + "sem destino SMB", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "Uma verificação do buffer de envio da máquina: pausa o Time Machine quando ele enche e retoma o que pausou.", + "Packing the converted image failed: %@": + "Falha ao empacotar a imagem convertida: %@", + "Packing the image failed: %@": + "Falha ao empacotar a imagem: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "Sem resposta da máquina (rclone rc) - o guardião não faria nada.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Apenas imprime o que o guardião decidiria - para testar limites em uma máquina descartável.", + "Pause above this many GiB in the buffer.": + "Pausar acima desta quantidade de GiB no buffer.", + "Pause when the machine has less free than this, in GiB.": + "Pausar quando a máquina tiver menos livre do que isto, em GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Aponte o Time Machine para a máquina (uma só vez, requer senha de administrador):", + "punchfs files: %@ open, limit %@": + "Arquivos punchfs: %@ abertos, limite %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "Configuração do rclone já está na máquina - mantida (--replace-rclone-config a substitui).", + "rclone configuration copied into the machine.": + "Configuração do rclone copiada para a máquina.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm ou punchfs não está em execução na máquina - veja cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Retomar abaixo desta quantidade de GiB (apenas um backup que o guardião pausou).", + "Service %@: %@": + "Serviço %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "Várias imagens na máquina (%@) - escolha uma com --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Mostra a máquina: endereço, serviços, buffer de envio, espaço livre e o destino do Time Machine.", + "SMB password stored in %@ (mode 600).": + "Senha SMB armazenada em %@ (modo 600).", + "The converted image does not have %@-byte bands.": + "A imagem convertida não tem bandas de %@ bytes.", + "The converted image has no APFS partition.": + "A imagem convertida não tem partição APFS.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "A imagem já ocupa %@ MB - este comando converte apenas uma imagem nova e vazia (abaixo de %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "A imagem está criptografada - converter imagens criptografadas não é suportado.", + "The image was not changed; smbd started again.": + "A imagem não foi alterada; o smbd foi iniciado de novo.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "A máquina não responde - ela está em execução? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "A máquina não tem endereço na rede vzNAT.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "Os serviços da máquina não iniciaram - verifique: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "O Time Machine está fazendo backup - pare-o primeiro: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: NÃO aponta para a máquina (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: o tmutil não respondeu", + "tmutil did not answer - not touching the image while its state is unknown.": + "O tmutil não respondeu - a imagem não será tocada enquanto o estado for desconhecido.", + "unknown": + "desconhecido", + "Unpacking the image failed: %@": + "Falha ao descompactar a imagem: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "Ainda para enviar: %@ GiB em %@ bandas, enviando %@ (cache no disco %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "%@ (a máquina e seu buffer de envio) foi excluído do Time Machine.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "AVISO: não foi possível excluir %@ do Time Machine - execute: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Buffer de envio: sem resposta do rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Quando o Time Machine tiver criado a imagem vazia, pare o backup (tmutil stopbackup) e execute: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "Não enviados %@ GiB, livres %@ GiB (pausa acima de %@ GiB não enviados ou abaixo de %@ GiB livres, retoma abaixo de %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Envio: o limite diário do Google recusou um envio há %@ - o rclone tenta de novo a cada 5 min e retoma sozinho", + "no": + "não", + "running": + "em execução", + "stopped": + "parado", + "yes": + "sim", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nO modelo anterior está em %@ - copie-o de volta sobre lima.yaml e execute limactl start %@.", + "Could not read this app's machine template (limactl template copy).": + "Não foi possível ler o modelo de máquina deste app (limactl template copy).", + "Could not replace %@: %@": + "Não foi possível substituir %@: %@", + "Machine %@ already runs this app's template.": + "A máquina %@ já usa o modelo deste app.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "A máquina %@ agora usa o modelo deste app; o anterior está em %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Move a máquina para o modelo deste app (duas reinicializações, nunca durante um backup).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "Não existe a máquina %@ - crie-a com: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Modelo: MAIS ANTIGO que o deste app - execute: cloudmachine-agent vm-update", + "Template: not compared": + "Modelo: não comparado", + "Template: this app's": + "Modelo: o deste app", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "A máquina não tem %@ - execute antes cloudmachine-agent vm-setup.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "A máquina reiniciou, mas nem todos os serviços estão em execução - verifique: cloudmachine-agent vm-status. O modelo anterior está em %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "O modelo altera a própria máquina (%@) - isso exige uma máquina nova, não uma atualização.", + "The upload to Google Drive hangs": + "O envio para o Google Drive está travado", + "Time Machine is backing up - try again when it has finished.": + "O Time Machine está fazendo backup - tente de novo quando terminar.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Envio: TRAVADO - bandas em andamento, nenhuma enviada há %@ (rede?); veja /var/log/rclone-tm.log na máquina", + "limactl stop failed - nothing was changed.": + "limactl stop falhou - nada foi alterado.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "O rclone tem bandas em andamento, mas nenhuma foi enviada há %@ - normalmente uma conexão de rede interrompida, que o rclone não relata como erro. Os backups desde então estão apenas no buffer da máquina. Quando a rede voltar, o envio retoma sozinho (em 28.10.2026, em 80 s); se não retomar, reiniciar a máquina (prepare-shutdown, limactl start) descarta as conexões mortas.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "O tmutil não respondeu - a máquina não será reiniciada enquanto o estado for desconhecido.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+ru.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+ru.swift new file mode 100644 index 0000000..5fd47db --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+ru.swift @@ -0,0 +1,951 @@ +// Russian translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let ru: [String: String] = [ + "Space limit: %@": + "Лимит места: %@", + " Time Machine quota not set to match - run: %@": + " Квота Time Machine не соответствует - выполните: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Задаёт, сколько места на Google Drive может занять этот Mac, и выводит команду для квоты Time Machine.", + "Limit in GB.": + "Лимит в GB.", + "Limit for this Mac: %@ GB.": + "Лимит для этого Mac: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Теперь задайте квоту Time Machine (потребуется пароль администратора):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - проверка, настройка Google Drive и установка. Вызывается launchd по расписанию или вручную из Терминала.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "Подключается к Google Drive через rclone (OAuth в браузере) и создаёт папку этой машины.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Перезаписать существующий remote. РИСКОВАННО: заменяет токен и права доступа.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "Упаковывает build/CloudMachine.app в build/CloudMachine-<версия>.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "ОШИБКА: %@ отсутствует - сначала выполните 'cloudmachine-agent build-app'", + "==> Preparing the staging folder": + "==> Подготавливаю папку staging", + "==> Creating %@": + "==> Создаю %@", + "ERROR: hdiutil exited with code %@.": + "ОШИБКА: hdiutil завершился с кодом %@.", + "==> Done: %@": + "==> Готово: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "При первом запуске (приложение не подписано учётной записью Apple Developer):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. Откройте %@ и перетащите CloudMachine.app в «Программы».", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. В Finder щёлкните CloudMachine.app ПРАВОЙ кнопкой -> Открыть -> Открыть\n (обычный двойной щелчок покажет блокировку Gatekeeper «неопознанный разработчик»).", + "3. Later launches work normally, with a double-click.": + "3. Последующие запуски работают как обычно, двойным щелчком.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "Собирает CloudMachine.app (Release) - GUI + cloudmachine-agent в Contents/MacOS/, плюс launchd/, vm/ и config/ как Resources.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Бинарные файлы сразу для Apple Silicon и Intel (так CI собирает релиз; локально не нужно).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> Собираю CloudMachineApp + cloudmachine-agent (release) - версия %@ (%@)", + "ERROR: swift build exited with code %@.": + "ОШИБКА: swift build завершился с кодом %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "ОШИБКА: swift build --show-bin-path не вернул каталог с бинарными файлами.", + "ERROR: no built binary found at %@": + "ОШИБКА: собранный бинарный файл не найден: %@", + "==> Assembling the .app bundle in %@": + "==> Собираю пакет .app в %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> ВНИМАНИЕ: сборка выполняется из ГРЯЗНОГО дерева - версия не будет указывать на коммит.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "ОШИБКА: Resources/AppIcon.icns отсутствует - создайте его: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Подписываю локальным сертификатом '%@' (Полный доступ к диску сохранится после следующих пересборок)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Подписываю ad-hoc (без учётной записи Apple Developer) - выполните один раз 'cloudmachine-agent setup-signing-cert', чтобы разрешения TCC сохранялись после следующих пересборок", + "ERROR: codesign exited with code %@.": + "ОШИБКА: codesign завершился с кодом %@.", + "Next step: %@": + "Следующий шаг: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Создаёт локальный самоподписанный сертификат, чтобы Полный доступ к диску сохранялся после следующих пересборок приложения.", + "Certificate '%@' already exists in %@, nothing to do.": + "Сертификат '%@' уже есть в %@, делать нечего.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Создаю ключ и самоподписанный сертификат '%@'...", + "ERROR: openssl req exited with code %@.": + "ОШИБКА: openssl req завершился с кодом %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "ОШИБКА: openssl pkcs12 завершился с кодом %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Импортирую сертификат в %@ (заранее разрешаю /usr/bin/codesign, чтобы пароль связки ключей не запрашивался каждый раз)...", + "ERROR: security import exited with code %@.": + "ОШИБКА: security import завершился с кодом %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> Доверяю сертификату ТОЛЬКО для подписи кода...", + "ERROR: security add-trusted-cert exited with code %@.": + "ОШИБКА: security add-trusted-cert завершился с кодом %@.", + "Done. Certificate '%@' is now available to codesign.": + "Готово. Сертификат '%@' теперь доступен для codesign.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "Следующая команда 'cloudmachine-agent build-app' автоматически использует его вместо подписи ad-hoc.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "После ЭТОЙ ОДНОЙ пересборки ещё раз выдайте Полный доступ к диску - последующие\nпересборки его больше не сбросят, пока вы подписываете тем же сертификатом.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Проверяет, РАБОТАЕТ ли ещё ежечасный цикл (дата последней УСПЕШНОЙ копии), и сообщает о сбоях.", + "After this many hours without a successful backup we consider the cycle broken.": + "Через столько часов без успешной копии цикл считается нарушенным.", + "Only print the state, without a system notification.": + "Только вывести состояние, без системного уведомления.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "Другой файл настроек Time Machine - чтобы проверить наблюдателя на известном образце.", + "Last successful backup: %@": + "Последняя успешная копия: %@", + "Last successful backup: NONE": + "Последняя успешная копия: НЕТ", + "Last attempt: %@": + "Последняя попытка: %@", + "WAITING (system startup): %@": + "ОЖИДАНИЕ (запуск системы): %@", + "Backup cycle: OK": + "Цикл копирования: OK", + "FAILURE: %@": + "СБОЙ: %@", + " %@": + " %@", + "Check the state: %@": + "Проверить состояние: %@", + "Preparing for restart": + "Подготовка к перезагрузке", + "Prepare for restart": + "Подготовить к перезагрузке", + "Prepare": + "Подготовить", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> ВНИМАНИЕ: git rev-list завершился с ошибкой (%@) - в качестве номера сборки используется дата.", + "Agents: %@": + "Агенты: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "НЕ ЗАПУСКАЮТСЯ: %@ - откройте CloudMachine или выполните backup-health, чтобы перезагрузить их", + "Reloaded agents that could not start: %@": + "Перезагружены агенты, которые не смогли запуститься: %@", + "Drive folder: %@": + "Папка на Drive: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Имя папки этого Mac на Google Drive (по умолчанию берётся из имени компьютера). Задаётся один раз; позже изменить нельзя.", + "Backup watchdog: %@": + "Наблюдатель: %@", + "Prints the version, the build number and the commit this binary was built from.": + "Выводит версию, номер сборки и коммит, из которого собран этот бинарный файл.", + "Only one line, without a description.": + "Только одна строка, без описания.", + "Build from the working tree (outside a bundle) - no version data.": + "Сборка из рабочего дерева (вне пакета) - данных о версии нет.", + "Version: %@": + "Версия: %@", + "Build: %@": + "Сборка: %@", + "Commit: %@": + "Коммит: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "ВНИМАНИЕ: собрано из ГРЯЗНОГО дерева - в бинарном файле есть код,\n которого нет ни в одном коммите. Номер коммита НЕ описывает\n то, что действительно работает.", + "Saving the space limit": + "Сохраняю лимит места", + "Measuring usage on Google Drive": + "Измеряю занятое место на Google Drive", + "Google Drive did not answer - try again later.": + "Google Drive не ответил - повторите попытку позже.", + "Measured.": + "Измерено.", + "Space limit for this Mac": + "Лимит места для этого Mac", + "Used on Google Drive": + "Занято на Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "Измерено: %@. Наблюдатель измеряет повторно каждые несколько часов.", + "Limit (GB)": + "Лимит (GB)", + "Save": + "Сохранить", + "Measure now": + "Измерить сейчас", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Квота Time Machine: %@ GB (70%% от лимита - копия на Drive примерно на треть больше резервной копии внутри неё). Time Machine удаляет самые старые копии, чтобы уложиться в неё.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Задать квоту Time Machine: выполните это в Терминале (нужен sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Подключить Google Drive: выполните это в Терминале и подтвердите в браузере", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "Предоставьте CloudMachine Полный доступ к диску, чтобы он мог определять, завершаются ли копии", + "Folder on Google Drive": + "Папка на Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Одна папка на каждый Mac. Задаётся один раз - после подключения изменить нельзя.", + "Use lowercase letters, digits and dashes.": + "Используйте строчные латинские буквы, цифры и дефисы.", + "Install rclone": + "Установить rclone", + "Open System Settings": + "Открыть Системные настройки", + "Install agents": + "Установить агентов", + "not checked": + "не проверено", + "none at all": + "нет ни одной", + "%@ ago": + "%@ назад", + "Missing: %@": + "Не хватает: %@", + "Google Drive not connected": + "Google Drive не подключён", + "Time Machine does not point to CloudMachine": + "Time Machine не указывает на CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "НЕИЗВЕСТНО, указывает ли Time Machine на CloudMachine - tmutil не ответил", + "Backup in progress": + "Идёт копирование", + "Unknown when the last backup was made": + "Неизвестно, когда была сделана последняя копия", + "There is no completed backup at all": + "Нет ни одной завершённой копии", + "No completed backup for %@": + "Нет завершённой копии уже %@", + "Ready": + "Готово", + "Not saved: %@": + "Не сохранено: %@", + "Installing rclone": + "Устанавливаю rclone", + "Installing launchd agents": + "Устанавливаю агентов launchd", + "Starting backup": + "Запускаю копирование", + "Backup started.": + "Копирование запущено.", + "Could not start the backup.": + "Не удалось запустить копирование.", + "Stopping backup": + "Останавливаю копирование", + "Backup stopped.": + "Копирование остановлено.", + "Could not stop the backup.": + "Не удалось остановить копирование.", + "Could not prepare the AppleScript.": + "Не удалось подготовить AppleScript.", + "Unknown authorization error.": + "Неизвестная ошибка авторизации.", + "Waiting to upload": + "Ожидает отправки", + "%@ files": + "Файлов: %@", + "nothing": + "ничего", + "Back up now": + "Копировать сейчас", + "Stop backup": + "Остановить копирование", + "Open CloudMachine": + "Открыть CloudMachine", + "Quit": + "Завершить", + "Healthy": + "Исправно", + "Attention": + "Внимание", + "Refreshed %@": + "Обновлено %@", + "System Status": + "Состояние системы", + "Action needed": + "Требуется действие", + "not measured": + "не измерено", + "rclone did not answer": + "rclone не ответил", + "Backup in Progress": + "Идёт копирование", + "Files processed": + "Обработано файлов", + "Write speed": + "Скорость записи", + "Operation phase": + "Фаза операции", + "Required Setup Steps": + "Обязательные шаги настройки", + "Copy": + "Скопировать", + "Last completed backup": + "Последняя завершённая копия", + "Last backup watchdog run": + "Последний запуск наблюдателя", + "not read": + "не прочитано", + "Everything uploaded": + "Всё отправлено", + "File upload errors": + "Ошибки отправки файлов", + "Google Drive Credentials (OAuth 2.0)": + "Учётные данные Google Drive (OAuth 2.0)", + "Keychain OK": + "Связка ключей: OK", + "No custom keys": + "Своих ключей нет", + "Paste client_id...": + "Вставьте client_id...", + "Paste client_secret...": + "Вставьте client_secret...", + "Save securely in the Keychain": + "Надёжно сохранить в Связке ключей", + "Refresh": + "Обновить", + "Overview": + "Обзор", + "Backups": + "Копии", + "Storage": + "Место", + "Settings": + "Настройки", + "Current status: %@": + "Текущее состояние: %@", + "Does not point to CloudMachine": + "Не указывает на CloudMachine", + "tmutil did not answer": + "tmutil не ответил", + "Backing up: %@ of %@": + "Копирование: %@ из %@", + "%@ of %@": + "%@ из %@", + "Copied": + "Скопировано", + "No backup is running": + "Копирование сейчас не идёт", + "Time Machine starts the next one on its own schedule.": + "Time Machine запустит следующее по собственному расписанию.", + "Backup cycle": + "Цикл копирования", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB, полос: %@, отправляется: %@", + "%@ bands": + "Полос: %@", + "%@ fragments abandoned - only in the machine": + "Брошено фрагментов: %@ - они только в машине", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 отвечает на Mac: Lima пробрасывает удалённое управление rclone из машины, которое не защищено паролем. Любая веб-страница, открытая в браузере, может отправить ему команды - в том числе удалить копию на Google Drive. Добавьте в машину правило portForwards из vm/cmsmb.yaml и перезапустите её (см. vm/README.md).", + "A service in the CloudMachine machine is not running": + "Служба в машине CloudMachine не работает", + "Address": + "Адрес", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Установка агентов НЕПОЛНАЯ - не установлено %@ из %@:\n%@\n%@\nКаждый отсутствующий агент - это функция, которая тихо перестала работать (vm-guard следит за буфером машины, backup-health сообщает о сбоях). Устраните причину и повторите установку.", + "All running": + "Все работают", + "Also install the launchd agents (same as install-launchd).": + "Также установить агентов launchd (то же, что install-launchd).", + "At most this many minutes of waiting for the upload.": + "Ждать отправку не более стольких минут.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "При достижении лимита каждая новая полоса завершается ошибкой EMFILE, и копирование останавливается. Проверьте: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Кэш на диске машины", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Подключение к Google Drive выполнено, но создать папку '%@' не удалось - без неё машине негде хранить копию. Проверьте права учётной записи и повторите попытку.", + "Convert the image": + "Преобразовать образ", + "Converting the image to 32 MB bands": + "Преобразование образа в полосы по 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "Текущим подключением не удалось проверить, есть ли копия на Google Drive (%@), поэтому remote '%@' НЕ заменён: без этого ответа новый вход нельзя с ней сверить.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Скачивает официальный бинарный файл rclone в ~/.cloudmachine/bin (вход в Google и rclone.conf машины).", + "Free in the machine": + "Свободно в машине", + "Free in the machine: %@": + "Свободно в машине: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "Создаёт и устанавливает агентов launchd (приложение, наблюдатель копий, запуск машины, страж машины).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "Установите Lima, которая запускает машину CloudMachine: выполните это в Терминале", + "Install rclone (signs in to Google Drive for the machine)": + "Установите rclone (выполняет вход машины в Google Drive)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Установите фоновых агентов (запуск машины, страж буфера, наблюдатель копий)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Устанавливает rclone через Homebrew - сам CloudMachine использует тот, что из install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, token и mapped/ образа копии есть только на диске машины; без них полосы в %@ восстановить нельзя. Копия (tm-meta-sync, каждые 15 мин) отправляется в %@. Проверьте: cloudmachine-agent vm-status, затем в машине: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima сообщает, что машина работает, но команда в ней не вернула результат. Без этого ничего не известно о Samba, rclone и отправке. Проверьте: cloudmachine-agent vm-status", + "Machine": + "Машина", + "Machine %@": + "Машина %@", + "Machine & Upload Status": + "Состояние машины и отправки", + "Machine buffer": + "Буфер машины", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Ни одно место назначения Time Machine не является общим ресурсом машины (smb://tm@<адрес>/CloudMachine) - копии туда не делаются. Команду выводит: cloudmachine-agent vm-setup", + "Not running: %@": + "Не работает: %@", + "Not set up": + "Не настроена", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "Когда он закончится, rclone перестанет отправлять данные, буфер машины заполнится, и копии перестанут создаваться. При приросте ~600 MB за часовой цикл это около %@ дн.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "Либо отсутствует rclone.conf: на этом Mac машина CloudMachine уже настроена, поэтому вслепую заново не подключается. Восстановите файл из копии (машина хранит собственную копию в %@). Чтобы всё же подключиться, создайте пустой файл по пути, который выводит `%@ config file`, и запустите снова - существующая папка сохранится.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Укажите Time Machine машину: выполните это в Терминале (нужен sudo; «Скопировать» включает пароль)", + "Points to the machine": + "Указывает на машину", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Готовит к перезагрузке: останавливает копирование, немного ждёт отправку, затем корректно останавливает машину.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "Чтение места назначения Time Machine не завершилось за %@ s. Так tmutil ведёт себя, когда его место назначения зависло.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "Remote '%@' НЕ заменён. Новый вход получает область 'drive.file', которая видит только файлы, созданные под собственным client_id. Существующая копия, скорее всего, создана текущим подключением и стала бы для него невидимой. Прежде чем что-либо записать, новый токен проверяется на существующей копии, и замена отменяется, если он её не видит. Машина хранит собственную копию конфигурации до vm-setup --replace-rclone-config. Чтобы продолжить, запустите снова с --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Удалённое управление: ОТКРЫТО на Mac по адресу 127.0.0.1:5572 - любая страница может отправлять команды rclone; см. vm/README.md (portForwards)", + "Running": + "Работает", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone или punchfs в машине не активны, поэтому Time Machine некуда писать либо полосы не попадают на Google Drive. Проверьте: cloudmachine-agent vm-status", + "Service %@": + "Служба %@", + "Services": + "Службы", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "Настройте машину CloudMachine (при первом запуске скачивается Ubuntu - несколько минут)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "Настройте машину CloudMachine заново, чтобы она вывела команду для Time Machine", + "Set up the machine": + "Настроить машину", + "Setting up the CloudMachine machine": + "Настройка машины CloudMachine", + "Start the CloudMachine machine": + "Запустите машину CloudMachine", + "Start the machine": + "Запустить машину", + "Starting the CloudMachine machine": + "Запуск машины CloudMachine", + "Still to upload: %@ GiB": + "Осталось отправить: %@ GiB", + "Stopping the Time Machine backup...": + "Остановка копирования Time Machine...", + "Stopping the machine %@...": + "Остановка машины %@...", + "The CloudMachine machine does not answer": + "Машина CloudMachine не отвечает", + "The CloudMachine machine is not running": + "Машина CloudMachine не работает", + "The CloudMachine machine is not set up yet": + "Машина CloudMachine ещё не настроена", + "The CloudMachine machine is stopped": + "Машина CloudMachine остановлена", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "Копирование останавливается, на отправку отводится до 30 минут, затем машина корректно выключается. При следующем входе она запустится снова.", + "The machine %@ is not running - nothing to prepare.": + "Машина %@ не работает - готовить нечего.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "Машина остановлена, и всё дошло до Google Drive. Mac можно перезагружать; машина запустится снова при входе.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Машина остановлена. %@ GiB ещё не дошло до Google Drive - оно хранится в буфере машины и будет отправлено после следующего запуска. Mac можно перезагружать.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Машина остановлена. rclone не сообщил, сколько ещё осталось отправить; неотправленное хранится в буфере машины и будет отправлено после следующего запуска. Mac можно перезагружать.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "Диск машины - это файл на этом диске, и он растёт по мере заполнения буфера отправки. Без свободного места машина не сможет записывать буфер, а локальным снимкам Time Machine тоже некуда будет деваться.", + "The image's metadata has never been copied to Drive": + "Метаданные образа ни разу не копировались на Drive", + "The image's metadata was last copied to Drive %@ ago": + "Метаданные образа последний раз копировались на Drive %@ назад", + "The machine's disk is running out of space (%@ GB)": + "На диске машины заканчивается место (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "Новый вход НЕ видит существующую копию (%@), поэтому remote '%@' НЕ заменён, а rclone.conf не изменён. Оставьте текущее подключение либо войдите с учётными данными (client_id), которыми была создана копия.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "Буфер отправки находится на этом диске. Страж приостанавливает Time Machine до его заполнения; если отправка не успевает, копирование остаётся приостановленным.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Эти полосы существуют только в буфере машины. Копия на Google Drive НЕПОЛНАЯ и может не открыться.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine копирует в машину, поэтому без неё копии не создаются. Запустите её: limactl start %@ (или кнопкой в приложении).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine не остановил копирование за 2 минуты (или tmutil не ответил) - машина НЕ остановлена. Повторите через минуту.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine создал свой образ: остановите копирование, затем преобразуйте образ в полосы по 32 MB", + "To upload": + "К отправке", + "Unknown whether the CloudMachine machine is running": + "Неизвестно, работает ли машина CloudMachine", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Ожидание отправки на Google Drive (не более %@ мин)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "С --replace-existing: подтверждает, что новый вход (область 'drive.file') может не видеть существующую копию. Новый токен всё равно сначала проверяется на копии.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "Без него нельзя проверить, дошло ли что-нибудь до Drive - страж машины тогда слеп.", + "limactl did not answer": + "limactl не ответил", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl не ответил (или не установлен). Это не значит, что машина не работает - это значит, что никто не проверил.", + "limactl start failed: %@": + "limactl start завершился с ошибкой: %@", + "limactl stop failed: %@": + "limactl stop завершился с ошибкой: %@", + "punchfs is close to its open-file limit": + "punchfs близок к лимиту открытых файлов", + "punchfs open files": + "Открытые файлы punchfs", + "rclone's remote control is open on this Mac": + "Удалённое управление rclone открыто на этом Mac", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') вернул ошибку, поэтому неизвестно, может ли диск машины ещё расти на этом Mac.", + "Google Drive's daily upload limit stops the upload": + "Суточный лимит отправки Google Drive остановил отправку", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google отклонил отправку %@ назад (750 GB в сутки). Копии с тех пор находятся только в буфере машины на этом Mac. rclone повторяет попытку каждые 5 мин и сам возобновит отправку, когда лимит снимется; страж приостановит Time Machine, если ждут отправки более %@ GiB.", + "Usage on Google Drive is not being measured": + "Занятое место на Google Drive не измеряется", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "Последнее измерение (%@ GB) от %@, %@ назад - с тех пор rclone size не отвечает. Пока он не ответит, за лимитом %@ GB никто не следит: оповещения о 90%% и 100%% молчат. Проверьте vm-status или нажмите «Измерить сейчас» в окне.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size не ответил ни разу. Пока он не ответит, за лимитом %@ GB никто не следит: оповещения о 90%% и 100%% молчат. Проверьте vm-status или нажмите «Измерить сейчас» в окне.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Сохранено в Связке ключей. При подключении Google Drive (configure-remote) они будут использованы.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Сохранено в Связке ключей. Существующее подключение к Google Drive остаётся со старым client_id, и на этом Mac так и должно быть: подключение с новыми ключами (область 'drive.file') не видит копию, созданную старым. Не заменяйте здесь подключение; новые ключи предназначены для Mac, который ещё не подключён.", + "it is not there for the new token": + "для нового токена её нет", + "Cancel": + "Отмена", + "ACTION NEEDED": + "ТРЕБУЕТСЯ ДЕЙСТВИЕ", + "WILL PASS BY ITSELF — DO NOTHING": + "ПРОЙДЁТ САМО — НИЧЕГО НЕ ДЕЛАЙТЕ", + "UNKNOWN — CHECK AGAIN SHORTLY": + "НЕИЗВЕСТНО — ПРОВЕРЬТЕ ЕЩЁ РАЗ ЧУТЬ ПОЗЖЕ", + "ALL GOOD": + "ВСЁ В ПОРЯДКЕ", + "Upload is not working": + "Отправка не работает", + "Upload stopped — no space left on Google Drive": + "Отправка остановлена — на Google Drive нет места", + "%@ backup fragments not uploaded": + "Не отправлено фрагментов копии: %@", + "Upload cannot keep up with writes": + "Отправка не успевает за записью", + "Upload paused — Google daily limit": + "Отправка приостановлена — суточный лимит Google", + "Uploading to Google Drive — %@ queued": + "Отправка на Google Drive — в очереди: %@", + "Everything uploaded to Google Drive": + "Всё отправлено на Google Drive", + "Unknown what is waiting in the queue": + "Неизвестно, что ждёт в очереди", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Нет подключения к Google Drive, поэтому копии создаются только на этом Mac. Если это не пройдёт само за несколько минут, проверьте сеть и подключение к Drive.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "На Google Drive не осталось места. Это НЕ пройдёт само — нужно освободить место на Drive. До тех пор Time Machine приостановлен, чтобы не заполнить диск этого Mac.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "Не удалось отправить фрагментов копии: %@, и rclone прекратил попытки. Эти фрагменты есть только на этом Mac, поэтому копия на Drive неполная. Это нужно проверить.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine пишет быстрее, чем идёт отправка, и буфер заполнился. Копирование будет приостановлено, пока отправка не догонит — это защита от заполнения диска, а не сбой.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google принимает 750 GB в сутки, и этот лимит исчерпан. Делать ничего не нужно: лимит обновляется сам, обычно в течение нескольких часов. Копии Time Machine тем временем создаются как обычно и ждут в буфере — они будут отправлены, как только Google снова начнёт принимать данные.", + "%@ backup fragments are queued and on their way to Drive.": + "Фрагментов копии в очереди и на пути к Drive: %@.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "В очереди ничего нет — копия на Google Drive полная.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone не ответил на вопрос об очереди, поэтому неизвестно, сколько копий ещё ждёт отправки. Это не значит, что что-то сломалось — под нагрузкой ответ может запаздывать. Это лишь означает, что сейчас этого никто не знает. Если так будет и дальше, об этом сообщит проверка цикла копирования.", + "unknown error": + "неизвестная ошибка", + "rclone lsf ended with an error": + "rclone lsf завершился с ошибкой", + "This Mac is close to its space limit on Google Drive": + "Этот Mac приближается к лимиту места на Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "Занято %@ GB из %@ GB. Time Machine удаляет самые старые копии, чтобы уложиться в квоту; убедитесь, что квота задана (vm-status).", + "This Mac is over its space limit on Google Drive": + "Этот Mac превысил лимит места на Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "Занято %@ GB из %@ GB. Задайте квоту Time Machine (команда в окне приложения или в vm-status) либо увеличьте лимит.", + "not set": + "не задан", + "%@ GB - usage not measured yet": + "%@ GB - занятое место ещё не измерено", + "%@ of %@ GB used (%@%%)": + "Занято %@ из %@ GB (%@%%)", + "The limit must be a whole number of GB above zero.": + "Лимит должен быть целым числом GB больше нуля.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "Не удаётся прочитать machines.json, поэтому он не перезаписан. Сначала исправьте или удалите его.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' - недопустимое имя папки: используйте строчные латинские буквы, цифры и дефисы.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Этот Mac уже копирует в папку '%@'. Переход на '%@' начал бы новую пустую копию и оставил бы существующую без владельца, поэтому ничего не изменено.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "На этом Mac уже установлен CloudMachine, его копия лежит в папке '%@'. Переход на '%@' оставил бы её без владельца, поэтому ничего не изменено.", + "Could not save the folder name to %@: %@": + "Не удалось сохранить имя папки в %@: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew не установлен. Установите его вручную: https://brew.sh", + "Installing rclone failed: %@": + "Не удалось установить rclone: %@", + "Installed rclone.": + "rclone установлен.", + "Own Google credentials: set.": + "Собственные учётные данные Google: заданы.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "НЕПОЛНЫЕ: не хватает %@ - rclone всё равно будет использовать общий client_id rclone.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Собственных учётных данных нет - rclone использует общий client_id, лимит на который общий и который будет выведен из обращения в 2026 году.", + "Empty value - not saving.": + "Пустое значение - не сохраняю.", + "Keychain refused: %@": + "Связка ключей отказала: %@", + "DIRTY-TREE": + "ГРЯЗНОЕ-ДЕРЕВО", + "Cannot create the working directory: %@": + "Не удаётся создать рабочий каталог: %@", + "Could not read the rclone version number.": + "Не удалось прочитать номер версии rclone.", + "Could not download %@.": + "Не удалось скачать %@.", + "No entry for %@ in SHA256SUMS.": + "Нет записи для %@ в SHA256SUMS.", + "Could not compute the checksum.": + "Не удалось вычислить контрольную сумму.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "Контрольная сумма SHA256 не совпадает - НЕ устанавливаю.\n ожидалась: %@\n вычислена: %@", + "Could not unpack the archive.": + "Не удалось распаковать архив.", + "Could not install the binary: %@": + "Не удалось установить бинарный файл: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %@ установлен в %@ (контрольная сумма SHA256 совпадает).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ не ответил за отведённое время (процесс остался в фоне без владельца).", + "Cannot launch %@: %@": + "Не удаётся запустить %@: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "Remote '%@' уже существует и НЕ тронут.\nПерезапись заменяет токен и область прав; учётные данные с областью 'drive.file' не видят файлы, созданные предыдущими, поэтому существующая копия становится недоступной.\nЕсли вы действительно хотите его заменить, сначала сделайте копию ~/.config/rclone/rclone.conf и запустите снова с --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "Не удалось проверить, существует ли уже remote '%@' (rclone listremotes не ответил или завершился с ошибкой), поэтому ничего не изменено. Выполните `%@ listremotes`, чтобы увидеть ошибку, и повторите попытку.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "Не удалось проверить, установлен ли на этом Mac CloudMachine (rclone не ответил), поэтому папка не выбрана. Повторите попытку через минуту.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize завершился с ошибкой (%@). Если этого бинарного файла нет, начните с: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "Не удалось прочитать токен из вывода rclone authorize.", + "rclone config create failed.": + "rclone config create завершился с ошибкой.", + "Connected to Google Drive as remote '%@', folder %@.": + "Подключено к Google Drive как remote '%@', папка %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil не отвечает - неизвестно, куда идёт копия", + "No successful backup for %@": + "Нет успешной копии уже %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Последняя ЗАВЕРШЁННАЯ копия: %@. Цикл часовой, поэтому пропущено запусков: %@.", + "There is NOT A SINGLE successful backup": + "НЕТ НИ ОДНОЙ успешной копии", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "В настройках Time Machine нет даты завершённой копии для этого места назначения.", + "The last backup attempt did not end in a backup": + "Последняя попытка копирования не закончилась копией", + "The attempt at %@ is newer than the last successful backup at %@.": + "Попытка в %@ новее последней успешной копии в %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine сообщает об ошибке при последнем запуске (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Ненулевой RESULT в настройках Time Machine означает, что запуск не удался.", + "rclone failed to upload %@ files": + "rclone не удалось отправить файлов: %@", + "Buffer full of nothing but unsent data": + "Буфер полон одних неотправленных данных", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "В буфере rclone больше нечего вытеснять - отправка не успевает или стоит.", + "The rclone control interface is not responding": + "Интерфейс управления rclone не отвечает", + "Google Drive is running out of space (%@ GB)": + "На Google Drive заканчивается место (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "На диске Mac заканчивается место (%@ GB)", + "Cannot read the Time Machine preferences": + "Не удаётся прочитать настройки Time Machine", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ нечитаем - чаще всего не выдан Полный доступ к диску. Без этого файла НЕИЗВЕСТНО, когда была сделана последняя копия, поэтому мы считаем это сбоем, а не отсутствием проблемы.", + "Cannot measure free space on the Mac's disk": + "Не удаётся измерить свободное место на диске Mac", + "%@ days": + "Дней: %@", + "CloudMachine: backup is not working": + "CloudMachine: копирование не работает", + "unknown reason": + "причина неизвестна", + "osascript did not show the notification (permissions or no graphical session)": + "osascript не показал уведомление (нет разрешений или нет графического сеанса)", + "UNDELIVERED ALARM: %@": + "НЕДОСТАВЛЕННОЕ ОПОВЕЩЕНИЕ: %@", + "from %@, reason: %@": + "от %@, причина: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "Системное уведомление не доставлено - это оповещение вы увидите ТОЛЬКО здесь.", + "%@ (%@ ago)": + "%@ (%@ назад)", + "%@ - marker from the FUTURE": + "%@ - метка из БУДУЩЕГО", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (%@ назад) - НАБЛЮДАТЕЛЬ, ВОЗМОЖНО, НЕ РАБОТАЕТ", + "NEVER - the watchdog has not recorded a single run": + "НИКОГДА - наблюдатель не записал ни одного запуска", + "Could not find the launchd/ directory with templates.": + "Не найден каталог launchd/ с шаблонами.", + "Could not find the compiled cloudmachine-agent binary.": + "Не найден скомпилированный бинарный файл cloudmachine-agent.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "ПРЕРВАНО: не удалось поместить cloudmachine-agent в постоянное место\n(%@) - чаще всего из-за нехватки места или прав.\nАгенты, указывающие на %@, НЕ устанавливаются: этот путь\nисчезнет при следующем `swift build` или `git clean`, и копирование\nпрекратится без какого-либо заметного сигнала.", + "ABORTED: %@": + "ПРЕРВАНО: %@", + "Could not list the templates in %@.": + "Не удалось получить список шаблонов в %@.", + "could not read the template %@": + "не удалось прочитать шаблон %@", + "could not write %@ (lack of space or permissions)": + "не удалось записать %@ (нет места или прав)", + "launchctl load refused to load %@": + "launchctl load отказался загружать %@", + "NOT A SINGLE agent was loaded.": + "НЕ ЗАГРУЖЕН НИ ОДИН агент.", + "Only these went in: %@.": + "Установлены только: %@.", + "Could not load any launchd agent.": + "Не удалось загрузить ни одного агента launchd.", + "Installed agents: %@": + "Установлено агентов: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " ВНИМАНИЕ: близко к лимиту - новые полосы завершатся ошибкой EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands на Google Drive не пуст - там может быть другая копия. НЕ перезаписываю; проверьте вручную.", + "Address: %@": + "Адрес: %@", + "Already prepared (%@ exists) - nothing to do.": + "Уже подготовлено (%@ существует) - делать нечего.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Преобразует новый пустой образ Time Machine в машине в полосы по 32 MB и переносит полосы на Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "Скопировать rclone.conf в машину, даже если он там уже есть.", + "Copying the converted image into the machine failed: %@": + "Не удалось скопировать преобразованный образ в машину: %@", + "Copying the image to the Mac failed: %@": + "Не удалось скопировать образ на Mac: %@", + "Could not ask Lima about the machine: %@": + "Не удалось запросить у Lima данные о машине: %@", + "Could not carry the Time Machine files over: %@": + "Не удалось перенести файлы Time Machine: %@", + "Could not check the image in the machine.": + "Не удалось проверить образ в машине.", + "Could not copy the rclone configuration into the machine.": + "Не удалось скопировать конфигурацию rclone в машину.", + "Could not create %@ on Google Drive: %@": + "Не удалось создать %@ на Google Drive: %@", + "Could not create %@: %@": + "Не удалось создать %@: %@", + "Could not find the vm/ directory with the machine template.": + "Не найден каталог vm/ с шаблоном машины.", + "Could not read the image size.": + "Не удалось прочитать размер образа.", + "Could not set the SMB password of user %@ in the machine.": + "Не удалось задать пароль SMB пользователя %@ в машине.", + "Could not stop smbd in the machine.": + "Не удалось остановить smbd в машине.", + "Could not write %@ in the machine.": + "Не удалось записать %@ в машине.", + "Could not write the password file %@.": + "Не удалось записать файл с паролем %@.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "Создаёт или запускает машину CloudMachine (Lima), передаёт ей конфигурацию rclone и пароль SMB и выводит команду для Time Machine.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "Создаю машину %@ (при первом запуске скачивается Ubuntu и устанавливаются пакеты - несколько минут)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Готово: у %@ полосы по %@ MB на Google Drive; оригинал хранится в %@ в машине. Запустите копирование: tmutil startbackup", + "exit code %@, no message": + "код выхода %@, без сообщения", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Метаданные образа: НИКОГДА не копировались в %@ - проверьте tm-meta-sync в машине", + "Image metadata: copied %@ ago to %@": + "Метаданные образа: скопированы %@ назад в %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Метаданные образа: последний раз скопированы %@ назад - ПРОСРОЧЕНО (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Метаданные образа: ещё не копировались - ждут vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "Копирование %@, приостановлено стражем %@: %@", + "Free in machine: %@ GiB": + "Свободно в машине: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n обнаружил проблемы: %@", + "Google Drive folder: %@": + "Папка на Google Drive: %@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach преобразованного образа завершился с ошибкой: %@", + "hdiutil convert failed: %@": + "hdiutil convert завершился с ошибкой: %@", + "Image name in the machine (default: from the computer name).": + "Имя образа в машине (по умолчанию: из имени компьютера).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "Установка преобразованного образа НЕ УДАЛАСЬ: %@\nsmbd оставлен ОСТАНОВЛЕННЫМ, чтобы Time Machine не открыл наполовину установленный образ. Оригинал хранится в %@ в машине.", + "limactl create failed: %@": + "limactl create завершился с ошибкой: %@", + "limactl list failed: %@": + "limactl list завершился с ошибкой: %@", + "limactl not found - install Lima: brew install lima": + "limactl не найден - установите Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start завершился с ошибкой: %@\nСобственный журнал машины: %@", + "Machine %@ is running.": + "Машина %@ работает.", + "Machine %@ was already running.": + "Машина %@ уже работала.", + "Machine: %@ (%@)": + "Машина: %@ (%@)", + "Machine: %@": + "Машина: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Машина: не создана - выполните: cloudmachine-agent vm-setup", + "no answer within the time limit": + "нет ответа за отведённое время", + "No image %@ in the machine.": + "В машине нет образа %@.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "В машине ещё нет образа - сначала укажите Time Machine общий ресурс и дайте ему создать образ.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "Нет конфигурации rclone в %@ - сначала подключите Google Drive (configure-remote).", + "no SMB destination": + "нет места назначения SMB", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "Одна проверка буфера отправки машины: приостанавливает Time Machine при заполнении и возобновляет то, что приостановила сама.", + "Packing the converted image failed: %@": + "Не удалось упаковать преобразованный образ: %@", + "Packing the image failed: %@": + "Не удалось упаковать образ: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "Машина не отвечает (rclone rc) - страж ничего бы не сделал.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Только вывести, что решил бы страж - для проверки порогов на одноразовой машине.", + "Pause above this many GiB in the buffer.": + "Приостанавливать при превышении стольких GiB в буфере.", + "Pause when the machine has less free than this, in GiB.": + "Приостанавливать, когда в машине свободно меньше стольких GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Укажите Time Machine машину (один раз, потребуется пароль администратора):", + "punchfs files: %@ open, limit %@": + "Файлы punchfs: открыто %@, лимит %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "Конфигурация rclone уже в машине - оставлена (--replace-rclone-config заменяет её).", + "rclone configuration copied into the machine.": + "Конфигурация rclone скопирована в машину.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm или punchfs не работает в машине - см. cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Возобновлять при остатке ниже стольких GiB (только копирование, приостановленное стражем).", + "Service %@: %@": + "Служба %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "В машине несколько образов (%@) - выберите один через --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Показывает машину: адрес, службы, буфер отправки, свободное место и место назначения Time Machine.", + "SMB password stored in %@ (mode 600).": + "Пароль SMB сохранён в %@ (права 600).", + "The converted image does not have %@-byte bands.": + "У преобразованного образа нет полос по %@ байт.", + "The converted image has no APFS partition.": + "В преобразованном образе нет раздела APFS.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "Образ уже занимает %@ MB - эта команда преобразует только новый пустой образ (менее %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "Образ зашифрован - преобразование зашифрованных образов не поддерживается.", + "The image was not changed; smbd started again.": + "Образ не изменён; smbd запущен снова.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "Машина не отвечает - она работает? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "У машины нет адреса в сети vzNAT.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "Службы в машине не запустились - проверьте: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine выполняет копирование - сначала остановите его: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: НЕ указывает на машину (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil не ответил", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil не ответил - не трогаю образ, пока его состояние неизвестно.", + "unknown": + "неизвестно", + "Unpacking the image failed: %@": + "Не удалось распаковать образ: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "К отправке: %@ GiB в полосах: %@, отправляется %@ (кэш на диске %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "%@ (машина и её буфер отправки) исключено из Time Machine.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "ВНИМАНИЕ: не удалось исключить %@ из Time Machine - выполните: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Буфер отправки: нет ответа от rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Когда Time Machine создаст пустой образ, остановите копирование (tmutil stopbackup) и выполните: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "Не отправлено %@ GiB, свободно %@ GiB (пауза при более %@ GiB неотправленных или менее %@ GiB свободных, возобновление ниже %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Отправка: суточный лимит Google отклонил отправку %@ назад - rclone повторяет каждые 5 мин и сам возобновит", + "no": + "нет", + "running": + "идёт", + "stopped": + "остановлена", + "yes": + "да", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nПредыдущий шаблон находится в %@ - скопируйте его обратно поверх lima.yaml и выполните limactl start %@.", + "Could not read this app's machine template (limactl template copy).": + "Не удалось прочитать шаблон машины из этого приложения (limactl template copy).", + "Could not replace %@: %@": + "Не удалось заменить %@: %@", + "Machine %@ already runs this app's template.": + "Машина %@ уже работает на шаблоне из этого приложения.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "Машина %@ теперь работает на шаблоне из этого приложения; предыдущий находится в %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Переводит машину на шаблон из этого приложения (два перезапуска, никогда во время копирования).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "Машины %@ нет - создайте её: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Шаблон: СТАРЕЕ, чем в этом приложении - выполните: cloudmachine-agent vm-update", + "Template: not compared": + "Шаблон: не сравнивался", + "Template: this app's": + "Шаблон: из этого приложения", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "В машине нет %@ - сначала выполните cloudmachine-agent vm-setup.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "Машина перезапущена, но работают не все службы - проверьте: cloudmachine-agent vm-status. Предыдущий шаблон находится в %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "Шаблон меняет саму машину (%@) - для этого нужна новая машина, а не обновление.", + "The upload to Google Drive hangs": + "Отправка на Google Drive зависла", + "Time Machine is backing up - try again when it has finished.": + "Time Machine выполняет копирование - повторите, когда оно закончится.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Отправка: ЗАВИСЛА - полосы в процессе, ни одна не отправлена уже %@ (сеть?); см. /var/log/rclone-tm.log в машине", + "limactl stop failed - nothing was changed.": + "limactl stop не удался - ничего не изменено.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "У rclone есть полосы в процессе отправки, но ни одна не отправлена уже %@ - обычно это обрыв сетевого соединения, о котором rclone не сообщает как об ошибке. Копии с тех пор находятся только в буфере машины. Когда сеть вернётся, отправка возобновится сама (28.10.2026 - за 80 s); если нет, перезапуск машины (prepare-shutdown, limactl start) разорвёт мёртвые соединения.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil не ответил - не перезапускаю машину, пока её состояние неизвестно.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+sv.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+sv.swift new file mode 100644 index 0000000..1c12a4b --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+sv.swift @@ -0,0 +1,951 @@ +// Swedish translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let sv: [String: String] = [ + "Space limit: %@": + "Utrymmesgräns: %@", + " Time Machine quota not set to match - run: %@": + " Time Machine-kvoten är inte inställd så att den passar - kör: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Anger hur mycket av Google Drive den här Macen får använda och skriver ut kommandot för Time Machine-kvoten.", + "Limit in GB.": + "Gräns i GB.", + "Limit for this Mac: %@ GB.": + "Gräns för den här Macen: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Ange nu Time Machine-kvoten (kräver administratörslösenord):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - verifiering, konfiguration av Google Drive och installation. Anropas av launchd enligt schema eller manuellt från Terminal.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "Ansluter till Google Drive via rclone (OAuth i webbläsaren) och skapar maskinens mapp.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Skriv över den befintliga remoten. RISKABELT: ersätter token och behörigheter.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "Paketerar build/CloudMachine.app till build/CloudMachine-.dmg.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "FEL: %@ saknas - kör först 'cloudmachine-agent build-app'", + "==> Preparing the staging folder": + "==> Förbereder mellanlagringsmappen", + "==> Creating %@": + "==> Skapar %@", + "ERROR: hdiutil exited with code %@.": + "FEL: hdiutil avslutades med kod %@.", + "==> Done: %@": + "==> Klart: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "Vid första start (appen är inte signerad med ett Apple Developer-konto):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. Öppna %@ och dra CloudMachine.app till Program.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. HÖGERKLICKA på CloudMachine.app i Finder -> Öppna -> Öppna\n (ett vanligt dubbelklick visar Gatekeeper-spärren ”oidentifierad utvecklare”).", + "3. Later launches work normally, with a double-click.": + "3. Senare starter fungerar som vanligt, med dubbelklick.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "Bygger CloudMachine.app (Release) - GUI + cloudmachine-agent i Contents/MacOS/, plus launchd/, vm/ och config/ som Resources.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Binärfiler för Apple Silicon och Intel samtidigt (så bygger CI en release; onödigt lokalt).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> Bygger CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)", + "ERROR: swift build exited with code %@.": + "FEL: swift build avslutades med kod %@.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "FEL: swift build --show-bin-path angav ingen katalog för binärfilerna.", + "ERROR: no built binary found at %@": + "FEL: ingen byggd binärfil hittades på %@", + "==> Assembling the .app bundle in %@": + "==> Sätter ihop .app-paketet i %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> VARNING: du bygger från ett OSTÄDAT träd - versionen pekar inte på någon commit.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "FEL: Resources/AppIcon.icns saknas - generera den: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Signerar med det lokala certifikatet '%@' (Full åtkomst till disken bevaras vid senare ombyggnader)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Signerar ad hoc (inget Apple Developer-konto) - kör 'cloudmachine-agent setup-signing-cert' en gång så att TCC-behörigheter bevaras vid senare ombyggnader", + "ERROR: codesign exited with code %@.": + "FEL: codesign avslutades med kod %@.", + "Next step: %@": + "Nästa steg: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Skapar ett lokalt självsignerat certifikat så att Full åtkomst till disken bevaras vid senare ombyggnader av appen.", + "Certificate '%@' already exists in %@, nothing to do.": + "Certifikatet '%@' finns redan i %@, inget att göra.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Genererar nyckeln och det självsignerade certifikatet '%@'...", + "ERROR: openssl req exited with code %@.": + "FEL: openssl req avslutades med kod %@.", + "ERROR: openssl pkcs12 exited with code %@.": + "FEL: openssl pkcs12 avslutades med kod %@.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Importerar certifikatet till %@ (förauktoriserar /usr/bin/codesign, så att det inte frågar efter nyckelringens lösenord varje gång)...", + "ERROR: security import exited with code %@.": + "FEL: security import avslutades med kod %@.", + "==> Trusting the certificate ONLY for code signing...": + "==> Litar på certifikatet ENDAST för kodsignering...", + "ERROR: security add-trusted-cert exited with code %@.": + "FEL: security add-trusted-cert avslutades med kod %@.", + "Done. Certificate '%@' is now available to codesign.": + "Klart. Certifikatet '%@' är nu tillgängligt för codesign.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "Nästa 'cloudmachine-agent build-app' använder det automatiskt i stället för en ad hoc-signatur.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "Efter DEN HÄR ENA ombyggnaden ger du Full åtkomst till disken en sista gång - senare\nombyggnader återställer den inte längre, så länge du signerar med samma certifikat.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Kontrollerar om den timvisa cykeln FORTFARANDE fungerar (datum för den senaste LYCKADE säkerhetskopian) och rapporterar fel.", + "After this many hours without a successful backup we consider the cycle broken.": + "Efter så många timmar utan lyckad säkerhetskopia anser vi att cykeln är bruten.", + "Only print the state, without a system notification.": + "Skriv bara ut tillståndet, utan systemavisering.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "En annan inställningsfil för Time Machine - för att testa bevakaren på ett känt prov.", + "Last successful backup: %@": + "Senaste lyckade säkerhetskopia: %@", + "Last successful backup: NONE": + "Senaste lyckade säkerhetskopia: INGEN", + "Last attempt: %@": + "Senaste försök: %@", + "WAITING (system startup): %@": + "VÄNTAR (systemstart): %@", + "Backup cycle: OK": + "Säkerhetskopieringscykel: OK", + "FAILURE: %@": + "HAVERI: %@", + " %@": + " %@", + "Check the state: %@": + "Kontrollera tillståndet: %@", + "Preparing for restart": + "Förbereder för omstart", + "Prepare for restart": + "Förbered för omstart", + "Prepare": + "Förbered", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> VARNING: git rev-list misslyckades (%@) - datumet används som byggnummer.", + "Agents: %@": + "Agenter: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "KAN INTE STARTA: %@ - öppna CloudMachine eller kör backup-health för att läsa in dem igen", + "Reloaded agents that could not start: %@": + "Agenter som inte kunde starta lästes in igen: %@", + "Drive folder: %@": + "Drive-mapp: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Namnet på den här Macens mapp på Google Drive (standard: härlett från datornamnet). Anges en gång; kan inte ändras senare.", + "Backup watchdog: %@": + "Bevakare: %@", + "Prints the version, the build number and the commit this binary was built from.": + "Skriver ut versionen, byggnumret och den commit som den här binärfilen byggdes från.", + "Only one line, without a description.": + "Bara en rad, utan beskrivning.", + "Build from the working tree (outside a bundle) - no version data.": + "Bygge från arbetsträdet (utanför ett paket) - inga versionsuppgifter.", + "Version: %@": + "Version: %@", + "Build: %@": + "Bygge: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "VARNING: byggd från ett OSTÄDAT träd - binärfilen innehåller kod som\n inte finns i någon commit. Commit-numret beskriver INTE\n vad som faktiskt körs.", + "Saving the space limit": + "Sparar utrymmesgränsen", + "Measuring usage on Google Drive": + "Mäter användningen på Google Drive", + "Google Drive did not answer - try again later.": + "Google Drive svarade inte - försök igen senare.", + "Measured.": + "Mätt.", + "Space limit for this Mac": + "Utrymmesgräns för den här Macen", + "Used on Google Drive": + "Använt på Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "Mätt %@. Bevakaren mäter igen med några timmars mellanrum.", + "Limit (GB)": + "Gräns (GB)", + "Save": + "Spara", + "Measure now": + "Mät nu", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Time Machine-kvot: %@ GB (70%% av gränsen - kopian på Drive är ungefär en tredjedel större än säkerhetskopian i den). Time Machine tar bort de äldsta säkerhetskopiorna för att hålla sig inom den.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Ange Time Machine-kvoten: kör det här i Terminal (kräver sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Anslut Google Drive: kör det här i Terminal och godkänn i webbläsaren", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "Ge CloudMachine Full åtkomst till disken så att den kan se om säkerhetskopiorna slutförs", + "Folder on Google Drive": + "Mapp på Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "En mapp per Mac. Anges en gång - kan inte ändras efter anslutning.", + "Use lowercase letters, digits and dashes.": + "Använd små bokstäver, siffror och bindestreck.", + "Install rclone": + "Installera rclone", + "Open System Settings": + "Öppna Systeminställningar", + "Install agents": + "Installera agenter", + "not checked": + "inte kontrollerad", + "none at all": + "inga alls", + "%@ ago": + "%@ sedan", + "Missing: %@": + "Saknas: %@", + "Google Drive not connected": + "Google Drive är inte anslutet", + "Time Machine does not point to CloudMachine": + "Time Machine pekar inte på CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "OKLART om Time Machine pekar på CloudMachine - tmutil svarade inte", + "Backup in progress": + "Säkerhetskopiering pågår", + "Unknown when the last backup was made": + "Okänt när den senaste säkerhetskopian gjordes", + "There is no completed backup at all": + "Det finns ingen slutförd säkerhetskopia alls", + "No completed backup for %@": + "Ingen slutförd säkerhetskopia på %@", + "Ready": + "Redo", + "Not saved: %@": + "Inte sparad: %@", + "Installing rclone": + "Installerar rclone", + "Installing launchd agents": + "Installerar launchd-agenter", + "Starting backup": + "Startar säkerhetskopiering", + "Backup started.": + "Säkerhetskopieringen har startat.", + "Could not start the backup.": + "Det gick inte att starta säkerhetskopieringen.", + "Stopping backup": + "Stoppar säkerhetskopiering", + "Backup stopped.": + "Säkerhetskopieringen har stoppats.", + "Could not stop the backup.": + "Det gick inte att stoppa säkerhetskopieringen.", + "Could not prepare the AppleScript.": + "Det gick inte att förbereda AppleScript.", + "Unknown authorization error.": + "Okänt auktoriseringsfel.", + "Waiting to upload": + "Väntar på uppladdning", + "%@ files": + "Filer: %@", + "nothing": + "ingenting", + "Back up now": + "Säkerhetskopiera nu", + "Stop backup": + "Stoppa säkerhetskopiering", + "Open CloudMachine": + "Öppna CloudMachine", + "Quit": + "Avsluta", + "Healthy": + "Fungerar", + "Attention": + "Observera", + "Refreshed %@": + "Uppdaterad %@", + "System Status": + "Systemstatus", + "Action needed": + "Åtgärd krävs", + "not measured": + "inte mätt", + "rclone did not answer": + "rclone svarade inte", + "Backup in Progress": + "Säkerhetskopiering pågår", + "Files processed": + "Behandlade filer", + "Write speed": + "Skrivhastighet", + "Operation phase": + "Åtgärdsfas", + "Required Setup Steps": + "Nödvändiga installationssteg", + "Copy": + "Kopiera", + "Last completed backup": + "Senaste slutförda säkerhetskopia", + "Last backup watchdog run": + "Bevakarens senaste körning", + "not read": + "inte avläst", + "Everything uploaded": + "Allt uppladdat", + "File upload errors": + "Fel vid filuppladdning", + "Google Drive Credentials (OAuth 2.0)": + "Autentiseringsuppgifter för Google Drive (OAuth 2.0)", + "Keychain OK": + "Nyckelringen OK", + "No custom keys": + "Inga egna nycklar", + "Paste client_id...": + "Klistra in client_id...", + "Paste client_secret...": + "Klistra in client_secret...", + "Save securely in the Keychain": + "Spara säkert i Nyckelringen", + "Refresh": + "Uppdatera", + "Overview": + "Översikt", + "Backups": + "Säkerhetskopior", + "Storage": + "Lagring", + "Settings": + "Inställningar", + "Current status: %@": + "Aktuell status: %@", + "Does not point to CloudMachine": + "Pekar inte på CloudMachine", + "tmutil did not answer": + "tmutil svarade inte", + "Backing up: %@ of %@": + "Säkerhetskopierar: %@ av %@", + "%@ of %@": + "%@ av %@", + "Copied": + "Kopierat", + "No backup is running": + "Ingen säkerhetskopiering pågår", + "Time Machine starts the next one on its own schedule.": + "Time Machine startar nästa enligt sitt eget schema.", + "Backup cycle": + "Säkerhetskopieringscykel", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB i %@ band, %@ laddas upp", + "%@ bands": + "%@ band", + "%@ fragments abandoned - only in the machine": + "%@ övergivna fragment - finns bara i maskinen", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 svarar på Macen: Lima vidarebefordrar maskinens fjärrstyrning av rclone, som saknar lösenord. Vilken webbsida som helst som är öppen i en webbläsare kan skicka kommandon till den - även radera säkerhetskopian på Google Drive. Lägg till portForwards-regeln från vm/cmsmb.yaml i maskinen och starta om den (se vm/README.md).", + "A service in the CloudMachine machine is not running": + "En tjänst i CloudMachine-maskinen körs inte", + "Address": + "Adress", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Installationen av agenter är OFULLSTÄNDIG - %@ av %@ kom inte på plats:\n%@\n%@\nVarje saknad agent är en funktion som tyst har slutat fungera (vm-guard bevakar maskinens buffert, backup-health rapporterar fel). Åtgärda orsaken och upprepa installationen.", + "All running": + "Alla körs", + "Also install the launchd agents (same as install-launchd).": + "Installera även launchd-agenterna (samma som install-launchd).", + "At most this many minutes of waiting for the upload.": + "Väntar högst så många minuter på uppladdningen.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "Vid gränsen misslyckas varje nytt band med EMFILE och säkerhetskopieringen stannar. Kontrollera: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Cache på maskinens disk", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Ansluten till Google Drive, men kunde inte skapa mappen '%@' - utan den har maskinen ingenstans att förvara säkerhetskopian. Kontrollera kontots behörigheter och försök igen.", + "Convert the image": + "Konvertera avbilden", + "Converting the image to 32 MB bands": + "Konverterar avbilden till band på 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "Kunde inte kontrollera med den nuvarande anslutningen om säkerhetskopian finns på Google Drive (%@), så remote '%@' ersattes INTE: utan det svaret går det inte att jämföra den nya inloggningen med den.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Hämtar den officiella rclone-binärfilen till ~/.cloudmachine/bin (Google-inloggning och maskinens rclone.conf).", + "Free in the machine": + "Ledigt i maskinen", + "Free in the machine: %@": + "Ledigt i maskinen: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "Genererar och installerar launchd-agenterna (appen, säkerhetskopieringsbevakaren, maskinstart, maskinvakten).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "Installera Lima, som kör CloudMachine-maskinen: kör det här i Terminal", + "Install rclone (signs in to Google Drive for the machine)": + "Installera rclone (loggar in maskinen på Google Drive)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Installera bakgrundsagenterna (maskinstart, buffertvakt, säkerhetskopieringsbevakare)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "Installerar rclone via Homebrew - CloudMachine själv använder den från install-rclone.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, token och mapped/ för säkerhetskopieavbilden finns bara på maskinens disk; utan dem går det inte att återställa banden i %@. Kopian (tm-meta-sync, var 15:e min) hamnar i %@. Kontrollera: cloudmachine-agent vm-status, sedan i maskinen: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima säger att maskinen körs, men ett kommando i den returnerade inte. Utan det vet man inget om Samba, rclone eller uppladdningen. Kontrollera: cloudmachine-agent vm-status", + "Machine": + "Maskin", + "Machine %@": + "Maskin %@", + "Machine & Upload Status": + "Maskin och uppladdningsstatus", + "Machine buffer": + "Maskinens buffert", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Ingen Time Machine-destination är maskinens resurs (smb://tm@/CloudMachine) - säkerhetskopior görs inte dit. Kommandot skrivs ut av: cloudmachine-agent vm-setup", + "Not running: %@": + "Körs inte: %@", + "Not set up": + "Inte konfigurerad", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "När det tar slut slutar rclone ladda upp, maskinens buffert fylls och säkerhetskopior slutar skapas. Vid en tillväxt på ~600 MB per timcykel är det cirka %@ dygn.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "Eller så saknas rclone.conf: den här Macen har redan konfigurerat CloudMachine-maskinen, så den ansluts inte på nytt på måfå. Återställ filen från en säkerhetskopia (maskinen har en egen kopia i %@). För att ansluta ändå, skapa en tom fil på den sökväg som `%@ config file` skriver ut och kör igen - den befintliga mappen behålls.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Rikta Time Machine mot maskinen: kör det här i Terminal (kräver sudo; Kopiera inkluderar lösenordet)", + "Points to the machine": + "Pekar på maskinen", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Förbereder för omstart: stoppar säkerhetskopieringen, väntar en stund på uppladdningen och stoppar sedan maskinen på ett rent sätt.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "Avläsningen av Time Machine-destinationen returnerade inte inom %@ s. Så beter sig tmutil när dess destination hänger sig.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "Remote '%@' ersattes INTE. Den nya inloggningen får omfånget 'drive.file', som bara ser filer skapade under sitt eget client_id. Den befintliga säkerhetskopian skapades troligen av den nuvarande anslutningen och skulle bli osynlig för den. Innan något skrivs kontrolleras den nya token mot den befintliga säkerhetskopian, och ersättningen avbryts om den inte ser den. Maskinen behåller sin egen kopia av konfigurationen fram till vm-setup --replace-rclone-config. För att fortsätta, kör igen med --replace-existing --accept-scope-change.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Fjärrstyrning: ÖPPEN på Macen på 127.0.0.1:5572 - vilken webbsida som helst kan skicka rclone-kommandon; se vm/README.md (portForwards)", + "Running": + "Körs", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone eller punchfs i maskinen är inte aktiv, så Time Machine har ingenstans att skriva eller så når banden inte Google Drive. Kontrollera: cloudmachine-agent vm-status", + "Service %@": + "Tjänst %@", + "Services": + "Tjänster", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "Konfigurera CloudMachine-maskinen (första gången hämtas Ubuntu - flera minuter)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "Konfigurera CloudMachine-maskinen igen så att den skriver ut Time Machine-kommandot", + "Set up the machine": + "Konfigurera maskinen", + "Setting up the CloudMachine machine": + "Konfigurerar CloudMachine-maskinen", + "Start the CloudMachine machine": + "Starta CloudMachine-maskinen", + "Start the machine": + "Starta maskinen", + "Starting the CloudMachine machine": + "Startar CloudMachine-maskinen", + "Still to upload: %@ GiB": + "Kvar att ladda upp: %@ GiB", + "Stopping the Time Machine backup...": + "Stoppar Time Machine-säkerhetskopieringen...", + "Stopping the machine %@...": + "Stoppar maskinen %@...", + "The CloudMachine machine does not answer": + "CloudMachine-maskinen svarar inte", + "The CloudMachine machine is not running": + "CloudMachine-maskinen körs inte", + "The CloudMachine machine is not set up yet": + "CloudMachine-maskinen är inte konfigurerad än", + "The CloudMachine machine is stopped": + "CloudMachine-maskinen är stoppad", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "Säkerhetskopieringen stoppas, uppladdningen får upp till 30 minuter, sedan stängs maskinen av på ett rent sätt. Den startar igen vid nästa inloggning.", + "The machine %@ is not running - nothing to prepare.": + "Maskinen %@ körs inte - inget att förbereda.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "Maskinen är stoppad och allt har nått Google Drive. Macen kan startas om; maskinen startar igen vid inloggning.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Maskinen är stoppad. %@ GiB hade ännu inte nått Google Drive - det finns kvar i maskinens buffert och laddas upp efter nästa start. Macen kan startas om.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Maskinen är stoppad. rclone angav inte hur mycket som återstod att ladda upp; det som inte laddades upp finns kvar i maskinens buffert och laddas upp efter nästa start. Macen kan startas om.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "Maskinens disk är en fil på den här disken och växer i takt med att uppladdningsbufferten fylls. Utan ledigt utrymme kan maskinen inte skriva bufferten, och Time Machines lokala ögonblicksbilder har inte heller någonstans att ta vägen.", + "The image's metadata has never been copied to Drive": + "Avbildens metadata har aldrig kopierats till Drive", + "The image's metadata was last copied to Drive %@ ago": + "Avbildens metadata kopierades senast till Drive för %@ sedan", + "The machine's disk is running out of space (%@ GB)": + "Maskinens disk håller på att ta slut på utrymme (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "Den nya inloggningen ser INTE den befintliga säkerhetskopian (%@), så remote '%@' ersattes INTE och rclone.conf är oförändrad. Behåll den nuvarande anslutningen eller logga in med den autentiseringsuppgift (client_id) som skapade säkerhetskopian.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "Uppladdningsbufferten ligger på den här disken. Vakten pausar Time Machine innan den fylls; om uppladdningen inte hinner ikapp förblir säkerhetskopieringen pausad.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Dessa band finns bara i maskinens buffert. Säkerhetskopian på Google Drive är OFULLSTÄNDIG och går kanske inte att öppna.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine säkerhetskopierar till maskinen, så utan den görs ingen säkerhetskopia. Starta den: limactl start %@ (eller med knappen Starta maskinen i appen).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine stoppade inte sin säkerhetskopiering inom 2 minuter (eller så svarade inte tmutil) - maskinen stoppades INTE. Försök igen om en stund.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine har skapat sin avbild: stoppa säkerhetskopieringen och konvertera sedan avbilden till band på 32 MB", + "To upload": + "Att ladda upp", + "Unknown whether the CloudMachine machine is running": + "Okänt om CloudMachine-maskinen körs", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Väntar på uppladdningen till Google Drive (högst %@ min)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "Med --replace-existing: bekräftar att den nya inloggningen (omfång 'drive.file') kanske inte ser den befintliga säkerhetskopian. Den nya token kontrolleras ändå först mot säkerhetskopian.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "Utan den går det inte att kontrollera om något har nått Drive - maskinens vakt är då blind.", + "limactl did not answer": + "limactl svarade inte", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl svarade inte (eller är inte installerat). Det betyder inte att maskinen ligger nere - det betyder att ingen har kontrollerat.", + "limactl start failed: %@": + "limactl start misslyckades: %@", + "limactl stop failed: %@": + "limactl stop misslyckades: %@", + "punchfs is close to its open-file limit": + "punchfs närmar sig sin gräns för öppna filer", + "punchfs open files": + "Öppna filer i punchfs", + "rclone's remote control is open on this Mac": + "rclones fjärrstyrning är öppen på den här Macen", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') returnerade ett fel, så ingen vet om maskinens disk fortfarande kan växa på den här Macen.", + "Google Drive's daily upload limit stops the upload": + "Google Drives dagliga uppladdningsgräns stoppar uppladdningen", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google nekade senast en uppladdning för %@ sedan (750 GB per dygn). Säkerhetskopior sedan dess finns bara i maskinens buffert på den här Macen. rclone försöker igen var 5:e min och återupptar själv när gränsen har passerat; vakten pausar Time Machine om mer än %@ GiB väntar.", + "Usage on Google Drive is not being measured": + "Användningen på Google Drive mäts inte", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "Den senaste mätningen (%@ GB) är från %@, för %@ sedan - rclone size har inte svarat sedan dess. Tills det gör det bevakar ingen gränsen på %@ GB: larmen vid 90%% och 100%% förblir tysta. Kontrollera vm-status eller tryck på ”Mät nu” i fönstret.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size har inte svarat en enda gång. Tills det gör det bevakar ingen gränsen på %@ GB: larmen vid 90%% och 100%% förblir tysta. Kontrollera vm-status eller tryck på ”Mät nu” i fönstret.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Sparat i Nyckelringen. Anslutning till Google Drive (configure-remote) kommer att använda dem.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Sparat i Nyckelringen. Den befintliga Google Drive-anslutningen behåller sitt gamla client_id, och på den här Macen bör det förbli så: en anslutning som gjorts med de nya nycklarna (omfånget 'drive.file') ser inte säkerhetskopian som skapades av den gamla. Ersätt inte anslutningen här; de nya nycklarna är till för en Mac som ännu inte är ansluten.", + "it is not there for the new token": + "den finns inte för den nya token", + "Cancel": + "Avbryt", + "ACTION NEEDED": + "ÅTGÄRD KRÄVS", + "WILL PASS BY ITSELF — DO NOTHING": + "GÅR ÖVER AV SIG SJÄLVT — GÖR INGENTING", + "UNKNOWN — CHECK AGAIN SHORTLY": + "OKLART — KONTROLLERA IGEN OM EN STUND", + "ALL GOOD": + "ALLT ÄR BRA", + "Upload is not working": + "Uppladdningen fungerar inte", + "Upload stopped — no space left on Google Drive": + "Uppladdningen har stannat — inget utrymme kvar på Google Drive", + "%@ backup fragments not uploaded": + "%@ säkerhetskopiefragment har inte laddats upp", + "Upload cannot keep up with writes": + "Uppladdningen hinner inte med skrivningarna", + "Upload paused — Google daily limit": + "Uppladdningen pausad — Googles dygnsgräns", + "Uploading to Google Drive — %@ queued": + "Laddar upp till Google Drive — %@ i kö", + "Everything uploaded to Google Drive": + "Allt har laddats upp till Google Drive", + "Unknown what is waiting in the queue": + "Okänt vad som väntar i kön", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Det finns ingen anslutning till Google Drive, så säkerhetskopior görs bara på den här Macen. Om det inte går över av sig självt inom några minuter, kontrollera nätverket och anslutningen till Drive.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Det finns inget utrymme kvar på Google Drive. Det går INTE över av sig självt — du måste frigöra utrymme på Drive. Tills dess är Time Machine pausad, så att den inte fyller den här Macens disk.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ säkerhetskopiefragment kunde inte laddas upp och rclone slutade försöka. Dessa fragment finns bara på den här Macen, så säkerhetskopian på Drive är ofullständig. Detta behöver kontrolleras.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine skriver snabbare än uppladdningen går, och bufferten har fyllts. Säkerhetskopieringen pausas tills uppladdningen hinner ikapp — det är ett skydd mot att disken fylls, inte ett fel.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google tar emot 750 GB per dygn och den gränsen är förbrukad. Det finns inget att göra: gränsen förnyas av sig själv, vanligtvis inom några timmar. Time Machine-säkerhetskopior görs som vanligt under tiden och väntar i bufferten — de laddas upp så fort Google tar emot igen.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ säkerhetskopiefragment står i kö och är på väg till Drive.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "Inget väntar i kön — säkerhetskopian på Google Drive är komplett.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone svarade inte på frågan om kön, så det är okänt hur många säkerhetskopior som ännu väntar på uppladdning. Det betyder inte att något har gått sönder — under belastning kan svaret dröja. Det betyder bara att ingen vet just nu. Om det består rapporterar kontrollen av säkerhetskopieringscykeln det.", + "unknown error": + "okänt fel", + "rclone lsf ended with an error": + "rclone lsf avslutades med ett fel", + "This Mac is close to its space limit on Google Drive": + "Den här Macen närmar sig sin utrymmesgräns på Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ GB av %@ GB används. Time Machine tar bort de äldsta säkerhetskopiorna för att hålla sig inom sin kvot; kontrollera att kvoten är inställd (vm-status).", + "This Mac is over its space limit on Google Drive": + "Den här Macen har överskridit sin utrymmesgräns på Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ GB av %@ GB används. Ange Time Machine-kvoten (kommando i appfönstret eller vm-status) eller höj gränsen.", + "not set": + "inte inställd", + "%@ GB - usage not measured yet": + "%@ GB - användningen är ännu inte mätt", + "%@ of %@ GB used (%@%%)": + "%@ av %@ GB används (%@%%)", + "The limit must be a whole number of GB above zero.": + "Gränsen måste vara ett heltal i GB större än noll.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "machines.json kan inte läsas, så den skrevs inte över. Åtgärda eller ta bort den först.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' är inte ett giltigt mappnamn: använd små bokstäver, siffror och bindestreck.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Den här Macen säkerhetskopierar redan till mappen '%@'. Ett byte till '%@' skulle starta en ny, tom säkerhetskopia och göra den befintliga föräldralös, så ingenting ändrades.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Den här Macen har redan en CloudMachine-installation vars säkerhetskopia ligger i mappen '%@'. Ett byte till '%@' skulle göra den föräldralös, så ingenting ändrades.", + "Could not save the folder name to %@: %@": + "Kunde inte spara mappnamnet i %@: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew är inte installerat. Installera det manuellt: https://brew.sh", + "Installing rclone failed: %@": + "Installationen av rclone misslyckades: %@", + "Installed rclone.": + "rclone installerades.", + "Own Google credentials: set.": + "Egna Google-uppgifter: inställda.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "OFULLSTÄNDIGT: %@ saknas - rclone använder ändå rclones delade client_id.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Inga egna uppgifter - rclone använder det delade client_id, som har gemensam hastighetsbegränsning och fasas ut 2026.", + "Empty value - not saving.": + "Tomt värde - sparar inte.", + "Keychain refused: %@": + "Nyckelringen nekade: %@", + "DIRTY-TREE": + "OSTÄDAT-TRÄD", + "Cannot create the working directory: %@": + "Kan inte skapa arbetskatalogen: %@", + "Could not read the rclone version number.": + "Kunde inte läsa versionsnumret för rclone.", + "Could not download %@.": + "Kunde inte hämta %@.", + "No entry for %@ in SHA256SUMS.": + "Ingen post för %@ i SHA256SUMS.", + "Could not compute the checksum.": + "Kunde inte beräkna kontrollsumman.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "SHA256-kontrollsumman stämmer inte - installerar INTE.\n förväntad: %@\n beräknad: %@", + "Could not unpack the archive.": + "Kunde inte packa upp arkivet.", + "Could not install the binary: %@": + "Kunde inte installera binärfilen: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "Installerade rclone %@ i %@ (SHA256-kontrollsumman stämmer).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ svarade inte inom den angivna tiden (processen lämnades föräldralös i bakgrunden).", + "Cannot launch %@: %@": + "Kan inte starta %@: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "Remote '%@' finns redan och rördes INTE.\nAtt skriva över den ersätter token och behörighetsomfånget; en autentiseringsuppgift med omfånget 'drive.file' ser inte filer som skapats av den föregående, så den befintliga säkerhetskopian blir oåtkomlig.\nOm du verkligen vill ersätta den, ta först en säkerhetskopia av ~/.config/rclone/rclone.conf och kör igen med --replace-existing.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "Kunde inte kontrollera om remote '%@' redan finns (rclone listremotes svarade inte eller misslyckades), så ingenting ändrades. Kör `%@ listremotes` för att se felet och försök sedan igen.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "Kunde inte kontrollera om den här Macen redan har en CloudMachine-installation (rclone svarade inte), så ingen mapp valdes. Försök igen om en stund.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize misslyckades (%@). Om den binärfilen saknas, börja med: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "Kunde inte läsa token från utdata från rclone authorize.", + "rclone config create failed.": + "rclone config create misslyckades.", + "Connected to Google Drive as remote '%@', folder %@.": + "Ansluten till Google Drive som remote '%@', mapp %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil svarar inte - okänt vart säkerhetskopian går", + "No successful backup for %@": + "Ingen lyckad säkerhetskopia på %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Senaste SLUTFÖRDA säkerhetskopia: %@. Cykeln är timvis, så det motsvarar %@ missade körningar.", + "There is NOT A SINGLE successful backup": + "Det finns INGEN ENDA lyckad säkerhetskopia", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Time Machines inställningar innehåller inget datum för en slutförd säkerhetskopia för den här destinationen.", + "The last backup attempt did not end in a backup": + "Det senaste säkerhetskopieringsförsöket slutade inte i en säkerhetskopia", + "The attempt at %@ is newer than the last successful backup at %@.": + "Försöket %@ är nyare än den senaste lyckade säkerhetskopian %@.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine rapporterar ett fel i senaste körningen (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Ett RESULT som inte är noll i Time Machines inställningar betyder att körningen inte lyckades.", + "rclone failed to upload %@ files": + "rclone kunde inte ladda upp %@ filer", + "Buffer full of nothing but unsent data": + "Bufferten full av bara ej uppladdad data", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone har inget kvar att rensa bort ur bufferten - uppladdningen hinner inte med eller har stannat.", + "The rclone control interface is not responding": + "rclones kontrollgränssnitt svarar inte", + "Google Drive is running out of space (%@ GB)": + "Utrymmet på Google Drive håller på att ta slut (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Macens disk håller på att ta slut på utrymme (%@ GB)", + "Cannot read the Time Machine preferences": + "Kan inte läsa Time Machines inställningar", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ går inte att läsa - oftast saknas Full åtkomst till disken. Utan den här filen är det OKÄNT när den senaste säkerhetskopian gjordes, så vi behandlar det som ett fel, inte som att problem saknas.", + "Cannot measure free space on the Mac's disk": + "Kan inte mäta ledigt utrymme på Macens disk", + "%@ days": + "%@ dygn", + "CloudMachine: backup is not working": + "CloudMachine: säkerhetskopieringen fungerar inte", + "unknown reason": + "okänd orsak", + "osascript did not show the notification (permissions or no graphical session)": + "osascript visade inte aviseringen (behörigheter eller ingen grafisk session)", + "UNDELIVERED ALARM: %@": + "OLEVERERAT LARM: %@", + "from %@, reason: %@": + "från %@, orsak: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "Systemaviseringen levererades inte - du ser det här larmet ENDAST här.", + "%@ (%@ ago)": + "%@ (%@ sedan)", + "%@ - marker from the FUTURE": + "%@ - markör från FRAMTIDEN", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (%@ sedan) - BEVAKAREN KÖRS KANSKE INTE", + "NEVER - the watchdog has not recorded a single run": + "ALDRIG - bevakaren har inte registrerat någon enda körning", + "Could not find the launchd/ directory with templates.": + "Hittade inte katalogen launchd/ med mallar.", + "Could not find the compiled cloudmachine-agent binary.": + "Hittade inte den kompilerade binärfilen cloudmachine-agent.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "AVBRUTET: kunde inte lägga cloudmachine-agent på en stabil plats\n(%@) - oftast på grund av brist på utrymme eller behörigheter.\nInstallerar INTE agenter som pekar på %@: den sökvägen\nförsvinner vid nästa `swift build` eller `git clean`, och säkerhetskopieringen\nupphör utan någon synlig signal.", + "ABORTED: %@": + "AVBRUTET: %@", + "Could not list the templates in %@.": + "Kunde inte lista mallarna i %@.", + "could not read the template %@": + "kunde inte läsa mallen %@", + "could not write %@ (lack of space or permissions)": + "kunde inte skriva %@ (brist på utrymme eller behörigheter)", + "launchctl load refused to load %@": + "launchctl load vägrade läsa in %@", + "NOT A SINGLE agent was loaded.": + "INGEN ENDA agent lästes in.", + "Only these went in: %@.": + "Bara dessa kom på plats: %@.", + "Could not load any launchd agent.": + "Kunde inte läsa in någon launchd-agent.", + "Installed agents: %@": + "Installerade agenter: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " VARNING: nära gränsen - nya band misslyckas med EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands på Google Drive är inte tom - den kan innehålla en annan säkerhetskopia. Skriver INTE över den; kontrollera manuellt.", + "Address: %@": + "Adress: %@", + "Already prepared (%@ exists) - nothing to do.": + "Redan förberedd (%@ finns) - inget att göra.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Konverterar Time Machines nya, tomma avbild i maskinen till band på 32 MB och flyttar banden till Google Drive.", + "Copy rclone.conf into the machine even if it already has one.": + "Kopiera rclone.conf till maskinen även om den redan har en.", + "Copying the converted image into the machine failed: %@": + "Kopieringen av den konverterade avbilden till maskinen misslyckades: %@", + "Copying the image to the Mac failed: %@": + "Kopieringen av avbilden till Macen misslyckades: %@", + "Could not ask Lima about the machine: %@": + "Kunde inte fråga Lima om maskinen: %@", + "Could not carry the Time Machine files over: %@": + "Kunde inte flytta över Time Machine-filerna: %@", + "Could not check the image in the machine.": + "Kunde inte kontrollera avbilden i maskinen.", + "Could not copy the rclone configuration into the machine.": + "Kunde inte kopiera rclone-konfigurationen till maskinen.", + "Could not create %@ on Google Drive: %@": + "Kunde inte skapa %@ på Google Drive: %@", + "Could not create %@: %@": + "Kunde inte skapa %@: %@", + "Could not find the vm/ directory with the machine template.": + "Hittade inte katalogen vm/ med maskinmallen.", + "Could not read the image size.": + "Kunde inte läsa avbildens storlek.", + "Could not set the SMB password of user %@ in the machine.": + "Kunde inte ange SMB-lösenordet för användaren %@ i maskinen.", + "Could not stop smbd in the machine.": + "Kunde inte stoppa smbd i maskinen.", + "Could not write %@ in the machine.": + "Kunde inte skriva %@ i maskinen.", + "Could not write the password file %@.": + "Kunde inte skriva lösenordsfilen %@.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "Skapar eller startar CloudMachine-maskinen (Lima), ger den rclones konfiguration och ett SMB-lösenord och skriver ut Time Machine-kommandot.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "Skapar maskinen %@ (första starten hämtar Ubuntu och installerar paket - flera minuter)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Klart: %@ har band på %@ MB på Google Drive; originalet finns kvar i %@ i maskinen. Starta säkerhetskopieringen: tmutil startbackup", + "exit code %@, no message": + "slutkod %@, inget meddelande", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Avbildsmetadata: ALDRIG kopierad till %@ - kontrollera tm-meta-sync i maskinen", + "Image metadata: copied %@ ago to %@": + "Avbildsmetadata: kopierad för %@ sedan till %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Avbildsmetadata: senast kopierad för %@ sedan - FÖRSENAD (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Avbildsmetadata: inte kopierad än - väntar på vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "Säkerhetskopia %@, pausad av vakten %@: %@", + "Free in machine: %@ GiB": + "Ledigt i maskinen: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n hittade problem: %@", + "Google Drive folder: %@": + "Google Drive-mapp: %@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach av den konverterade avbilden misslyckades: %@", + "hdiutil convert failed: %@": + "hdiutil convert misslyckades: %@", + "Image name in the machine (default: from the computer name).": + "Avbildens namn i maskinen (standard: härlett från datornamnet).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "Installationen av den konverterade avbilden MISSLYCKADES: %@\nsmbd lämnas STOPPAD så att Time Machine inte öppnar en halvinstallerad avbild. Originalet finns i %@ i maskinen.", + "limactl create failed: %@": + "limactl create misslyckades: %@", + "limactl list failed: %@": + "limactl list misslyckades: %@", + "limactl not found - install Lima: brew install lima": + "limactl hittades inte - installera Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start misslyckades: %@\nMaskinens egen logg: %@", + "Machine %@ is running.": + "Maskinen %@ körs.", + "Machine %@ was already running.": + "Maskinen %@ körde redan.", + "Machine: %@ (%@)": + "Maskin: %@ (%@)", + "Machine: %@": + "Maskin: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Maskin: inte skapad - kör: cloudmachine-agent vm-setup", + "no answer within the time limit": + "inget svar inom tidsgränsen", + "No image %@ in the machine.": + "Ingen avbild %@ i maskinen.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "Ingen avbild i maskinen än - rikta först Time Machine mot resursen och låt den skapa en.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "Ingen rclone-konfiguration på %@ - anslut först Google Drive (configure-remote).", + "no SMB destination": + "ingen SMB-destination", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "En kontroll av maskinens uppladdningsbuffert: pausar Time Machine när den fylls och återupptar det den pausade.", + "Packing the converted image failed: %@": + "Packningen av den konverterade avbilden misslyckades: %@", + "Packing the image failed: %@": + "Packningen av avbilden misslyckades: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "Inget svar från maskinen (rclone rc) - vakten skulle inte göra något.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Skriv bara ut vad vakten skulle besluta - för att pröva tröskelvärden på en engångsmaskin.", + "Pause above this many GiB in the buffer.": + "Pausa över så många GiB i bufferten.", + "Pause when the machine has less free than this, in GiB.": + "Pausa när maskinen har mindre ledigt utrymme än så här, i GiB.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Rikta Time Machine mot maskinen (en gång, kräver administratörslösenord):", + "punchfs files: %@ open, limit %@": + "punchfs-filer: %@ öppna, gräns %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "rclone-konfigurationen finns redan i maskinen - behålls (--replace-rclone-config ersätter den).", + "rclone configuration copied into the machine.": + "rclone-konfigurationen kopierades till maskinen.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm eller punchfs körs inte i maskinen - se cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Återuppta under så många GiB (bara en säkerhetskopiering som vakten pausade).", + "Service %@: %@": + "Tjänst %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "Flera avbilder i maskinen (%@) - välj en med --bundle.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Visar maskinen: adress, tjänster, uppladdningsbuffert, ledigt utrymme och Time Machine-destinationen.", + "SMB password stored in %@ (mode 600).": + "SMB-lösenordet sparat i %@ (läge 600).", + "The converted image does not have %@-byte bands.": + "Den konverterade avbilden har inte band på %@ byte.", + "The converted image has no APFS partition.": + "Den konverterade avbilden har ingen APFS-partition.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "Avbilden tar redan %@ MB - det här kommandot konverterar bara en ny, tom avbild (under %@ MB).", + "The image is encrypted - converting encrypted images is not supported.": + "Avbilden är krypterad - konvertering av krypterade avbilder stöds inte.", + "The image was not changed; smbd started again.": + "Avbilden ändrades inte; smbd startades igen.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "Maskinen svarar inte - körs den? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "Maskinen har ingen adress i nätverket vzNAT.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "Tjänsterna i maskinen startade inte - kontrollera: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine säkerhetskopierar - stoppa den först: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: pekar INTE på maskinen (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil svarade inte", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil svarade inte - rör inte avbilden medan dess tillstånd är okänt.", + "unknown": + "okänd", + "Unpacking the image failed: %@": + "Uppackningen av avbilden misslyckades: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "Kvar att ladda upp: %@ GiB i %@ band, %@ laddas upp (cache på disk %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "Uteslöt %@ (maskinen och dess uppladdningsbuffert) från Time Machine.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "VARNING: kunde inte utesluta %@ från Time Machine - kör: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Uppladdningsbuffert: inget svar från rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "När Time Machine har skapat sin tomma avbild, stoppa säkerhetskopieringen (tmutil stopbackup) och kör: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "Ej uppladdat %@ GiB, ledigt %@ GiB (pausa över %@ GiB ej uppladdat eller under %@ GiB ledigt, återuppta under %@ GiB).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Uppladdning: Googles dygnsgräns nekade en uppladdning för %@ sedan - rclone försöker igen var 5:e min och återupptar själv", + "no": + "nej", + "running": + "pågår", + "stopped": + "stoppad", + "yes": + "ja", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nDen föregående mallen finns i %@ - kopiera tillbaka den över lima.yaml och kör limactl start %@.", + "Could not read this app's machine template (limactl template copy).": + "Kunde inte läsa den här appens maskinmall (limactl template copy).", + "Could not replace %@: %@": + "Kunde inte ersätta %@: %@", + "Machine %@ already runs this app's template.": + "Maskinen %@ kör redan den här appens mall.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "Maskinen %@ kör nu den här appens mall; den föregående finns i %@.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Flyttar maskinen till den här appens mall (två omstarter, aldrig under en säkerhetskopiering).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "Ingen maskin %@ - skapa den med: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Mall: ÄLDRE än den här appens - kör: cloudmachine-agent vm-update", + "Template: not compared": + "Mall: inte jämförd", + "Template: this app's": + "Mall: den här appens", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "Maskinen har ingen %@ - kör först cloudmachine-agent vm-setup.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "Maskinen startade om, men inte alla tjänster körs - kontrollera: cloudmachine-agent vm-status. Den föregående mallen finns i %@.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "Mallen ändrar själva maskinen (%@) - det kräver en ny maskin, inte en uppdatering.", + "The upload to Google Drive hangs": + "Uppladdningen till Google Drive hänger sig", + "Time Machine is backing up - try again when it has finished.": + "Time Machine säkerhetskopierar - försök igen när den är klar.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Uppladdning: HÄNGER - band pågår, inget uppladdat under %@ (nätverk?); se /var/log/rclone-tm.log i maskinen", + "limactl stop failed - nothing was changed.": + "limactl stop misslyckades - ingenting ändrades.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone har band som pågår, men inget har laddats upp under %@ - oftast en bruten nätverksanslutning, som rclone inte rapporterar som ett fel. Säkerhetskopior sedan dess finns bara i maskinens buffert. När nätverket kommer tillbaka återupptas uppladdningen av sig själv (28.10.2026 inom 80 s); om inte, släpper en omstart av maskinen (prepare-shutdown, limactl start) de döda anslutningarna.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil svarade inte - startar inte om maskinen medan dess tillstånd är okänt.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+th.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+th.swift new file mode 100644 index 0000000..ec28197 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+th.swift @@ -0,0 +1,951 @@ +// Thai translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let th: [String: String] = [ + "Space limit: %@": + "ขีดจำกัดพื้นที่: %@", + " Time Machine quota not set to match - run: %@": + " โควตา Time Machine ยังไม่ตรงกัน - เรียกใช้: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "กำหนดพื้นที่ Google Drive ที่ Mac เครื่องนี้ใช้ได้ และพิมพ์คำสั่งโควตา Time Machine", + "Limit in GB.": + "ขีดจำกัดเป็น GB", + "Limit for this Mac: %@ GB.": + "ขีดจำกัดสำหรับ Mac เครื่องนี้: %@ GB", + "Now set the Time Machine quota (needs an administrator password):": + "ตอนนี้ให้ตั้งโควตา Time Machine (ต้องใช้รหัสผ่านผู้ดูแลระบบ):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - การตรวจสอบ การตั้งค่า Google Drive และการติดตั้ง launchd เรียกใช้ตามกำหนดเวลา หรือเรียกด้วยตนเองจากเทอร์มินัล", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "เชื่อมต่อกับ Google Drive ผ่าน rclone (OAuth ในเบราว์เซอร์) และสร้างโฟลเดอร์ของเครื่องเสมือนนี้", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "เขียนทับ remote ที่มีอยู่ เสี่ยง: จะแทนที่โทเค็นและสิทธิ์", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "แพ็ก build/CloudMachine.app เป็น build/CloudMachine-.dmg", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "ข้อผิดพลาด: ไม่พบ %@ - เรียกใช้ 'cloudmachine-agent build-app' ก่อน", + "==> Preparing the staging folder": + "==> กำลังเตรียมโฟลเดอร์สเตจจิ้ง", + "==> Creating %@": + "==> กำลังสร้าง %@", + "ERROR: hdiutil exited with code %@.": + "ข้อผิดพลาด: hdiutil จบการทำงานด้วยรหัส %@", + "==> Done: %@": + "==> เสร็จสิ้น: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "เมื่อเปิดครั้งแรก (แอปนี้ไม่ได้ลงนามด้วยบัญชี Apple Developer):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. เปิด %@ แล้วลาก CloudMachine.app ไปที่โฟลเดอร์แอปพลิเคชัน", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. ใน Finder ให้คลิกขวาที่ CloudMachine.app -> เปิด -> เปิด\n (การดับเบิลคลิกตามปกติจะแสดงการบล็อกของ Gatekeeper \"ไม่ทราบผู้พัฒนา\")", + "3. Later launches work normally, with a double-click.": + "3. การเปิดครั้งต่อไปทำงานตามปกติ ด้วยการดับเบิลคลิก", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "สร้าง CloudMachine.app (Release) - GUI + cloudmachine-agent ใน Contents/MacOS/ พร้อม launchd/, vm/ และ config/ เป็น Resources", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "ไบนารีสำหรับ Apple Silicon และ Intel พร้อมกัน (วิธีที่ CI สร้างรุ่นที่เผยแพร่ ไม่จำเป็นในเครื่อง)", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> กำลังสร้าง CloudMachineApp + cloudmachine-agent (release) - เวอร์ชัน %@ (%@)", + "ERROR: swift build exited with code %@.": + "ข้อผิดพลาด: swift build จบการทำงานด้วยรหัส %@", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "ข้อผิดพลาด: swift build --show-bin-path ไม่รายงานไดเรกทอรีของไบนารี", + "ERROR: no built binary found at %@": + "ข้อผิดพลาด: ไม่พบไบนารีที่สร้างไว้ที่ %@", + "==> Assembling the .app bundle in %@": + "==> กำลังประกอบชุดแอป .app ใน %@", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> คำเตือน: คุณกำลังสร้างจากต้นไม้ที่ยัง \"สกปรก\" (มีการเปลี่ยนแปลงที่ยังไม่คอมมิต) - เวอร์ชันจะไม่ชี้ไปที่คอมมิตใด", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "ข้อผิดพลาด: ไม่พบ Resources/AppIcon.icns - สร้างด้วย: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> กำลังลงนามด้วยใบรับรองในเครื่อง '%@' (การเข้าถึงดิสก์แบบเต็มจะยังคงอยู่หลังการสร้างใหม่)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> กำลังลงนามแบบ ad-hoc (ไม่มีบัญชี Apple Developer) - เรียกใช้ 'cloudmachine-agent setup-signing-cert' หนึ่งครั้ง เพื่อให้สิทธิ์ TCC ยังคงอยู่หลังการสร้างใหม่", + "ERROR: codesign exited with code %@.": + "ข้อผิดพลาด: codesign จบการทำงานด้วยรหัส %@", + "Next step: %@": + "ขั้นตอนถัดไป: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "สร้างใบรับรองที่ลงนามด้วยตนเองในเครื่อง เพื่อให้การเข้าถึงดิสก์แบบเต็มยังคงอยู่หลังการสร้างแอปใหม่", + "Certificate '%@' already exists in %@, nothing to do.": + "ใบรับรอง '%@' มีอยู่แล้วใน %@ ไม่ต้องดำเนินการใด ๆ", + "==> Generating the key and self-signed certificate '%@'...": + "==> กำลังสร้างคีย์และใบรับรองที่ลงนามด้วยตนเอง '%@'...", + "ERROR: openssl req exited with code %@.": + "ข้อผิดพลาด: openssl req จบการทำงานด้วยรหัส %@", + "ERROR: openssl pkcs12 exited with code %@.": + "ข้อผิดพลาด: openssl pkcs12 จบการทำงานด้วยรหัส %@", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> กำลังนำเข้าใบรับรองไปยัง %@ (อนุญาต /usr/bin/codesign ล่วงหน้า เพื่อไม่ให้ขอรหัสผ่านพวงกุญแจทุกครั้ง)...", + "ERROR: security import exited with code %@.": + "ข้อผิดพลาด: security import จบการทำงานด้วยรหัส %@", + "==> Trusting the certificate ONLY for code signing...": + "==> กำลังเชื่อถือใบรับรองสำหรับการลงนามโค้ดเท่านั้น...", + "ERROR: security add-trusted-cert exited with code %@.": + "ข้อผิดพลาด: security add-trusted-cert จบการทำงานด้วยรหัส %@", + "Done. Certificate '%@' is now available to codesign.": + "เสร็จสิ้น ใบรับรอง '%@' พร้อมให้ codesign ใช้งานแล้ว", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "'cloudmachine-agent build-app' ครั้งถัดไปจะใช้ใบรับรองนี้โดยอัตโนมัติแทนลายเซ็น ad-hoc", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "หลังจากการสร้างใหม่ครั้งนั้นเพียงครั้งเดียว ให้อนุญาตการเข้าถึงดิสก์แบบเต็มอีกครั้งเป็นครั้งสุดท้าย - การสร้างใหม่\nครั้งต่อไปจะไม่รีเซ็ตสิทธิ์นี้อีก ตราบใดที่ลงนามด้วยใบรับรองเดิม", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "ตรวจสอบว่ารอบรายชั่วโมงยังทำงานอยู่หรือไม่ (วันที่ของการสำรองข้อมูลที่สำเร็จครั้งล่าสุด) และรายงานความล้มเหลว", + "After this many hours without a successful backup we consider the cycle broken.": + "หากผ่านไปตามจำนวนชั่วโมงนี้โดยไม่มีการสำรองข้อมูลที่สำเร็จ จะถือว่ารอบการทำงานเสีย", + "Only print the state, without a system notification.": + "พิมพ์เฉพาะสถานะ โดยไม่แจ้งเตือนจากระบบ", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "ไฟล์การตั้งค่า Time Machine อื่น - เพื่อทดสอบตัวเฝ้าระวังกับตัวอย่างที่ทราบ", + "Last successful backup: %@": + "การสำรองข้อมูลที่สำเร็จครั้งล่าสุด: %@", + "Last successful backup: NONE": + "การสำรองข้อมูลที่สำเร็จครั้งล่าสุด: ไม่มีเลย", + "Last attempt: %@": + "ความพยายามครั้งล่าสุด: %@", + "WAITING (system startup): %@": + "กำลังรอ (ระบบเพิ่งเริ่มทำงาน): %@", + "Backup cycle: OK": + "รอบการสำรองข้อมูล: ปกติ", + "FAILURE: %@": + "ล้มเหลว: %@", + " %@": + " %@", + "Check the state: %@": + "ตรวจสอบสถานะ: %@", + "Preparing for restart": + "กำลังเตรียมรีสตาร์ท", + "Prepare for restart": + "เตรียมรีสตาร์ท", + "Prepare": + "เตรียม", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> คำเตือน: git rev-list ล้มเหลว (%@) - ใช้วันที่เป็นหมายเลขบิลด์", + "Agents: %@": + "เอเจนต์: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "เริ่มไม่ได้: %@ - เปิด CloudMachine หรือเรียกใช้ backup-health เพื่อโหลดใหม่", + "Reloaded agents that could not start: %@": + "โหลดเอเจนต์ที่เริ่มไม่ได้ใหม่แล้ว: %@", + "Drive folder: %@": + "โฟลเดอร์ Drive: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "ชื่อโฟลเดอร์ของ Mac เครื่องนี้บน Google Drive (ค่าเริ่มต้น: ได้จากชื่อคอมพิวเตอร์) ตั้งครั้งเดียว และเปลี่ยนภายหลังไม่ได้", + "Backup watchdog: %@": + "ตัวเฝ้าระวังการสำรองข้อมูล: %@", + "Prints the version, the build number and the commit this binary was built from.": + "พิมพ์เวอร์ชัน หมายเลขบิลด์ และคอมมิตที่ใช้สร้างไบนารีนี้", + "Only one line, without a description.": + "บรรทัดเดียว ไม่มีคำอธิบาย", + "Build from the working tree (outside a bundle) - no version data.": + "สร้างจากต้นไม้ทำงาน (นอกชุดแอป) - ไม่มีข้อมูลเวอร์ชัน", + "Version: %@": + "เวอร์ชัน: %@", + "Build: %@": + "บิลด์: %@", + "Commit: %@": + "คอมมิต: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "คำเตือน: สร้างจากต้นไม้ที่ \"สกปรก\" - ไบนารีมีโค้ดที่\n ไม่อยู่ในคอมมิตใดเลย หมายเลขคอมมิต\n ไม่ได้อธิบายสิ่งที่กำลังทำงานอยู่จริง", + "Saving the space limit": + "กำลังบันทึกขีดจำกัดพื้นที่", + "Measuring usage on Google Drive": + "กำลังวัดการใช้งานบน Google Drive", + "Google Drive did not answer - try again later.": + "Google Drive ไม่ตอบสนอง - ลองอีกครั้งภายหลัง", + "Measured.": + "วัดแล้ว", + "Space limit for this Mac": + "ขีดจำกัดพื้นที่สำหรับ Mac เครื่องนี้", + "Used on Google Drive": + "ใช้ไปบน Google Drive", + "Measured %@. The watchdog measures again every few hours.": + "วัดเมื่อ %@ ตัวเฝ้าระวังจะวัดอีกครั้งทุกไม่กี่ชั่วโมง", + "Limit (GB)": + "ขีดจำกัด (GB)", + "Save": + "บันทึก", + "Measure now": + "วัดตอนนี้", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "โควตา Time Machine: %@ GB (70%% ของขีดจำกัด - สำเนาบน Drive ใหญ่กว่าข้อมูลสำรองข้างในประมาณหนึ่งในสาม) Time Machine จะลบข้อมูลสำรองที่เก่าที่สุดเพื่อให้อยู่ในโควตา", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "ตั้งโควตา Time Machine: เรียกใช้คำสั่งนี้ในเทอร์มินัล (ต้องใช้ sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "เชื่อมต่อ Google Drive: เรียกใช้คำสั่งนี้ในเทอร์มินัลแล้วอนุมัติในเบราว์เซอร์", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "อนุญาตการเข้าถึงดิสก์แบบเต็มให้ CloudMachine เพื่อให้ทราบได้ว่าการสำรองข้อมูลเสร็จสมบูรณ์หรือไม่", + "Folder on Google Drive": + "โฟลเดอร์บน Google Drive", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "หนึ่งโฟลเดอร์ต่อ Mac หนึ่งเครื่อง ตั้งครั้งเดียว - เปลี่ยนไม่ได้หลังจากเชื่อมต่อแล้ว", + "Use lowercase letters, digits and dashes.": + "ใช้ตัวพิมพ์เล็ก ตัวเลข และขีดกลาง", + "Install rclone": + "ติดตั้ง rclone", + "Open System Settings": + "เปิดการตั้งค่าระบบ", + "Install agents": + "ติดตั้งเอเจนต์", + "not checked": + "ยังไม่ได้ตรวจสอบ", + "none at all": + "ไม่มีเลย", + "%@ ago": + "%@ ที่แล้ว", + "Missing: %@": + "ขาดหายไป: %@", + "Google Drive not connected": + "ยังไม่ได้เชื่อมต่อ Google Drive", + "Time Machine does not point to CloudMachine": + "Time Machine ไม่ได้ชี้ไปที่ CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "ไม่ทราบว่า Time Machine ชี้ไปที่ CloudMachine หรือไม่ - tmutil ไม่ตอบสนอง", + "Backup in progress": + "กำลังสำรองข้อมูล", + "Unknown when the last backup was made": + "ไม่ทราบว่าสำรองข้อมูลครั้งล่าสุดเมื่อใด", + "There is no completed backup at all": + "ไม่มีการสำรองข้อมูลที่เสร็จสมบูรณ์เลย", + "No completed backup for %@": + "ไม่มีการสำรองข้อมูลที่เสร็จสมบูรณ์เป็นเวลา %@", + "Ready": + "พร้อม", + "Not saved: %@": + "ไม่ได้บันทึก: %@", + "Installing rclone": + "กำลังติดตั้ง rclone", + "Installing launchd agents": + "กำลังติดตั้งเอเจนต์ launchd", + "Starting backup": + "กำลังเริ่มการสำรองข้อมูล", + "Backup started.": + "เริ่มการสำรองข้อมูลแล้ว", + "Could not start the backup.": + "เริ่มการสำรองข้อมูลไม่ได้", + "Stopping backup": + "กำลังหยุดการสำรองข้อมูล", + "Backup stopped.": + "หยุดการสำรองข้อมูลแล้ว", + "Could not stop the backup.": + "หยุดการสำรองข้อมูลไม่ได้", + "Could not prepare the AppleScript.": + "เตรียม AppleScript ไม่ได้", + "Unknown authorization error.": + "ข้อผิดพลาดการอนุญาตที่ไม่ทราบสาเหตุ", + "Waiting to upload": + "รออัปโหลด", + "%@ files": + "%@ ไฟล์", + "nothing": + "ไม่มี", + "Back up now": + "สำรองข้อมูลตอนนี้", + "Stop backup": + "หยุดการสำรองข้อมูล", + "Open CloudMachine": + "เปิด CloudMachine", + "Quit": + "ออก", + "Healthy": + "ปกติ", + "Attention": + "ต้องดูแล", + "Refreshed %@": + "รีเฟรชเมื่อ %@", + "System Status": + "สถานะระบบ", + "Action needed": + "ต้องดำเนินการ", + "not measured": + "ยังไม่ได้วัด", + "rclone did not answer": + "rclone ไม่ตอบสนอง", + "Backup in Progress": + "กำลังสำรองข้อมูล", + "Files processed": + "ไฟล์ที่ประมวลผลแล้ว", + "Write speed": + "ความเร็วในการเขียน", + "Operation phase": + "ขั้นตอนการทำงาน", + "Required Setup Steps": + "ขั้นตอนการตั้งค่าที่จำเป็น", + "Copy": + "คัดลอก", + "Last completed backup": + "การสำรองข้อมูลที่เสร็จสมบูรณ์ครั้งล่าสุด", + "Last backup watchdog run": + "การทำงานของตัวเฝ้าระวังการสำรองข้อมูลครั้งล่าสุด", + "not read": + "ยังไม่ได้อ่าน", + "Everything uploaded": + "อัปโหลดครบทั้งหมดแล้ว", + "File upload errors": + "ข้อผิดพลาดในการอัปโหลดไฟล์", + "Google Drive Credentials (OAuth 2.0)": + "ข้อมูลรับรอง Google Drive (OAuth 2.0)", + "Keychain OK": + "พวงกุญแจปกติ", + "No custom keys": + "ไม่มีคีย์กำหนดเอง", + "Paste client_id...": + "วาง client_id...", + "Paste client_secret...": + "วาง client_secret...", + "Save securely in the Keychain": + "บันทึกอย่างปลอดภัยในพวงกุญแจ", + "Refresh": + "รีเฟรช", + "Overview": + "ภาพรวม", + "Backups": + "ข้อมูลสำรอง", + "Storage": + "พื้นที่เก็บข้อมูล", + "Settings": + "การตั้งค่า", + "Current status: %@": + "สถานะปัจจุบัน: %@", + "Does not point to CloudMachine": + "ไม่ได้ชี้ไปที่ CloudMachine", + "tmutil did not answer": + "tmutil ไม่ตอบสนอง", + "Backing up: %@ of %@": + "กำลังสำรองข้อมูล: %@ จาก %@", + "%@ of %@": + "%@ จาก %@", + "Copied": + "คัดลอกแล้ว", + "No backup is running": + "ไม่มีการสำรองข้อมูลที่กำลังทำงาน", + "Time Machine starts the next one on its own schedule.": + "Time Machine จะเริ่มครั้งถัดไปเองตามกำหนดเวลาของตัวเอง", + "Backup cycle": + "รอบการสำรองข้อมูล", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB ใน %@ แบนด์ กำลังอัปโหลด %@", + "%@ bands": + "%@ แบนด์", + "%@ fragments abandoned - only in the machine": + "ละทิ้ง %@ ชิ้นส่วน - มีอยู่ในเครื่องเสมือนเท่านั้น", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 ตอบสนองบน Mac: Lima ส่งต่อการควบคุมระยะไกลของ rclone ในเครื่องเสมือน ซึ่งไม่มีรหัสผ่าน หน้าเว็บใดก็ตามที่เปิดอยู่ในเบราว์เซอร์สามารถส่งคำสั่งไปได้ - รวมถึงการลบข้อมูลสำรองบน Google Drive เพิ่มกฎ portForwards จาก vm/cmsmb.yaml ลงในเครื่องเสมือนแล้วรีสตาร์ท (ดู vm/README.md)", + "A service in the CloudMachine machine is not running": + "บริการในเครื่องเสมือน CloudMachine ไม่ได้ทำงาน", + "Address": + "ที่อยู่", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "การติดตั้งเอเจนต์ไม่สมบูรณ์ - %@ จาก %@ ติดตั้งไม่สำเร็จ:\n%@\n%@\nเอเจนต์ที่ขาดไปทุกตัวคือฟังก์ชันที่หยุดทำงานโดยไม่มีสัญญาณ (vm-guard เฝ้าดูบัฟเฟอร์ของเครื่องเสมือน, backup-health รายงานความล้มเหลว) แก้ไขสาเหตุแล้วติดตั้งซ้ำ", + "All running": + "ทำงานทั้งหมด", + "Also install the launchd agents (same as install-launchd).": + "ติดตั้งเอเจนต์ launchd ด้วย (เหมือนกับ install-launchd)", + "At most this many minutes of waiting for the upload.": + "รอการอัปโหลดนานที่สุดตามจำนวนนาทีนี้", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "เมื่อถึงขีดจำกัด แบนด์ใหม่ทุกอันจะล้มเหลวด้วย EMFILE และการสำรองข้อมูลจะหยุด ตรวจสอบ: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "แคชบนดิสก์ของเครื่องเสมือน", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "เชื่อมต่อกับ Google Drive แล้ว แต่สร้างโฟลเดอร์ '%@' ไม่ได้ - หากไม่มีโฟลเดอร์นี้ เครื่องเสมือนจะไม่มีที่เก็บข้อมูลสำรอง ตรวจสอบสิทธิ์ของบัญชีแล้วลองอีกครั้ง", + "Convert the image": + "แปลงอิมเมจ", + "Converting the image to 32 MB bands": + "กำลังแปลงอิมเมจเป็นแบนด์ขนาด 32 MB", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "ตรวจสอบด้วยการเชื่อมต่อปัจจุบันไม่ได้ว่าข้อมูลสำรองอยู่บน Google Drive (%@) หรือไม่ จึง \"ไม่ได้\" แทนที่ remote '%@': หากไม่มีคำตอบนั้น จะตรวจสอบการลงชื่อเข้าใช้ใหม่เทียบกับข้อมูลสำรองไม่ได้", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "ดาวน์โหลดไบนารี rclone อย่างเป็นทางการไปที่ ~/.cloudmachine/bin (การลงชื่อเข้าใช้ Google และ rclone.conf ของเครื่องเสมือน)", + "Free in the machine": + "พื้นที่ว่างในเครื่องเสมือน", + "Free in the machine: %@": + "พื้นที่ว่างในเครื่องเสมือน: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "สร้างและติดตั้งเอเจนต์ launchd (แอป ตัวเฝ้าระวังการสำรองข้อมูล การเริ่มเครื่องเสมือน ตัวป้องกันเครื่องเสมือน)", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "ติดตั้ง Lima ซึ่งเรียกใช้เครื่องเสมือน CloudMachine: เรียกใช้คำสั่งนี้ในเทอร์มินัล", + "Install rclone (signs in to Google Drive for the machine)": + "ติดตั้ง rclone (ลงชื่อเข้าใช้ Google Drive ให้เครื่องเสมือน)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "ติดตั้งเอเจนต์เบื้องหลัง (การเริ่มเครื่องเสมือน ตัวป้องกันบัฟเฟอร์ ตัวเฝ้าระวังการสำรองข้อมูล)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "ติดตั้ง rclone ผ่าน Homebrew - CloudMachine เองใช้ตัวที่มาจาก install-rclone", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Info.plist, โทเค็น และ mapped/ ของอิมเมจสำรองข้อมูลมีอยู่บนดิสก์ของเครื่องเสมือนเท่านั้น หากไม่มี แบนด์ใน %@ จะกู้คืนไม่ได้ สำเนา (tm-meta-sync ทุก 15 นาที) ถูกส่งไปที่ %@ ตรวจสอบ: cloudmachine-agent vm-status แล้วในเครื่องเสมือน: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima รายงานว่าเครื่องเสมือนกำลังทำงาน แต่คำสั่งหนึ่งในเครื่องไม่ตอบกลับ หากไม่มีคำสั่งนั้น จะไม่ทราบอะไรเกี่ยวกับ Samba, rclone หรือการอัปโหลดเลย ตรวจสอบ: cloudmachine-agent vm-status", + "Machine": + "เครื่องเสมือน", + "Machine %@": + "เครื่องเสมือน %@", + "Machine & Upload Status": + "สถานะเครื่องเสมือนและการอัปโหลด", + "Machine buffer": + "บัฟเฟอร์ของเครื่องเสมือน", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "ไม่มีปลายทาง Time Machine ใดที่เป็นแชร์ของเครื่องเสมือน (smb://tm@
/CloudMachine) - จึงไม่มีการสำรองข้อมูลไปที่นั่น คำสั่งพิมพ์ได้ด้วย: cloudmachine-agent vm-setup", + "Not running: %@": + "ไม่ได้ทำงาน: %@", + "Not set up": + "ยังไม่ได้ตั้งค่า", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "เมื่อหมด rclone จะหยุดอัปโหลด บัฟเฟอร์ของเครื่องเสมือนจะเต็ม และการสำรองข้อมูลจะหยุด ที่อัตราเพิ่มประมาณ 600 MB ต่อรอบรายชั่วโมง จะอยู่ได้ราว %@ วัน", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "หรือไม่พบ rclone.conf: Mac เครื่องนี้เคยตั้งค่าเครื่องเสมือน CloudMachine แล้ว จึงไม่เชื่อมต่อใหม่แบบสุ่มสี่สุ่มห้า กู้คืนไฟล์จากข้อมูลสำรอง (เครื่องเสมือนเก็บสำเนาของตัวเองไว้ใน %@) หากต้องการเชื่อมต่อต่อไป ให้สร้างไฟล์เปล่าที่เส้นทางซึ่ง `%@ config file` พิมพ์ออกมา แล้วเรียกใช้อีกครั้ง - โฟลเดอร์ที่มีอยู่จะถูกเก็บไว้", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "ชี้ Time Machine ไปที่เครื่องเสมือน: เรียกใช้คำสั่งนี้ในเทอร์มินัล (ต้องใช้ sudo; คัดลอกจะรวมรหัสผ่านด้วย)", + "Points to the machine": + "ชี้ไปที่เครื่องเสมือน", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "เตรียมการรีสตาร์ท: หยุดการสำรองข้อมูล รอการอัปโหลดสักครู่ แล้วหยุดเครื่องเสมือนอย่างเรียบร้อย", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "การอ่านปลายทาง Time Machine ไม่ตอบกลับภายใน %@ s tmutil เป็นเช่นนี้เมื่อปลายทางค้าง", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "remote '%@' \"ไม่ได้\" ถูกแทนที่ การลงชื่อเข้าใช้ใหม่ได้ขอบเขต 'drive.file' ซึ่งมองเห็นเฉพาะไฟล์ที่สร้างภายใต้ client_id ของตัวเองเท่านั้น ข้อมูลสำรองที่มีอยู่น่าจะถูกสร้างโดยการเชื่อมต่อปัจจุบัน และจะมองไม่เห็นสำหรับการเชื่อมต่อใหม่ ก่อนเขียนสิ่งใด จะตรวจสอบโทเค็นใหม่เทียบกับข้อมูลสำรองที่มีอยู่ และจะยกเลิกการแทนที่หากมองไม่เห็น เครื่องเสมือนเก็บสำเนาการตั้งค่าของตัวเองไว้จนกว่าจะใช้ vm-setup --replace-rclone-config หากต้องการดำเนินการต่อ ให้เรียกใช้อีกครั้งด้วย --replace-existing --accept-scope-change", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "การควบคุมระยะไกล: เปิดอยู่บน Mac ที่ 127.0.0.1:5572 - หน้าเว็บใดก็ส่งคำสั่ง rclone ได้; ดู vm/README.md (portForwards)", + "Running": + "กำลังทำงาน", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Samba, rclone หรือ punchfs ในเครื่องเสมือนไม่ทำงาน Time Machine จึงไม่มีที่เขียน หรือแบนด์ไม่ถึง Google Drive ตรวจสอบ: cloudmachine-agent vm-status", + "Service %@": + "บริการ %@", + "Services": + "บริการ", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "ตั้งค่าเครื่องเสมือน CloudMachine (ครั้งแรกจะดาวน์โหลด Ubuntu - ใช้เวลาหลายนาที)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "ตั้งค่าเครื่องเสมือน CloudMachine อีกครั้ง เพื่อให้พิมพ์คำสั่ง Time Machine", + "Set up the machine": + "ตั้งค่าเครื่องเสมือน", + "Setting up the CloudMachine machine": + "กำลังตั้งค่าเครื่องเสมือน CloudMachine", + "Start the CloudMachine machine": + "เริ่มเครื่องเสมือน CloudMachine", + "Start the machine": + "เริ่มเครื่องเสมือน", + "Starting the CloudMachine machine": + "กำลังเริ่มเครื่องเสมือน CloudMachine", + "Still to upload: %@ GiB": + "ยังต้องอัปโหลด: %@ GiB", + "Stopping the Time Machine backup...": + "กำลังหยุดการสำรองข้อมูลของ Time Machine...", + "Stopping the machine %@...": + "กำลังหยุดเครื่องเสมือน %@...", + "The CloudMachine machine does not answer": + "เครื่องเสมือน CloudMachine ไม่ตอบสนอง", + "The CloudMachine machine is not running": + "เครื่องเสมือน CloudMachine ไม่ได้ทำงาน", + "The CloudMachine machine is not set up yet": + "ยังไม่ได้ตั้งค่าเครื่องเสมือน CloudMachine", + "The CloudMachine machine is stopped": + "เครื่องเสมือน CloudMachine หยุดอยู่", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "หยุดการสำรองข้อมูลแล้ว ให้เวลาอัปโหลดนานถึง 30 นาที จากนั้นเครื่องเสมือนจะปิดอย่างเรียบร้อย และจะเริ่มทำงานอีกครั้งเมื่อเข้าสู่ระบบครั้งถัดไป", + "The machine %@ is not running - nothing to prepare.": + "เครื่องเสมือน %@ ไม่ได้ทำงาน - ไม่มีอะไรต้องเตรียม", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "เครื่องเสมือนหยุดแล้ว และทุกอย่างถึง Google Drive แล้ว สามารถรีสตาร์ท Mac ได้ เครื่องเสมือนจะเริ่มทำงานอีกครั้งเมื่อเข้าสู่ระบบ", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "เครื่องเสมือนหยุดแล้ว %@ GiB ยังไม่ถึง Google Drive - เก็บไว้ในบัฟเฟอร์ของเครื่องเสมือนและจะอัปโหลดหลังการเริ่มครั้งถัดไป สามารถรีสตาร์ท Mac ได้", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "เครื่องเสมือนหยุดแล้ว rclone ไม่ได้แจ้งว่ายังเหลือต้องอัปโหลดเท่าใด สิ่งที่ยังไม่ได้อัปโหลดเก็บไว้ในบัฟเฟอร์ของเครื่องเสมือนและจะอัปโหลดหลังการเริ่มครั้งถัดไป สามารถรีสตาร์ท Mac ได้", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "ดิสก์ของเครื่องเสมือนเป็นไฟล์บนดิสก์นี้ และจะโตขึ้นเมื่อบัฟเฟอร์อัปโหลดเต็ม หากไม่มีพื้นที่เหลือ เครื่องเสมือนจะเขียนบัฟเฟอร์ไม่ได้ และสแนปชอตในเครื่องของ Time Machine ก็ไม่มีที่เก็บเช่นกัน", + "The image's metadata has never been copied to Drive": + "ยังไม่เคยคัดลอกข้อมูลเมตาของอิมเมจไปที่ Drive", + "The image's metadata was last copied to Drive %@ ago": + "คัดลอกข้อมูลเมตาของอิมเมจไปที่ Drive ครั้งล่าสุดเมื่อ %@ ที่แล้ว", + "The machine's disk is running out of space (%@ GB)": + "ดิสก์ของเครื่องเสมือนใกล้เต็ม (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "การลงชื่อเข้าใช้ใหม่ \"มองไม่เห็น\" ข้อมูลสำรองที่มีอยู่ (%@) จึง \"ไม่ได้\" แทนที่ remote '%@' และ rclone.conf ไม่เปลี่ยนแปลง ให้ใช้การเชื่อมต่อปัจจุบันต่อไป หรือลงชื่อเข้าใช้ด้วยข้อมูลรับรอง (client_id) ที่สร้างข้อมูลสำรองนั้น", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "บัฟเฟอร์อัปโหลดอยู่บนดิสก์นี้ ตัวป้องกันจะหยุด Time Machine ชั่วคราวก่อนที่บัฟเฟอร์จะเต็ม หากการอัปโหลดตามไม่ทัน การสำรองข้อมูลจะหยุดค้างไว้", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "แบนด์เหล่านี้มีอยู่ในบัฟเฟอร์ของเครื่องเสมือนเท่านั้น ข้อมูลสำรองบน Google Drive ไม่สมบูรณ์และอาจเปิดไม่ได้", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine สำรองข้อมูลไปที่เครื่องเสมือน หากไม่มีเครื่องเสมือนจะไม่มีการสำรองข้อมูล เริ่มด้วย: limactl start %@ (หรือปุ่มเริ่มในแอป)", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine ไม่หยุดการสำรองข้อมูลภายใน 2 นาที (หรือ tmutil ไม่ตอบสนอง) - เครื่องเสมือน \"ไม่ได้\" ถูกหยุด ลองอีกครั้งในอีกสักครู่", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine สร้างอิมเมจแล้ว: หยุดการสำรองข้อมูล แล้วแปลงอิมเมจเป็นแบนด์ขนาด 32 MB", + "To upload": + "รออัปโหลด", + "Unknown whether the CloudMachine machine is running": + "ไม่ทราบว่าเครื่องเสมือน CloudMachine ทำงานอยู่หรือไม่", + "Waiting for the upload to Google Drive (at most %@ min)...": + "กำลังรอการอัปโหลดไปที่ Google Drive (นานที่สุด %@ นาที)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "เมื่อใช้ --replace-existing: ยืนยันว่าการลงชื่อเข้าใช้ใหม่ (ขอบเขต 'drive.file') อาจมองไม่เห็นข้อมูลสำรองที่มีอยู่ โทเค็นใหม่ยังคงถูกตรวจสอบเทียบกับข้อมูลสำรองก่อน", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "หากไม่มี จะไม่มีทางตรวจสอบได้ว่ามีสิ่งใดถึง Drive หรือไม่ - ตัวป้องกันของเครื่องเสมือนจะมองไม่เห็น", + "limactl did not answer": + "limactl ไม่ตอบสนอง", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl ไม่ตอบสนอง (หรือไม่ได้ติดตั้ง) ซึ่งไม่ได้หมายความว่าเครื่องเสมือนล่ม แต่หมายความว่ายังไม่มีใครตรวจสอบ", + "limactl start failed: %@": + "limactl start ล้มเหลว: %@", + "limactl stop failed: %@": + "limactl stop ล้มเหลว: %@", + "punchfs is close to its open-file limit": + "punchfs ใกล้ถึงขีดจำกัดจำนวนไฟล์ที่เปิดได้", + "punchfs open files": + "ไฟล์ที่ punchfs เปิดอยู่", + "rclone's remote control is open on this Mac": + "การควบคุมระยะไกลของ rclone เปิดอยู่บน Mac เครื่องนี้", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') ส่งคืนข้อผิดพลาด จึงไม่มีใครทราบว่าดิสก์ของเครื่องเสมือนยังโตต่อได้บน Mac เครื่องนี้หรือไม่", + "Google Drive's daily upload limit stops the upload": + "ขีดจำกัดการอัปโหลดรายวันของ Google Drive ทำให้การอัปโหลดหยุด", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google ปฏิเสธการอัปโหลดครั้งล่าสุดเมื่อ %@ ที่แล้ว (750 GB ต่อวัน) ข้อมูลสำรองตั้งแต่นั้นมีอยู่ในบัฟเฟอร์ของเครื่องเสมือนบน Mac เครื่องนี้เท่านั้น rclone ลองใหม่ทุก 5 นาทีและจะทำต่อเองเมื่อพ้นขีดจำกัด ตัวป้องกันจะหยุด Time Machine ชั่วคราวหากมีข้อมูลรออยู่เกิน %@ GiB", + "Usage on Google Drive is not being measured": + "ไม่ได้วัดการใช้งานบน Google Drive", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "การวัดครั้งล่าสุด (%@ GB) มาจาก %@ (%@ ที่แล้ว) - rclone size ไม่ตอบสนองมาตั้งแต่นั้น จนกว่าจะตอบสนอง จะไม่มีอะไรเฝ้าดูขีดจำกัด %@ GB: การเตือนที่ 90%% และ 100%% จะเงียบ ตรวจสอบ vm-status หรือกด วัดตอนนี้ ในหน้าต่าง", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size ไม่ตอบสนองเลยสักครั้ง จนกว่าจะตอบสนอง จะไม่มีอะไรเฝ้าดูขีดจำกัด %@ GB: การเตือนที่ 90%% และ 100%% จะเงียบ ตรวจสอบ vm-status หรือกด วัดตอนนี้ ในหน้าต่าง", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "บันทึกในพวงกุญแจแล้ว การเชื่อมต่อ Google Drive (configure-remote) จะใช้ข้อมูลเหล่านี้", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "บันทึกในพวงกุญแจแล้ว การเชื่อมต่อ Google Drive ที่มีอยู่ยังคงใช้ client_id เดิม และบน Mac เครื่องนี้ควรเป็นเช่นนั้น: การเชื่อมต่อที่สร้างด้วยคีย์ใหม่ (ขอบเขต 'drive.file') มองไม่เห็นข้อมูลสำรองที่สร้างโดยตัวเดิม อย่าแทนที่การเชื่อมต่อที่นี่ คีย์ใหม่ไว้สำหรับ Mac ที่ยังไม่ได้เชื่อมต่อ", + "it is not there for the new token": + "ไม่มีสำหรับโทเค็นใหม่", + "Cancel": + "ยกเลิก", + "ACTION NEEDED": + "ต้องดำเนินการ", + "WILL PASS BY ITSELF — DO NOTHING": + "จะหายไปเอง - ไม่ต้องทำอะไร", + "UNKNOWN — CHECK AGAIN SHORTLY": + "ไม่ทราบ - ตรวจสอบอีกครั้งในอีกสักครู่", + "ALL GOOD": + "ปกติดี", + "Upload is not working": + "การอัปโหลดไม่ทำงาน", + "Upload stopped — no space left on Google Drive": + "การอัปโหลดหยุด - Google Drive ไม่มีพื้นที่เหลือ", + "%@ backup fragments not uploaded": + "ชิ้นส่วนข้อมูลสำรอง %@ ชิ้นยังไม่ได้อัปโหลด", + "Upload cannot keep up with writes": + "การอัปโหลดตามการเขียนไม่ทัน", + "Upload paused — Google daily limit": + "การอัปโหลดหยุดชั่วคราว - ขีดจำกัดรายวันของ Google", + "Uploading to Google Drive — %@ queued": + "กำลังอัปโหลดไปที่ Google Drive - รอในคิว %@", + "Everything uploaded to Google Drive": + "อัปโหลดไปที่ Google Drive ครบทั้งหมดแล้ว", + "Unknown what is waiting in the queue": + "ไม่ทราบว่ามีอะไรรออยู่ในคิว", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "ไม่มีการเชื่อมต่อกับ Google Drive จึงสำรองข้อมูลได้เฉพาะบน Mac เครื่องนี้ หากไม่หายไปเองภายในไม่กี่นาที ให้ตรวจสอบเครือข่ายและการเชื่อมต่อกับ Drive", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Google Drive ไม่มีพื้นที่เหลือ สิ่งนี้จะ \"ไม่\" หายไปเอง - ต้องเพิ่มพื้นที่ว่างบน Drive จนกว่าจะทำ Time Machine จะหยุดชั่วคราวเพื่อไม่ให้ดิสก์ของ Mac เครื่องนี้เต็ม", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "ชิ้นส่วนข้อมูลสำรอง %@ ชิ้นอัปโหลดไม่ได้และ rclone เลิกลองแล้ว ชิ้นส่วนเหล่านี้มีอยู่บน Mac เครื่องนี้เท่านั้น ข้อมูลสำรองบน Drive จึงไม่สมบูรณ์ ต้องตรวจสอบเรื่องนี้", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine เขียนเร็วกว่าการอัปโหลด และบัฟเฟอร์เต็มแล้ว การสำรองข้อมูลจะหยุดชั่วคราวจนกว่าการอัปโหลดจะตามทัน - นี่เป็นมาตรการป้องกันไม่ให้ดิสก์เต็ม ไม่ใช่ความล้มเหลว", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google รับ 750 GB ต่อวัน และใช้ครบขีดจำกัดแล้ว ไม่ต้องทำอะไร: ขีดจำกัดจะรีเซ็ตเอง โดยปกติภายในไม่กี่ชั่วโมง ระหว่างนี้ Time Machine สำรองข้อมูลได้ตามปกติและรออยู่ในบัฟเฟอร์ - จะอัปโหลดทันทีที่ Google เริ่มรับอีกครั้ง", + "%@ backup fragments are queued and on their way to Drive.": + "ชิ้นส่วนข้อมูลสำรอง %@ ชิ้นอยู่ในคิวและกำลังไปที่ Drive", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "ไม่มีอะไรรออยู่ในคิว - ข้อมูลสำรองบน Google Drive สมบูรณ์", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone ไม่ตอบคำถามเกี่ยวกับคิว จึงไม่ทราบว่ามีข้อมูลสำรองรออัปโหลดอีกเท่าใด ซึ่งไม่ได้หมายความว่ามีบางอย่างเสีย - เมื่อโหลดสูง คำตอบอาจช้า หมายความเพียงว่าตอนนี้ยังไม่มีใครทราบ หากยังเป็นอยู่ การตรวจสอบรอบการสำรองข้อมูลจะรายงาน", + "unknown error": + "ข้อผิดพลาดที่ไม่ทราบสาเหตุ", + "rclone lsf ended with an error": + "rclone lsf จบการทำงานด้วยข้อผิดพลาด", + "This Mac is close to its space limit on Google Drive": + "Mac เครื่องนี้ใกล้ถึงขีดจำกัดพื้นที่บน Google Drive", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "ใช้ไป %@ GB จาก %@ GB Time Machine จะลบข้อมูลสำรองที่เก่าที่สุดเพื่อให้อยู่ในโควตา ตรวจสอบว่าตั้งโควตาแล้ว (vm-status)", + "This Mac is over its space limit on Google Drive": + "Mac เครื่องนี้เกินขีดจำกัดพื้นที่บน Google Drive", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "ใช้ไป %@ GB จาก %@ GB ตั้งโควตา Time Machine (คำสั่งอยู่ในหน้าต่างแอปหรือ vm-status) หรือเพิ่มขีดจำกัด", + "not set": + "ยังไม่ได้ตั้งค่า", + "%@ GB - usage not measured yet": + "%@ GB - ยังไม่ได้วัดการใช้งาน", + "%@ of %@ GB used (%@%%)": + "ใช้ไป %@ จาก %@ GB (%@%%)", + "The limit must be a whole number of GB above zero.": + "ขีดจำกัดต้องเป็นจำนวนเต็ม GB ที่มากกว่าศูนย์", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "อ่าน machines.json ไม่ได้ จึงไม่ได้เขียนทับ แก้ไขหรือลบไฟล์นั้นก่อน", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' ไม่ใช่ชื่อโฟลเดอร์ที่ถูกต้อง: ใช้ตัวพิมพ์เล็ก ตัวเลข และขีดกลาง", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Mac เครื่องนี้สำรองข้อมูลไปที่โฟลเดอร์ '%@' อยู่แล้ว การเปลี่ยนเป็น '%@' จะเริ่มข้อมูลสำรองใหม่ที่ว่างเปล่าและทำให้ข้อมูลสำรองเดิมไม่มีเจ้าของ จึงไม่ได้เปลี่ยนแปลงอะไร", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Mac เครื่องนี้มีการติดตั้ง CloudMachine อยู่แล้ว โดยข้อมูลสำรองอยู่ในโฟลเดอร์ '%@' การเปลี่ยนเป็น '%@' จะทำให้ข้อมูลสำรองนั้นไม่มีเจ้าของ จึงไม่ได้เปลี่ยนแปลงอะไร", + "Could not save the folder name to %@: %@": + "บันทึกชื่อโฟลเดอร์ไปที่ %@ ไม่ได้: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "ไม่ได้ติดตั้ง Homebrew ติดตั้งด้วยตนเอง: https://brew.sh", + "Installing rclone failed: %@": + "ติดตั้ง rclone ไม่สำเร็จ: %@", + "Installed rclone.": + "ติดตั้ง rclone แล้ว", + "Own Google credentials: set.": + "ข้อมูลรับรอง Google ของตนเอง: ตั้งค่าแล้ว", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "ไม่สมบูรณ์: ไม่มี %@ - rclone จะใช้ client_id ที่ใช้ร่วมกันของ rclone อยู่ดี", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "ไม่มีข้อมูลรับรองของตนเอง - rclone ใช้ client_id ที่ใช้ร่วมกัน ซึ่งมีการจำกัดอัตราร่วมกันและจะเลิกใช้ในปี 2026", + "Empty value - not saving.": + "ค่าว่าง - ไม่บันทึก", + "Keychain refused: %@": + "พวงกุญแจปฏิเสธ: %@", + "DIRTY-TREE": + "ต้นไม้สกปรก", + "Cannot create the working directory: %@": + "สร้างไดเรกทอรีทำงานไม่ได้: %@", + "Could not read the rclone version number.": + "อ่านหมายเลขเวอร์ชันของ rclone ไม่ได้", + "Could not download %@.": + "ดาวน์โหลด %@ ไม่ได้", + "No entry for %@ in SHA256SUMS.": + "ไม่พบรายการสำหรับ %@ ใน SHA256SUMS", + "Could not compute the checksum.": + "คำนวณค่า checksum ไม่ได้", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "ค่า checksum SHA256 ไม่ตรงกัน - \"ไม่\" ติดตั้ง\n ที่คาดไว้: %@\n ที่คำนวณได้: %@", + "Could not unpack the archive.": + "แตกไฟล์เก็บถาวรไม่ได้", + "Could not install the binary: %@": + "ติดตั้งไบนารีไม่ได้: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "ติดตั้ง rclone %@ ใน %@ แล้ว (ค่า checksum SHA256 ตรงกัน)", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ ไม่ตอบสนองภายในเวลาที่กำหนด (กระบวนการถูกทิ้งไว้ค้างอยู่เบื้องหลัง)", + "Cannot launch %@: %@": + "เรียกใช้ %@ ไม่ได้: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "remote '%@' มีอยู่แล้วและ \"ไม่ได้\" ถูกแตะต้อง\nการเขียนทับจะแทนที่โทเค็นและขอบเขตสิทธิ์ ข้อมูลรับรองที่มีขอบเขต 'drive.file' มองไม่เห็นไฟล์ที่สร้างโดยตัวก่อนหน้า ข้อมูลสำรองที่มีอยู่จึงเข้าถึงไม่ได้\nหากต้องการแทนที่จริง ๆ ให้สำรอง ~/.config/rclone/rclone.conf ก่อน แล้วเรียกใช้อีกครั้งด้วย --replace-existing", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "ตรวจสอบไม่ได้ว่ามี remote '%@' อยู่แล้วหรือไม่ (rclone listremotes ไม่ตอบสนองหรือล้มเหลว) จึงไม่ได้เปลี่ยนแปลงอะไร เรียกใช้ `%@ listremotes` เพื่อดูข้อผิดพลาด แล้วลองอีกครั้ง", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "ตรวจสอบไม่ได้ว่า Mac เครื่องนี้มีการติดตั้ง CloudMachine อยู่แล้วหรือไม่ (rclone ไม่ตอบสนอง) จึงไม่ได้เลือกโฟลเดอร์ ลองอีกครั้งในอีกสักครู่", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize ล้มเหลว (%@) หากไม่พบไบนารีนั้น ให้เริ่มด้วย: cloudmachine-agent install-rclone", + "Could not read the token from the output of rclone authorize.": + "อ่านโทเค็นจากเอาต์พุตของ rclone authorize ไม่ได้", + "rclone config create failed.": + "rclone config create ล้มเหลว", + "Connected to Google Drive as remote '%@', folder %@.": + "เชื่อมต่อกับ Google Drive แล้วในชื่อ remote '%@' โฟลเดอร์ %@", + "tmutil is not responding - unknown where the backup goes": + "tmutil ไม่ตอบสนอง - ไม่ทราบว่าข้อมูลสำรองไปที่ใด", + "No successful backup for %@": + "ไม่มีการสำรองข้อมูลที่สำเร็จเป็นเวลา %@", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "การสำรองข้อมูลที่เสร็จสมบูรณ์ครั้งล่าสุด: %@ รอบการทำงานเป็นรายชั่วโมง นั่นหมายถึงพลาดไป %@ รอบ", + "There is NOT A SINGLE successful backup": + "ไม่มีการสำรองข้อมูลที่สำเร็จเลยแม้แต่ครั้งเดียว", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "การตั้งค่า Time Machine ไม่มีวันที่ของการสำรองข้อมูลที่เสร็จสมบูรณ์สำหรับปลายทางนี้", + "The last backup attempt did not end in a backup": + "ความพยายามสำรองข้อมูลครั้งล่าสุดไม่ได้ลงเอยด้วยข้อมูลสำรอง", + "The attempt at %@ is newer than the last successful backup at %@.": + "ความพยายามเมื่อ %@ ใหม่กว่าการสำรองข้อมูลที่สำเร็จครั้งล่าสุดเมื่อ %@", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine รายงานข้อผิดพลาดในการทำงานครั้งล่าสุด (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "ค่า RESULT ที่ไม่ใช่ศูนย์ในการตั้งค่า Time Machine หมายความว่าการทำงานไม่สำเร็จ", + "rclone failed to upload %@ files": + "rclone อัปโหลดไฟล์ %@ ไฟล์ไม่สำเร็จ", + "Buffer full of nothing but unsent data": + "บัฟเฟอร์เต็มไปด้วยข้อมูลที่ยังไม่ได้ส่งทั้งหมด", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone ไม่มีอะไรจะนำออกจากบัฟเฟอร์ได้อีก - การอัปโหลดตามไม่ทันหรือติดค้าง", + "The rclone control interface is not responding": + "อินเทอร์เฟซควบคุมของ rclone ไม่ตอบสนอง", + "Google Drive is running out of space (%@ GB)": + "Google Drive ใกล้เต็ม (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "ดิสก์ของ Mac ใกล้เต็ม (%@ GB)", + "Cannot read the Time Machine preferences": + "อ่านการตั้งค่า Time Machine ไม่ได้", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "อ่าน %@ ไม่ได้ - สาเหตุที่พบบ่อยที่สุดคือไม่มีการเข้าถึงดิสก์แบบเต็ม หากไม่มีไฟล์นี้ จะไม่ทราบว่าสำรองข้อมูลครั้งล่าสุดเมื่อใด จึงถือเป็นความล้มเหลว ไม่ใช่การไม่มีปัญหา", + "Cannot measure free space on the Mac's disk": + "วัดพื้นที่ว่างบนดิสก์ของ Mac ไม่ได้", + "%@ days": + "%@ วัน", + "CloudMachine: backup is not working": + "CloudMachine: การสำรองข้อมูลไม่ทำงาน", + "unknown reason": + "ไม่ทราบสาเหตุ", + "osascript did not show the notification (permissions or no graphical session)": + "osascript ไม่ได้แสดงการแจ้งเตือน (สิทธิ์ หรือไม่มีเซสชันแบบกราฟิก)", + "UNDELIVERED ALARM: %@": + "การเตือนที่ไม่ได้ส่ง: %@", + "from %@, reason: %@": + "จาก %@ เหตุผล: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "การแจ้งเตือนจากระบบไม่ได้ส่ง - คุณจะเห็นการเตือนนี้ที่นี่เท่านั้น", + "%@ (%@ ago)": + "%@ (%@ ที่แล้ว)", + "%@ - marker from the FUTURE": + "%@ - เครื่องหมายจากอนาคต", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (%@ ที่แล้ว) - ตัวเฝ้าระวังอาจไม่ได้ทำงาน", + "NEVER - the watchdog has not recorded a single run": + "ไม่เคย - ตัวเฝ้าระวังยังไม่ได้บันทึกการทำงานเลยสักครั้ง", + "Could not find the launchd/ directory with templates.": + "ไม่พบไดเรกทอรี launchd/ ที่มีเทมเพลต", + "Could not find the compiled cloudmachine-agent binary.": + "ไม่พบไบนารี cloudmachine-agent ที่คอมไพล์แล้ว", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "ยกเลิก: วาง cloudmachine-agent ในตำแหน่งที่คงที่ไม่ได้\n(%@) - สาเหตุที่พบบ่อยที่สุดคือพื้นที่หรือสิทธิ์ไม่พอ\n\"ไม่\" ติดตั้งเอเจนต์ที่ชี้ไปที่ %@ : เส้นทางนั้น\nจะหายไปเมื่อ `swift build` หรือ `git clean` ครั้งถัดไป และการสำรองข้อมูลจะหยุด\nโดยไม่มีสัญญาณใด ๆ ให้เห็น", + "ABORTED: %@": + "ยกเลิก: %@", + "Could not list the templates in %@.": + "แสดงรายการเทมเพลตใน %@ ไม่ได้", + "could not read the template %@": + "อ่านเทมเพลต %@ ไม่ได้", + "could not write %@ (lack of space or permissions)": + "เขียน %@ ไม่ได้ (พื้นที่หรือสิทธิ์ไม่พอ)", + "launchctl load refused to load %@": + "launchctl load ปฏิเสธการโหลด %@", + "NOT A SINGLE agent was loaded.": + "ไม่มีเอเจนต์ใดถูกโหลดเลยแม้แต่ตัวเดียว", + "Only these went in: %@.": + "ติดตั้งสำเร็จเฉพาะ: %@", + "Could not load any launchd agent.": + "โหลดเอเจนต์ launchd ใด ๆ ไม่ได้", + "Installed agents: %@": + "เอเจนต์ที่ติดตั้ง: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " คำเตือน: ใกล้ถึงขีดจำกัด - แบนด์ใหม่จะล้มเหลวด้วย EMFILE", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "%@/bands บน Google Drive ไม่ว่างเปล่า - อาจมีข้อมูลสำรองอื่นอยู่ \"ไม่\" เขียนทับ ตรวจสอบด้วยตนเอง", + "Address: %@": + "ที่อยู่: %@", + "Already prepared (%@ exists) - nothing to do.": + "เตรียมไว้แล้ว (มี %@ อยู่) - ไม่ต้องดำเนินการใด ๆ", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "แปลงอิมเมจใหม่ที่ว่างเปล่าของ Time Machine ในเครื่องเสมือนเป็นแบนด์ขนาด 32 MB และย้ายแบนด์ไปที่ Google Drive", + "Copy rclone.conf into the machine even if it already has one.": + "คัดลอก rclone.conf ไปยังเครื่องเสมือน แม้ว่ามีอยู่แล้ว", + "Copying the converted image into the machine failed: %@": + "คัดลอกอิมเมจที่แปลงแล้วเข้าเครื่องเสมือนไม่สำเร็จ: %@", + "Copying the image to the Mac failed: %@": + "คัดลอกอิมเมจไปที่ Mac ไม่สำเร็จ: %@", + "Could not ask Lima about the machine: %@": + "สอบถาม Lima เกี่ยวกับเครื่องเสมือนไม่ได้: %@", + "Could not carry the Time Machine files over: %@": + "ย้ายไฟล์ Time Machine ไม่ได้: %@", + "Could not check the image in the machine.": + "ตรวจสอบอิมเมจในเครื่องเสมือนไม่ได้", + "Could not copy the rclone configuration into the machine.": + "คัดลอกการตั้งค่า rclone เข้าเครื่องเสมือนไม่ได้", + "Could not create %@ on Google Drive: %@": + "สร้าง %@ บน Google Drive ไม่ได้: %@", + "Could not create %@: %@": + "สร้าง %@ ไม่ได้: %@", + "Could not find the vm/ directory with the machine template.": + "ไม่พบไดเรกทอรี vm/ ที่มีเทมเพลตของเครื่องเสมือน", + "Could not read the image size.": + "อ่านขนาดอิมเมจไม่ได้", + "Could not set the SMB password of user %@ in the machine.": + "ตั้งรหัสผ่าน SMB ของผู้ใช้ %@ ในเครื่องเสมือนไม่ได้", + "Could not stop smbd in the machine.": + "หยุด smbd ในเครื่องเสมือนไม่ได้", + "Could not write %@ in the machine.": + "เขียน %@ ในเครื่องเสมือนไม่ได้", + "Could not write the password file %@.": + "เขียนไฟล์รหัสผ่าน %@ ไม่ได้", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "สร้างหรือเริ่มเครื่องเสมือน CloudMachine (Lima) ให้การตั้งค่า rclone และรหัสผ่าน SMB แล้วพิมพ์คำสั่ง Time Machine", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "กำลังสร้างเครื่องเสมือน %@ (การเริ่มครั้งแรกจะดาวน์โหลด Ubuntu และติดตั้งแพ็กเกจ - ใช้เวลาหลายนาที)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "เสร็จสิ้น: %@ มีแบนด์ขนาด %@ MB บน Google Drive; ต้นฉบับเก็บไว้ใน %@ ในเครื่องเสมือน เริ่มการสำรองข้อมูล: tmutil startbackup", + "exit code %@, no message": + "รหัสออก %@ ไม่มีข้อความ", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "เมตาดาต้าอิมเมจ: ไม่เคยคัดลอกไปที่ %@ - ตรวจสอบ tm-meta-sync ในเครื่องเสมือน", + "Image metadata: copied %@ ago to %@": + "เมตาดาต้าอิมเมจ: คัดลอกเมื่อ %@ ที่แล้วไปที่ %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "เมตาดาต้าอิมเมจ: คัดลอกครั้งล่าสุดเมื่อ %@ ที่แล้ว - เลยกำหนด (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "เมตาดาต้าอิมเมจ: ยังไม่ได้คัดลอก - รอ vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "การสำรองข้อมูล %@ ถูกตัวป้องกันหยุดชั่วคราว %@: %@", + "Free in machine: %@ GiB": + "ว่างในเครื่องเสมือน: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n พบปัญหา: %@", + "Google Drive folder: %@": + "โฟลเดอร์ Google Drive: %@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach ของอิมเมจที่แปลงแล้วล้มเหลว: %@", + "hdiutil convert failed: %@": + "hdiutil convert ล้มเหลว: %@", + "Image name in the machine (default: from the computer name).": + "ชื่ออิมเมจในเครื่องเสมือน (ค่าเริ่มต้น: จากชื่อคอมพิวเตอร์)", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "ติดตั้งอิมเมจที่แปลงแล้วล้มเหลว: %@\nsmbd ถูกปล่อยให้หยุดอยู่ เพื่อไม่ให้ Time Machine เปิดอิมเมจที่ติดตั้งไม่สมบูรณ์ ต้นฉบับอยู่ใน %@ ในเครื่องเสมือน", + "limactl create failed: %@": + "limactl create ล้มเหลว: %@", + "limactl list failed: %@": + "limactl list ล้มเหลว: %@", + "limactl not found - install Lima: brew install lima": + "ไม่พบ limactl - ติดตั้ง Lima: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start ล้มเหลว: %@\nบันทึกของเครื่องเสมือนเอง: %@", + "Machine %@ is running.": + "เครื่องเสมือน %@ กำลังทำงาน", + "Machine %@ was already running.": + "เครื่องเสมือน %@ ทำงานอยู่แล้ว", + "Machine: %@ (%@)": + "เครื่องเสมือน: %@ (%@)", + "Machine: %@": + "เครื่องเสมือน: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "เครื่องเสมือน: ยังไม่ได้สร้าง - เรียกใช้: cloudmachine-agent vm-setup", + "no answer within the time limit": + "ไม่มีคำตอบภายในเวลาที่กำหนด", + "No image %@ in the machine.": + "ไม่มีอิมเมจ %@ ในเครื่องเสมือน", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "ยังไม่มีอิมเมจในเครื่องเสมือน - ชี้ Time Machine ไปที่แชร์และให้สร้างอิมเมจก่อน", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "ไม่มีการตั้งค่า rclone ที่ %@ - เชื่อมต่อ Google Drive ก่อน (configure-remote)", + "no SMB destination": + "ไม่มีปลายทาง SMB", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "ตรวจสอบบัฟเฟอร์อัปโหลดของเครื่องเสมือนหนึ่งครั้ง: หยุด Time Machine ชั่วคราวเมื่อเต็ม และเริ่มต่อสิ่งที่หยุดไว้", + "Packing the converted image failed: %@": + "แพ็กอิมเมจที่แปลงแล้วไม่สำเร็จ: %@", + "Packing the image failed: %@": + "แพ็กอิมเมจไม่สำเร็จ: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "ไม่มีคำตอบจากเครื่องเสมือน (rclone rc) - ตัวป้องกันจะไม่ทำอะไร", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "พิมพ์เฉพาะสิ่งที่ตัวป้องกันจะตัดสินใจ - สำหรับทดลองเกณฑ์บนเครื่องเสมือนที่ใช้แล้วทิ้ง", + "Pause above this many GiB in the buffer.": + "หยุดชั่วคราวเมื่อบัฟเฟอร์เกิน GiB ตามจำนวนนี้", + "Pause when the machine has less free than this, in GiB.": + "หยุดชั่วคราวเมื่อเครื่องเสมือนมีพื้นที่ว่างน้อยกว่านี้ เป็น GiB", + "Point Time Machine at the machine (once, needs an administrator password):": + "ชี้ Time Machine ไปที่เครื่องเสมือน (ครั้งเดียว ต้องใช้รหัสผ่านผู้ดูแลระบบ):", + "punchfs files: %@ open, limit %@": + "ไฟล์ punchfs: เปิดอยู่ %@ ขีดจำกัด %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "มีการตั้งค่า rclone ในเครื่องเสมือนอยู่แล้ว - เก็บไว้ (--replace-rclone-config จะแทนที่)", + "rclone configuration copied into the machine.": + "คัดลอกการตั้งค่า rclone เข้าเครื่องเสมือนแล้ว", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm หรือ punchfs ไม่ได้ทำงานในเครื่องเสมือน - ดู cloudmachine-agent vm-status", + "Resume below this many GiB (only a backup the guard paused).": + "เริ่มต่อเมื่อต่ำกว่า GiB ตามจำนวนนี้ (เฉพาะการสำรองข้อมูลที่ตัวป้องกันหยุดไว้)", + "Service %@: %@": + "บริการ %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "มีหลายอิมเมจในเครื่องเสมือน (%@) - เลือกหนึ่งอิมเมจด้วย --bundle", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "แสดงเครื่องเสมือน: ที่อยู่ บริการ บัฟเฟอร์อัปโหลด พื้นที่ว่าง และปลายทาง Time Machine", + "SMB password stored in %@ (mode 600).": + "รหัสผ่าน SMB เก็บไว้ใน %@ (โหมด 600)", + "The converted image does not have %@-byte bands.": + "อิมเมจที่แปลงแล้วไม่มีแบนด์ขนาด %@ ไบต์", + "The converted image has no APFS partition.": + "อิมเมจที่แปลงแล้วไม่มีพาร์ทิชัน APFS", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "อิมเมจใช้พื้นที่ %@ MB แล้ว - คำสั่งนี้แปลงเฉพาะอิมเมจใหม่ที่ว่างเปล่า (ต่ำกว่า %@ MB)", + "The image is encrypted - converting encrypted images is not supported.": + "อิมเมจถูกเข้ารหัส - ไม่รองรับการแปลงอิมเมจที่เข้ารหัส", + "The image was not changed; smbd started again.": + "อิมเมจไม่ถูกเปลี่ยนแปลง; smbd เริ่มทำงานอีกครั้ง", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "เครื่องเสมือนไม่ตอบสนอง - กำลังทำงานอยู่หรือไม่? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "เครื่องเสมือนไม่มีที่อยู่บนเครือข่าย vzNAT", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "บริการในเครื่องเสมือนไม่เริ่มทำงาน - ตรวจสอบ: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine กำลังสำรองข้อมูล - หยุดก่อน: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: ไม่ได้ชี้ไปที่เครื่องเสมือน (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil ไม่ตอบสนอง", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil ไม่ตอบสนอง - ไม่แตะต้องอิมเมจขณะที่ไม่ทราบสถานะ", + "unknown": + "ไม่ทราบ", + "Unpacking the image failed: %@": + "แตกอิมเมจไม่สำเร็จ: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "ยังต้องอัปโหลด: %@ GiB ใน %@ แบนด์ กำลังอัปโหลด %@ (แคชบนดิสก์ %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "ยกเว้น %@ (เครื่องเสมือนและบัฟเฟอร์อัปโหลด) จาก Time Machine แล้ว", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "คำเตือน: ยกเว้น %@ จาก Time Machine ไม่ได้ - เรียกใช้: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "บัฟเฟอร์อัปโหลด: ไม่มีคำตอบจาก rclone (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "เมื่อ Time Machine สร้างอิมเมจเปล่าแล้ว ให้หยุดการสำรองข้อมูล (tmutil stopbackup) แล้วเรียกใช้: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "ยังไม่ได้ส่ง %@ GiB ว่าง %@ GiB (หยุดชั่วคราวเมื่อยังไม่ได้ส่งเกิน %@ GiB หรือว่างต่ำกว่า %@ GiB เริ่มต่อเมื่อต่ำกว่า %@ GiB)", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "อัปโหลด: ขีดจำกัดรายวันของ Google ปฏิเสธการอัปโหลดเมื่อ %@ ที่แล้ว - rclone ลองใหม่ทุก 5 นาทีและจะทำต่อเอง", + "no": + "ไม่", + "running": + "กำลังทำงาน", + "stopped": + "หยุดอยู่", + "yes": + "ใช่", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nเทมเพลตก่อนหน้าอยู่ใน %@ - คัดลอกกลับไปทับ lima.yaml แล้วเรียกใช้ limactl start %@", + "Could not read this app's machine template (limactl template copy).": + "อ่านเทมเพลตเครื่องเสมือนของแอปนี้ไม่ได้ (limactl template copy)", + "Could not replace %@: %@": + "แทนที่ %@ ไม่ได้: %@", + "Machine %@ already runs this app's template.": + "เครื่องเสมือน %@ ใช้เทมเพลตของแอปนี้อยู่แล้ว", + "Machine %@ now runs this app's template; the previous one is in %@.": + "เครื่องเสมือน %@ ใช้เทมเพลตของแอปนี้แล้ว; เทมเพลตก่อนหน้าอยู่ใน %@", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "ย้ายเครื่องเสมือนไปใช้เทมเพลตของแอปนี้ (รีสตาร์ทสองครั้ง ไม่ทำระหว่างการสำรองข้อมูล)", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "ไม่มีเครื่องเสมือน %@ - สร้างด้วย: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "เทมเพลต: เก่ากว่าของแอปนี้ - เรียกใช้: cloudmachine-agent vm-update", + "Template: not compared": + "เทมเพลต: ไม่ได้เปรียบเทียบ", + "Template: this app's": + "เทมเพลต: ตรงกับของแอปนี้", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "เครื่องเสมือนไม่มี %@ - เรียกใช้ cloudmachine-agent vm-setup ก่อน", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "เครื่องเสมือนรีสตาร์ทแล้ว แต่บริการไม่ได้ทำงานครบทุกตัว - ตรวจสอบ: cloudmachine-agent vm-status เทมเพลตก่อนหน้าอยู่ใน %@", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "เทมเพลตเปลี่ยนแปลงตัวเครื่องเสมือนเอง (%@) - ต้องสร้างเครื่องเสมือนใหม่ ไม่ใช่การอัปเดต", + "The upload to Google Drive hangs": + "การอัปโหลดไปที่ Google Drive ค้าง", + "Time Machine is backing up - try again when it has finished.": + "Time Machine กำลังสำรองข้อมูล - ลองอีกครั้งเมื่อเสร็จแล้ว", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "อัปโหลด: ค้าง - มีแบนด์กำลังดำเนินการ ไม่มีการอัปโหลดเป็นเวลา %@ (เครือข่าย?); ดู /var/log/rclone-tm.log ในเครื่องเสมือน", + "limactl stop failed - nothing was changed.": + "limactl stop ล้มเหลว - ไม่ได้เปลี่ยนแปลงอะไร", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone มีแบนด์กำลังดำเนินการ แต่ไม่มีการอัปโหลดเป็นเวลา %@ - มักเกิดจากการเชื่อมต่อเครือข่ายขาด ซึ่ง rclone ไม่รายงานเป็นข้อผิดพลาด ข้อมูลสำรองตั้งแต่นั้นมีอยู่ในบัฟเฟอร์ของเครื่องเสมือนเท่านั้น เมื่อเครือข่ายกลับมา การอัปโหลดจะทำต่อเอง (เมื่อ 28.10.2026 ภายใน 80 s) หากไม่ทำต่อ การรีสตาร์ทเครื่องเสมือน (prepare-shutdown, limactl start) จะตัดการเชื่อมต่อที่ตายแล้ว", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil ไม่ตอบสนอง - ไม่รีสตาร์ทเครื่องเสมือนขณะที่ไม่ทราบสถานะ", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+tr.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+tr.swift new file mode 100644 index 0000000..20b16c5 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+tr.swift @@ -0,0 +1,951 @@ +// Turkish translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let tr: [String: String] = [ + "Space limit: %@": + "Alan sınırı: %@", + " Time Machine quota not set to match - run: %@": + " Time Machine kotası eşleşmiyor - şunu çalıştırın: %@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "Bu Mac'in Google Drive'da ne kadar yer kullanabileceğini ayarlar ve Time Machine kotası komutunu yazdırır.", + "Limit in GB.": + "GB cinsinden sınır.", + "Limit for this Mac: %@ GB.": + "Bu Mac için sınır: %@ GB.", + "Now set the Time Machine quota (needs an administrator password):": + "Şimdi Time Machine kotasını ayarlayın (yönetici parolası gerekir):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine - doğrulama, Google Drive kurulumu ve yükleme. launchd tarafından zamanlanmış olarak veya Terminal'den elle çağrılır.", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "rclone aracılığıyla Google Drive'a bağlanır (tarayıcıda OAuth) ve bu makinenin klasörünü oluşturur.", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "Mevcut remote'un üzerine yaz. RİSKLİ: belirteci ve izinleri değiştirir.", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "build/CloudMachine.app dosyasını build/CloudMachine-.dmg olarak paketler.", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "HATA: %@ yok - önce 'cloudmachine-agent build-app' komutunu çalıştırın", + "==> Preparing the staging folder": + "==> Staging klasörü hazırlanıyor", + "==> Creating %@": + "==> %@ oluşturuluyor", + "ERROR: hdiutil exited with code %@.": + "HATA: hdiutil %@ koduyla sonlandı.", + "==> Done: %@": + "==> Bitti: %@", + "On first launch (the app is not signed with an Apple Developer account):": + "İlk açılışta (uygulama bir Apple Developer hesabıyla imzalanmadı):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. %@ dosyasını açın ve CloudMachine.app'i Uygulamalar'a sürükleyin.", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. Finder'da CloudMachine.app üzerinde SAĞ tıklayın -> Aç -> Aç\n (düz çift tıklama Gatekeeper'ın \"kimliği belirsiz geliştirici\" engelini gösterir).", + "3. Later launches work normally, with a double-click.": + "3. Sonraki açılışlar çift tıklamayla normal şekilde çalışır.", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "CloudMachine.app'i derler (Release) - Contents/MacOS/ içinde GUI + cloudmachine-agent, ayrıca Resources olarak launchd/, vm/ ve config/.", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "Apple Silicon ve Intel için ikili dosyalar birlikte (CI sürümü böyle derler; yerelde gereksiz).", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> CloudMachineApp + cloudmachine-agent derleniyor (release) - sürüm %@ (%@)", + "ERROR: swift build exited with code %@.": + "HATA: swift build %@ koduyla sonlandı.", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "HATA: swift build --show-bin-path ikili dosyaların klasörünü bildirmedi.", + "ERROR: no built binary found at %@": + "HATA: derlenmiş ikili dosya bulunamadı: %@", + "==> Assembling the .app bundle in %@": + "==> .app paketi %@ içinde birleştiriliyor", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> UYARI: KİRLİ bir ağaçtan derliyorsunuz - sürüm bir commit'i göstermeyecek.", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "HATA: Resources/AppIcon.icns yok - oluşturun: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> Yerel '%@' sertifikasıyla imzalanıyor (Tam Disk Erişimi sonraki yeniden derlemelerde korunur)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> Ad-hoc imzalanıyor (Apple Developer hesabı yok) - TCC izinlerinin sonraki yeniden derlemelerde korunması için bir kez 'cloudmachine-agent setup-signing-cert' çalıştırın", + "ERROR: codesign exited with code %@.": + "HATA: codesign %@ koduyla sonlandı.", + "Next step: %@": + "Sonraki adım: %@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "Tam Disk Erişimi'nin uygulamanın sonraki yeniden derlemelerinde korunması için yerel, kendinden imzalı bir sertifika oluşturur.", + "Certificate '%@' already exists in %@, nothing to do.": + "'%@' sertifikası zaten %@ içinde var, yapılacak bir şey yok.", + "==> Generating the key and self-signed certificate '%@'...": + "==> Anahtar ve kendinden imzalı '%@' sertifikası oluşturuluyor...", + "ERROR: openssl req exited with code %@.": + "HATA: openssl req %@ koduyla sonlandı.", + "ERROR: openssl pkcs12 exited with code %@.": + "HATA: openssl pkcs12 %@ koduyla sonlandı.", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> Sertifika %@ içine aktarılıyor (/usr/bin/codesign önceden yetkilendiriliyor, böylece her seferinde anahtar zinciri parolası sorulmaz)...", + "ERROR: security import exited with code %@.": + "HATA: security import %@ koduyla sonlandı.", + "==> Trusting the certificate ONLY for code signing...": + "==> Sertifikaya YALNIZCA kod imzalama için güveniliyor...", + "ERROR: security add-trusted-cert exited with code %@.": + "HATA: security add-trusted-cert %@ koduyla sonlandı.", + "Done. Certificate '%@' is now available to codesign.": + "Bitti. '%@' sertifikası artık codesign için kullanılabilir.", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "Sonraki 'cloudmachine-agent build-app' ad-hoc imza yerine bunu otomatik olarak kullanır.", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "BU TEK yeniden derlemeden sonra Tam Disk Erişimi'ni son bir kez verin - sonraki\nyeniden derlemeler, aynı sertifikayla imzaladığınız sürece onu sıfırlamaz.", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "Saatlik döngünün HÂLÂ çalışıp çalışmadığını (son BAŞARILI yedeğin tarihi) denetler ve hataları bildirir.", + "After this many hours without a successful backup we consider the cycle broken.": + "Bu kadar saat başarılı yedek olmazsa döngü bozuk sayılır.", + "Only print the state, without a system notification.": + "Yalnızca durumu yazdır, sistem bildirimi gösterme.", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "Farklı bir Time Machine tercihleri dosyası - gözcüyü bilinen bir örnek üzerinde denemek için.", + "Last successful backup: %@": + "Son başarılı yedek: %@", + "Last successful backup: NONE": + "Son başarılı yedek: YOK", + "Last attempt: %@": + "Son deneme: %@", + "WAITING (system startup): %@": + "BEKLİYOR (sistem açılışı): %@", + "Backup cycle: OK": + "Yedekleme döngüsü: Tamam", + "FAILURE: %@": + "HATA: %@", + " %@": + " %@", + "Check the state: %@": + "Durumu denetle: %@", + "Preparing for restart": + "Yeniden başlatmaya hazırlanıyor", + "Prepare for restart": + "Yeniden başlatmaya hazırla", + "Prepare": + "Hazırla", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> UYARI: git rev-list başarısız oldu (%@) - derleme numarası olarak tarih kullanılıyor.", + "Agents: %@": + "Aracılar: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "BAŞLAYAMIYOR: %@ - yeniden yüklemek için CloudMachine'i açın veya backup-health çalıştırın", + "Reloaded agents that could not start: %@": + "Başlayamayan aracılar yeniden yüklendi: %@", + "Drive folder: %@": + "Drive klasörü: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "Bu Mac'in Google Drive'daki klasörünün adı (varsayılan: bilgisayar adından türetilir). Bir kez ayarlanır; sonradan değiştirilemez.", + "Backup watchdog: %@": + "Yedek gözcüsü: %@", + "Prints the version, the build number and the commit this binary was built from.": + "Sürümü, derleme numarasını ve bu ikili dosyanın derlendiği commit'i yazdırır.", + "Only one line, without a description.": + "Yalnızca tek satır, açıklama olmadan.", + "Build from the working tree (outside a bundle) - no version data.": + "Çalışma ağacından derleme (paket dışında) - sürüm bilgisi yok.", + "Version: %@": + "Sürüm: %@", + "Build: %@": + "Derleme: %@", + "Commit: %@": + "Commit: %@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "UYARI: KİRLİ bir ağaçtan derlendi - ikili dosyada hiçbir commit'te\n olmayan kod var. Commit numarası gerçekte çalışanı\n TANIMLAMAZ.", + "Saving the space limit": + "Alan sınırı kaydediliyor", + "Measuring usage on Google Drive": + "Google Drive'daki kullanım ölçülüyor", + "Google Drive did not answer - try again later.": + "Google Drive yanıt vermedi - daha sonra tekrar deneyin.", + "Measured.": + "Ölçüldü.", + "Space limit for this Mac": + "Bu Mac için alan sınırı", + "Used on Google Drive": + "Google Drive'da kullanılan", + "Measured %@. The watchdog measures again every few hours.": + "%@ ölçüldü. Gözcü birkaç saatte bir yeniden ölçer.", + "Limit (GB)": + "Sınır (GB)", + "Save": + "Kaydet", + "Measure now": + "Şimdi ölç", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Time Machine kotası: %@ GB (sınırın %%70'i - Drive'daki kopya, içindeki yedekten yaklaşık üçte bir daha büyüktür). Time Machine bu kotaya sığmak için en eski yedekleri siler.", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "Time Machine kotasını ayarlayın: bunu Terminal'de çalıştırın (sudo gerekir)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "Google Drive'ı bağlayın: bunu Terminal'de çalıştırın ve tarayıcıda onaylayın", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "CloudMachine'e Tam Disk Erişimi verin; böylece yedeklerin tamamlanıp tamamlanmadığını anlayabilir", + "Folder on Google Drive": + "Google Drive'daki klasör", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "Her Mac için bir klasör. Bir kez ayarlanır - bağlandıktan sonra değiştirilemez.", + "Use lowercase letters, digits and dashes.": + "Küçük harf, rakam ve tire kullanın.", + "Install rclone": + "rclone'u yükle", + "Open System Settings": + "Sistem Ayarları'nı aç", + "Install agents": + "Aracıları yükle", + "not checked": + "denetlenmedi", + "none at all": + "hiç yok", + "%@ ago": + "%@ önce", + "Missing: %@": + "Eksik: %@", + "Google Drive not connected": + "Google Drive bağlı değil", + "Time Machine does not point to CloudMachine": + "Time Machine, CloudMachine'i göstermiyor", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "Time Machine'in CloudMachine'i gösterip göstermediği BİLİNMİYOR - tmutil yanıt vermedi", + "Backup in progress": + "Yedekleme sürüyor", + "Unknown when the last backup was made": + "Son yedeğin ne zaman alındığı bilinmiyor", + "There is no completed backup at all": + "Hiç tamamlanmış yedek yok", + "No completed backup for %@": + "%@ süredir tamamlanmış yedek yok", + "Ready": + "Hazır", + "Not saved: %@": + "Kaydedilmedi: %@", + "Installing rclone": + "rclone yükleniyor", + "Installing launchd agents": + "launchd aracıları yükleniyor", + "Starting backup": + "Yedekleme başlatılıyor", + "Backup started.": + "Yedekleme başlatıldı.", + "Could not start the backup.": + "Yedekleme başlatılamadı.", + "Stopping backup": + "Yedekleme durduruluyor", + "Backup stopped.": + "Yedekleme durduruldu.", + "Could not stop the backup.": + "Yedekleme durdurulamadı.", + "Could not prepare the AppleScript.": + "AppleScript hazırlanamadı.", + "Unknown authorization error.": + "Bilinmeyen yetkilendirme hatası.", + "Waiting to upload": + "Yüklenmeyi bekliyor", + "%@ files": + "%@ dosya", + "nothing": + "hiçbir şey", + "Back up now": + "Şimdi yedekle", + "Stop backup": + "Yedeklemeyi durdur", + "Open CloudMachine": + "CloudMachine'i aç", + "Quit": + "Çık", + "Healthy": + "Sağlıklı", + "Attention": + "Dikkat", + "Refreshed %@": + "Yenilendi %@", + "System Status": + "Sistem durumu", + "Action needed": + "İşlem gerekli", + "not measured": + "ölçülmedi", + "rclone did not answer": + "rclone yanıt vermedi", + "Backup in Progress": + "Yedekleme sürüyor", + "Files processed": + "İşlenen dosyalar", + "Write speed": + "Yazma hızı", + "Operation phase": + "İşlem aşaması", + "Required Setup Steps": + "Gerekli kurulum adımları", + "Copy": + "Kopyala", + "Last completed backup": + "Son tamamlanan yedek", + "Last backup watchdog run": + "Yedek gözcüsünün son çalışması", + "not read": + "okunmadı", + "Everything uploaded": + "Her şey yüklendi", + "File upload errors": + "Dosya yükleme hataları", + "Google Drive Credentials (OAuth 2.0)": + "Google Drive kimlik bilgileri (OAuth 2.0)", + "Keychain OK": + "Anahtar Zinciri tamam", + "No custom keys": + "Özel anahtar yok", + "Paste client_id...": + "client_id yapıştırın...", + "Paste client_secret...": + "client_secret yapıştırın...", + "Save securely in the Keychain": + "Anahtar Zinciri'ne güvenli şekilde kaydet", + "Refresh": + "Yenile", + "Overview": + "Genel bakış", + "Backups": + "Yedekler", + "Storage": + "Alan", + "Settings": + "Ayarlar", + "Current status: %@": + "Geçerli durum: %@", + "Does not point to CloudMachine": + "CloudMachine'i göstermiyor", + "tmutil did not answer": + "tmutil yanıt vermedi", + "Backing up: %@ of %@": + "Yedekleniyor: %@ / %@", + "%@ of %@": + "%@ / %@", + "Copied": + "Kopyalandı", + "No backup is running": + "Çalışan yedekleme yok", + "Time Machine starts the next one on its own schedule.": + "Time Machine bir sonrakini kendi zamanlamasına göre başlatır.", + "Backup cycle": + "Yedekleme döngüsü", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB, %@ bant, %@ yükleniyor", + "%@ bands": + "%@ bant", + "%@ fragments abandoned - only in the machine": + "%@ parça bırakıldı - yalnızca makinede", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 Mac'te yanıt veriyor: Lima, makinenin parolasız rclone uzaktan denetimini yönlendiriyor. Tarayıcıda açık herhangi bir web sayfası ona komut gönderebilir - Google Drive'daki yedeği silmek dahil. vm/cmsmb.yaml dosyasındaki portForwards kuralını makineye ekleyin ve yeniden başlatın (bkz. vm/README.md).", + "A service in the CloudMachine machine is not running": + "CloudMachine makinesindeki bir hizmet çalışmıyor", + "Address": + "Adres", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "Aracı kurulumu EKSİK - %@ / %@ kurulamadı:\n%@\n%@\nEksik her aracı, sessizce çalışmayı bırakmış bir işlevdir (vm-guard makinenin arabelleğini izler, backup-health hataları bildirir). Nedeni giderin ve kurulumu yineleyin.", + "All running": + "Tümü çalışıyor", + "Also install the launchd agents (same as install-launchd).": + "launchd aracılarını da kur (install-launchd ile aynı).", + "At most this many minutes of waiting for the upload.": + "Yüklemeyi en fazla bu kadar dakika bekle.", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "Sınırda her yeni bant EMFILE hatasıyla başarısız olur ve yedekleme durur. Denetleyin: cloudmachine-agent vm-status", + "Cache on the machine's disk": + "Makinenin diskindeki önbellek", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "Google Drive'a bağlanıldı ancak '%@' klasörü oluşturulamadı - o olmadan makinenin yedeği saklayacak yeri yok. Hesap izinlerini denetleyin ve yeniden deneyin.", + "Convert the image": + "Görüntüyü dönüştür", + "Converting the image to 32 MB bands": + "Görüntü 32 MB'lık bantlara dönüştürülüyor", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "Yedeğin Google Drive'da olup olmadığı (%@) mevcut bağlantıyla denetlenemedi; bu yüzden '%@' remote'u DEĞİŞTİRİLMEDİ: bu yanıt olmadan yeni oturum açma onunla karşılaştırılamaz.", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "Resmî rclone ikili dosyasını ~/.cloudmachine/bin içine indirir (Google oturum açma ve makinenin rclone.conf dosyası).", + "Free in the machine": + "Makinede boş", + "Free in the machine: %@": + "Makinede boş: %@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "launchd aracılarını oluşturur ve kurar (uygulama, yedek gözcüsü, makine başlatma, makine bekçisi).", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "CloudMachine makinesini çalıştıran Lima'yı kurun: bunu Terminal'de çalıştırın", + "Install rclone (signs in to Google Drive for the machine)": + "rclone'u kurun (makine için Google Drive'da oturum açar)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "Arka plan aracılarını kurun (makine başlatma, arabellek bekçisi, yedek gözcüsü)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "rclone'u Homebrew ile kurar - CloudMachine'in kendisi install-rclone ile gelen sürümü kullanır.", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "Yedek görüntüsünün Info.plist, token ve mapped/ öğeleri yalnızca makinenin diskinde bulunur; onlar olmadan %@ içindeki bantlar geri yüklenemez. Kopya (tm-meta-sync, 15 dakikada bir) %@ konumuna gider. Denetleyin: cloudmachine-agent vm-status, sonra makinede: journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima makinenin çalıştığını söylüyor, ancak içindeki bir komut dönmedi. Bu olmadan Samba, rclone veya yükleme hakkında hiçbir şey bilinmiyor. Denetleyin: cloudmachine-agent vm-status", + "Machine": + "Makine", + "Machine %@": + "Makine %@", + "Machine & Upload Status": + "Makine ve yükleme durumu", + "Machine buffer": + "Makine arabelleği", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "Hiçbir Time Machine hedefi makinenin paylaşımı (smb://tm@/CloudMachine) değil - yedekler oraya alınmıyor. Komutu şu yazdırır: cloudmachine-agent vm-setup", + "Not running: %@": + "Çalışmıyor: %@", + "Not set up": + "Kurulmadı", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "Bittiğinde rclone yüklemeyi durdurur, makinenin arabelleği dolar ve yedekler alınmaz olur. Saatlik döngü başına ~600 MB artışla bu yaklaşık %@ gün eder.", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "Ya da rclone.conf yok: bu Mac'te CloudMachine makinesi zaten kurulmuş, bu yüzden körü körüne yeniden bağlanmaz. Dosyayı bir yedekten geri yükleyin (makine kendi kopyasını %@ içinde tutar). Yine de bağlanmak için `%@ config file` komutunun yazdırdığı yolda boş bir dosya oluşturun ve yeniden çalıştırın - mevcut klasör korunur.", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "Time Machine'i makineye yönlendirin: bunu Terminal'de çalıştırın (sudo gerekir; Kopyala parolayı da içerir)", + "Points to the machine": + "Makineyi gösteriyor", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "Yeniden başlatmaya hazırlar: yedeklemeyi durdurur, yükleme için bir süre bekler, sonra makineyi düzgünce durdurur.", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "Time Machine hedefinin okunması %@ s içinde dönmedi. Hedefi takıldığında tmutil böyle davranır.", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "'%@' remote'u DEĞİŞTİRİLMEDİ. Yeni oturum açma, yalnızca kendi client_id'si altında oluşturulan dosyaları gören 'drive.file' kapsamını alır. Mevcut yedek büyük olasılıkla geçerli bağlantıyla oluşturuldu ve ona görünmez olurdu. Herhangi bir şey yazılmadan önce yeni belirteç mevcut yedekle denetlenir ve onu göremezse değiştirme iptal edilir. Makine, yapılandırmanın kendi kopyasını vm-setup --replace-rclone-config komutuna kadar tutar. Devam etmek için --replace-existing --accept-scope-change ile yeniden çalıştırın.", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "Uzaktan denetim: Mac'te 127.0.0.1:5572 adresinde AÇIK - herhangi bir web sayfası rclone komutları gönderebilir; bkz. vm/README.md (portForwards)", + "Running": + "Çalışıyor", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "Makinedeki Samba, rclone veya punchfs etkin değil; bu yüzden Time Machine'in yazacak yeri yok ya da bantlar Google Drive'a ulaşmıyor. Denetleyin: cloudmachine-agent vm-status", + "Service %@": + "Hizmet %@", + "Services": + "Hizmetler", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "CloudMachine makinesini kurun (ilk seferde Ubuntu indirilir - birkaç dakika)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "CloudMachine makinesini yeniden kurun; böylece Time Machine komutunu yazdırır", + "Set up the machine": + "Makineyi kur", + "Setting up the CloudMachine machine": + "CloudMachine makinesi kuruluyor", + "Start the CloudMachine machine": + "CloudMachine makinesini başlatın", + "Start the machine": + "Makineyi başlat", + "Starting the CloudMachine machine": + "CloudMachine makinesi başlatılıyor", + "Still to upload: %@ GiB": + "Yüklenecek kalan: %@ GiB", + "Stopping the Time Machine backup...": + "Time Machine yedeklemesi durduruluyor...", + "Stopping the machine %@...": + "%@ makinesi durduruluyor...", + "The CloudMachine machine does not answer": + "CloudMachine makinesi yanıt vermiyor", + "The CloudMachine machine is not running": + "CloudMachine makinesi çalışmıyor", + "The CloudMachine machine is not set up yet": + "CloudMachine makinesi henüz kurulmadı", + "The CloudMachine machine is stopped": + "CloudMachine makinesi durduruldu", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "Yedekleme durdurulur, yükleme için 30 dakikaya kadar süre tanınır, sonra makine düzgünce kapanır. Bir sonraki oturum açmada yeniden başlar.", + "The machine %@ is not running - nothing to prepare.": + "%@ makinesi çalışmıyor - hazırlanacak bir şey yok.", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "Makine durduruldu ve her şey Google Drive'a ulaştı. Mac yeniden başlatılabilir; makine oturum açıldığında yeniden başlar.", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Makine durduruldu. %@ GiB henüz Google Drive'a ulaşmadı - makinenin arabelleğinde tutuluyor ve bir sonraki başlatmadan sonra yüklenecek. Mac yeniden başlatılabilir.", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "Makine durduruldu. rclone yüklenecek ne kadar kaldığını bildirmedi; yüklenmeyenler makinenin arabelleğinde tutulur ve bir sonraki başlatmadan sonra yüklenir. Mac yeniden başlatılabilir.", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "Makinenin diski bu diskteki bir dosyadır ve yükleme arabelleği doldukça büyür. Boş yer kalmazsa makine arabelleği yazamaz ve Time Machine'in yerel anlık görüntülerinin de gidecek yeri olmaz.", + "The image's metadata has never been copied to Drive": + "Yedek görüntüsünün üst verileri Drive'a hiç kopyalanmadı", + "The image's metadata was last copied to Drive %@ ago": + "Yedek görüntüsünün üst verileri Drive'a en son %@ önce kopyalandı", + "The machine's disk is running out of space (%@ GB)": + "Makinenin diskinde yer azalıyor (%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "Yeni oturum açma mevcut yedeği (%@) GÖRMÜYOR; bu yüzden '%@' remote'u DEĞİŞTİRİLMEDİ ve rclone.conf aynı kaldı. Mevcut bağlantıyı koruyun veya yedeği oluşturan kimlik bilgisiyle (client_id) oturum açın.", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "Yükleme arabelleği bu diskte bulunur. Bekçi, dolmadan önce Time Machine'i duraklatır; yükleme yetişmezse yedekler duraklatılmış kalır.", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "Bu bantlar yalnızca makinenin arabelleğinde var. Google Drive'daki yedek EKSİK ve açılmayabilir.", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine makineye yedekler; bu yüzden makine olmadan yedek alınmaz. Başlatın: limactl start %@ (veya uygulamadaki düğmeyle).", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine yedeklemeyi 2 dakika içinde durdurmadı (ya da tmutil yanıt vermedi) - makine DURDURULMADI. Biraz sonra yeniden deneyin.", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine görüntüsünü oluşturdu: yedeklemeyi durdurun, sonra görüntüyü 32 MB'lık bantlara dönüştürün", + "To upload": + "Yüklenecek", + "Unknown whether the CloudMachine machine is running": + "CloudMachine makinesinin çalışıp çalışmadığı bilinmiyor", + "Waiting for the upload to Google Drive (at most %@ min)...": + "Google Drive'a yükleme bekleniyor (en fazla %@ dk)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "--replace-existing ile: yeni oturum açmanın ('drive.file' kapsamı) mevcut yedeği görmeyebileceğini onaylar. Yeni belirteç yine de önce yedekle denetlenir.", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "O olmadan Drive'a bir şey ulaşıp ulaşmadığını denetlemenin yolu yok - makinenin bekçisi o zaman kördür.", + "limactl did not answer": + "limactl yanıt vermedi", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl yanıt vermedi (veya kurulu değil). Bu, makinenin kapalı olduğu anlamına gelmez - kimsenin denetlemediği anlamına gelir.", + "limactl start failed: %@": + "limactl start başarısız oldu: %@", + "limactl stop failed: %@": + "limactl stop başarısız oldu: %@", + "punchfs is close to its open-file limit": + "punchfs açık dosya sınırına yaklaştı", + "punchfs open files": + "punchfs açık dosyaları", + "rclone's remote control is open on this Mac": + "rclone uzaktan denetimi bu Mac'te açık", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') hata döndürdü; bu yüzden makinenin diskinin bu Mac'te hâlâ büyüyüp büyüyemeyeceği bilinmiyor.", + "Google Drive's daily upload limit stops the upload": + "Google Drive'ın günlük yükleme sınırı yüklemeyi durdurdu", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google en son %@ önce bir yüklemeyi reddetti (günde 750 GB). O zamandan beri alınan yedekler yalnızca bu Mac'teki makinenin arabelleğinde. rclone 5 dakikada bir yeniden dener ve sınır geçince kendiliğinden devam eder; %@ GiB'den fazlası bekliyorsa bekçi Time Machine'i duraklatır.", + "Usage on Google Drive is not being measured": + "Google Drive'daki kullanım ölçülmüyor", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "Son ölçüm (%@ GB) %@ tarihli, %@ önce - rclone size o zamandan beri yanıt vermiyor. Yanıt verene kadar %@ GB sınırını kimse izlemiyor: %%90 ve %%100 uyarıları sessiz kalır. vm-status'a bakın veya penceredeki Şimdi ölç'e basın.", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size bir kez bile yanıt vermedi. Yanıt verene kadar %@ GB sınırını kimse izlemiyor: %%90 ve %%100 uyarıları sessiz kalır. vm-status'a bakın veya penceredeki Şimdi ölç'e basın.", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "Anahtar Zinciri'ne kaydedildi. Google Drive'ı bağlarken (configure-remote) bunlar kullanılacak.", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "Anahtar Zinciri'ne kaydedildi. Mevcut Google Drive bağlantısı eski client_id'sini korur ve bu Mac'te öyle kalmalı: yeni anahtarlarla ('drive.file' kapsamı) yapılan bağlantı, eskisinin oluşturduğu yedeği göremez. Bağlantıyı burada değiştirmeyin; yeni anahtarlar henüz bağlı olmayan bir Mac içindir.", + "it is not there for the new token": + "yeni belirteç için orada değil", + "Cancel": + "İptal", + "ACTION NEEDED": + "İŞLEM GEREKLİ", + "WILL PASS BY ITSELF — DO NOTHING": + "KENDİLİĞİNDEN GEÇECEK — BİR ŞEY YAPMAYIN", + "UNKNOWN — CHECK AGAIN SHORTLY": + "BİLİNMİYOR — BİRAZ SONRA YENİDEN DENETLEYİN", + "ALL GOOD": + "HER ŞEY YOLUNDA", + "Upload is not working": + "Yükleme çalışmıyor", + "Upload stopped — no space left on Google Drive": + "Yükleme durdu — Google Drive'da yer kalmadı", + "%@ backup fragments not uploaded": + "%@ yedek parçası yüklenmedi", + "Upload cannot keep up with writes": + "Yükleme yazmaya yetişemiyor", + "Upload paused — Google daily limit": + "Yükleme duraklatıldı — Google günlük sınırı", + "Uploading to Google Drive — %@ queued": + "Google Drive'a yükleniyor — %@ sırada", + "Everything uploaded to Google Drive": + "Her şey Google Drive'a yüklendi", + "Unknown what is waiting in the queue": + "Sırada ne beklediği bilinmiyor", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "Google Drive bağlantısı yok; bu yüzden yedekler yalnızca bu Mac'te alınıyor. Bu birkaç dakika içinde kendiliğinden geçmezse ağı ve Drive bağlantısını denetleyin.", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Google Drive'da yer kalmadı. Bu kendiliğinden GEÇMEZ — Drive'da yer açmanız gerekir. O zamana kadar bu Mac'in diski dolmasın diye Time Machine duraklatıldı.", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ yedek parçası yüklenemedi ve rclone denemeyi bıraktı. Bu parçalar yalnızca bu Mac'te var, bu yüzden Drive'daki yedek eksik. Bunun denetlenmesi gerekiyor.", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine yüklemenin gidebildiğinden hızlı yazıyor ve arabellek doldu. Yedekleme, yükleme yetişene kadar duraklatılacak — bu bir arıza değil, diskin dolmasına karşı bir güvenlik önlemi.", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google günde 750 GB kabul eder ve bu sınır doldu. Yapılacak bir şey yok: sınır kendiliğinden, genellikle birkaç saat içinde yenilenir. Bu sırada Time Machine yedekleri normal alınır ve arabellekte bekler — Google yeniden kabul etmeye başlar başlamaz yüklenir.", + "%@ backup fragments are queued and on their way to Drive.": + "%@ yedek parçası sırada ve Drive'a gidiyor.", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "Sırada bekleyen yok — Google Drive'daki yedek eksiksiz.", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone sıra sorusuna yanıt vermedi; bu yüzden kaç yedeğin hâlâ yüklenmeyi beklediği bilinmiyor. Bu bir şeyin bozulduğu anlamına gelmez — yük altında yanıt gecikebilir. Yalnızca şu anda bunu kimsenin bilmediği anlamına gelir. Sürerse yedekleme döngüsü denetimi bunu bildirir.", + "unknown error": + "bilinmeyen hata", + "rclone lsf ended with an error": + "rclone lsf hatayla bitti", + "This Mac is close to its space limit on Google Drive": + "Bu Mac, Google Drive'daki alan sınırına yaklaşıyor", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "%@ / %@ GB kullanıldı. Time Machine kotaya sığmak için en eski yedekleri siler; kotanın ayarlandığını denetleyin (vm-status).", + "This Mac is over its space limit on Google Drive": + "Bu Mac, Google Drive'daki alan sınırını aştı", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "%@ / %@ GB kullanıldı. Time Machine kotasını ayarlayın (komut uygulama penceresinde veya vm-status'ta) ya da sınırı yükseltin.", + "not set": + "ayarlanmadı", + "%@ GB - usage not measured yet": + "%@ GB - kullanım henüz ölçülmedi", + "%@ of %@ GB used (%@%%)": + "%@ / %@ GB kullanıldı (%%%@)", + "The limit must be a whole number of GB above zero.": + "Sınır, sıfırdan büyük bir tam GB sayısı olmalıdır.", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "machines.json okunamıyor, bu yüzden üzerine yazılmadı. Önce onu düzeltin veya silin.", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' geçerli bir klasör adı değil: küçük harf, rakam ve tire kullanın.", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "Bu Mac zaten '%@' klasörüne yedekliyor. '%@' klasörüne geçmek yeni, boş bir yedek başlatır ve mevcut olanı sahipsiz bırakırdı; bu yüzden hiçbir şey değiştirilmedi.", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "Bu Mac'te zaten bir CloudMachine kurulumu var ve yedeği '%@' klasöründe. '%@' klasörüne geçmek onu sahipsiz bırakırdı; bu yüzden hiçbir şey değiştirilmedi.", + "Could not save the folder name to %@: %@": + "Klasör adı %@ konumuna kaydedilemedi: %@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "Homebrew kurulu değil. Elle kurun: https://brew.sh", + "Installing rclone failed: %@": + "rclone kurulumu başarısız oldu: %@", + "Installed rclone.": + "rclone kuruldu.", + "Own Google credentials: set.": + "Özel Google kimlik bilgileri: ayarlandı.", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "EKSİK: %@ yok - rclone yine de paylaşılan rclone client_id'sini kullanır.", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "Özel kimlik bilgisi yok - rclone, ortak olarak sınırlanan ve 2026'da kullanımdan kaldırılacak paylaşılan client_id'yi kullanır.", + "Empty value - not saving.": + "Boş değer - kaydedilmiyor.", + "Keychain refused: %@": + "Anahtar Zinciri reddetti: %@", + "DIRTY-TREE": + "KİRLİ-AĞAÇ", + "Cannot create the working directory: %@": + "Çalışma klasörü oluşturulamıyor: %@", + "Could not read the rclone version number.": + "rclone sürüm numarası okunamadı.", + "Could not download %@.": + "%@ indirilemedi.", + "No entry for %@ in SHA256SUMS.": + "SHA256SUMS içinde %@ için kayıt yok.", + "Could not compute the checksum.": + "Sağlama toplamı hesaplanamadı.", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "SHA256 sağlama toplamı eşleşmiyor - KURULMUYOR.\n beklenen: %@\n hesaplanan: %@", + "Could not unpack the archive.": + "Arşiv açılamadı.", + "Could not install the binary: %@": + "İkili dosya kurulamadı: %@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "rclone %@, %@ içine kuruldu (SHA256 sağlama toplamı eşleşiyor).", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ ayrılan sürede yanıt vermedi (işlem arka planda sahipsiz bırakıldı).", + "Cannot launch %@: %@": + "%@ başlatılamıyor: %@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "'%@' remote'u zaten var ve DOKUNULMADI.\nÜzerine yazmak belirteci ve izin kapsamını değiştirir; 'drive.file' kapsamlı bir kimlik bilgisi öncekinin oluşturduğu dosyaları görmez, bu yüzden mevcut yedeğe ulaşılamaz hâle gelir.\nGerçekten değiştirmek istiyorsanız önce ~/.config/rclone/rclone.conf dosyasını yedekleyin ve --replace-existing ile yeniden çalıştırın.", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "'%@' remote'unun zaten var olup olmadığı denetlenemedi (rclone listremotes yanıt vermedi veya hata verdi); bu yüzden hiçbir şey değiştirilmedi. Hatayı görmek için `%@ listremotes` çalıştırın ve yeniden deneyin.", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "Bu Mac'te zaten bir CloudMachine kurulumu olup olmadığı denetlenemedi (rclone yanıt vermedi); bu yüzden klasör seçilmedi. Birazdan yeniden deneyin.", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize başarısız oldu (%@). Bu ikili dosya yoksa şununla başlayın: cloudmachine-agent install-rclone.", + "Could not read the token from the output of rclone authorize.": + "rclone authorize çıktısından belirteç okunamadı.", + "rclone config create failed.": + "rclone config create başarısız oldu.", + "Connected to Google Drive as remote '%@', folder %@.": + "Google Drive'a '%@' remote'u olarak bağlanıldı, klasör %@.", + "tmutil is not responding - unknown where the backup goes": + "tmutil yanıt vermiyor - yedeğin nereye gittiği bilinmiyor", + "No successful backup for %@": + "%@ süredir başarılı yedek yok", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "Son TAMAMLANAN yedek: %@. Döngü saatlik olduğundan bu %@ atlanan çalıştırma eder.", + "There is NOT A SINGLE successful backup": + "Tek bir başarılı yedek bile YOK", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Time Machine tercihlerinde bu hedef için tamamlanmış bir yedeğin tarihi yok.", + "The last backup attempt did not end in a backup": + "Son yedekleme denemesi yedekle sonuçlanmadı", + "The attempt at %@ is newer than the last successful backup at %@.": + "%@ tarihli deneme, %@ tarihli son başarılı yedekten daha yeni.", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine son çalıştırmada hata bildiriyor (RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Time Machine tercihlerinde sıfırdan farklı bir RESULT, çalıştırmanın başarısız olduğu anlamına gelir.", + "rclone failed to upload %@ files": + "rclone %@ dosyayı yükleyemedi", + "Buffer full of nothing but unsent data": + "Arabellek yalnızca gönderilmemiş verilerle dolu", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone'un arabellekten çıkaracak bir şeyi kalmadı - yükleme yetişemiyor veya takıldı.", + "The rclone control interface is not responding": + "rclone denetim arayüzü yanıt vermiyor", + "Google Drive is running out of space (%@ GB)": + "Google Drive'da yer azalıyor (%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Mac'in diskinde yer azalıyor (%@ GB)", + "Cannot read the Time Machine preferences": + "Time Machine tercihleri okunamıyor", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ okunamıyor - çoğunlukla Tam Disk Erişimi eksiktir. Bu dosya olmadan son yedeğin ne zaman alındığı BİLİNMİYOR; bu yüzden bunu sorunun yokluğu değil, arıza sayıyoruz.", + "Cannot measure free space on the Mac's disk": + "Mac'in diskindeki boş alan ölçülemiyor", + "%@ days": + "%@ gün", + "CloudMachine: backup is not working": + "CloudMachine: yedekleme çalışmıyor", + "unknown reason": + "bilinmeyen neden", + "osascript did not show the notification (permissions or no graphical session)": + "osascript bildirimi göstermedi (izinler veya grafik oturumu yok)", + "UNDELIVERED ALARM: %@": + "TESLİM EDİLMEYEN UYARI: %@", + "from %@, reason: %@": + "%@ kaynaklı, neden: %@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "Sistem bildirimi teslim edilmedi - bu uyarıyı YALNIZCA burada göreceksiniz.", + "%@ (%@ ago)": + "%@ (%@ önce)", + "%@ - marker from the FUTURE": + "%@ - GELECEKTEN işaret", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@ (%@ önce) - GÖZCÜ ÇALIŞMIYOR OLABİLİR", + "NEVER - the watchdog has not recorded a single run": + "HİÇ - gözcü tek bir çalışma bile kaydetmedi", + "Could not find the launchd/ directory with templates.": + "Şablonların bulunduğu launchd/ klasörü bulunamadı.", + "Could not find the compiled cloudmachine-agent binary.": + "Derlenmiş cloudmachine-agent ikili dosyası bulunamadı.", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "İPTAL EDİLDİ: cloudmachine-agent sabit bir konuma konamadı\n(%@) - çoğunlukla yer veya izin eksikliğinden.\n%@ konumunu gösteren aracılar KURULMUYOR: bu yol\nbir sonraki `swift build` veya `git clean` ile kaybolur ve yedekler\nhiçbir görünür işaret olmadan durur.", + "ABORTED: %@": + "İPTAL EDİLDİ: %@", + "Could not list the templates in %@.": + "%@ içindeki şablonlar listelenemedi.", + "could not read the template %@": + "%@ şablonu okunamadı", + "could not write %@ (lack of space or permissions)": + "%@ yazılamadı (yer veya izin eksikliği)", + "launchctl load refused to load %@": + "launchctl load, %@ dosyasını yüklemeyi reddetti", + "NOT A SINGLE agent was loaded.": + "TEK BİR aracı bile yüklenmedi.", + "Only these went in: %@.": + "Yalnızca şunlar kuruldu: %@.", + "Could not load any launchd agent.": + "Hiçbir launchd aracısı yüklenemedi.", + "Installed agents: %@": + "Kurulan aracılar: %@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " UYARI: sınıra yakın - yeni bantlar EMFILE hatasıyla başarısız olur", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "Google Drive'daki %@/bands boş değil - başka bir yedek olabilir. Üzerine YAZILMIYOR; elle denetleyin.", + "Address: %@": + "Adres: %@", + "Already prepared (%@ exists) - nothing to do.": + "Zaten hazırlanmış (%@ var) - yapılacak bir şey yok.", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "Makinedeki yeni, boş Time Machine görüntüsünü 32 MB'lık bantlara dönüştürür ve bantları Google Drive'a taşır.", + "Copy rclone.conf into the machine even if it already has one.": + "rclone.conf dosyasını makinede zaten olsa bile makineye kopyala.", + "Copying the converted image into the machine failed: %@": + "Dönüştürülen görüntü makineye kopyalanamadı: %@", + "Copying the image to the Mac failed: %@": + "Görüntü Mac'e kopyalanamadı: %@", + "Could not ask Lima about the machine: %@": + "Makine hakkında Lima'ya sorulamadı: %@", + "Could not carry the Time Machine files over: %@": + "Time Machine dosyaları aktarılamadı: %@", + "Could not check the image in the machine.": + "Makinedeki görüntü denetlenemedi.", + "Could not copy the rclone configuration into the machine.": + "rclone yapılandırması makineye kopyalanamadı.", + "Could not create %@ on Google Drive: %@": + "Google Drive'da %@ oluşturulamadı: %@", + "Could not create %@: %@": + "%@ oluşturulamadı: %@", + "Could not find the vm/ directory with the machine template.": + "Makine şablonunun bulunduğu vm/ klasörü bulunamadı.", + "Could not read the image size.": + "Görüntü boyutu okunamadı.", + "Could not set the SMB password of user %@ in the machine.": + "Makinede %@ kullanıcısının SMB parolası ayarlanamadı.", + "Could not stop smbd in the machine.": + "Makinede smbd durdurulamadı.", + "Could not write %@ in the machine.": + "Makinede %@ yazılamadı.", + "Could not write the password file %@.": + "%@ parola dosyası yazılamadı.", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "CloudMachine makinesini (Lima) oluşturur veya başlatır, ona rclone yapılandırmasını ve bir SMB parolası verir ve Time Machine komutunu yazdırır.", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "%@ makinesi oluşturuluyor (ilk başlatmada Ubuntu indirilir ve paketler kurulur - birkaç dakika)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "Bitti: %@, Google Drive'da %@ MB'lık bantlara sahip; orijinal makinede %@ içinde saklanıyor. Yedeklemeyi başlatın: tmutil startbackup", + "exit code %@, no message": + "çıkış kodu %@, ileti yok", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "Görüntü üst verisi: %@ konumuna HİÇ kopyalanmadı - makinedeki tm-meta-sync'i denetleyin", + "Image metadata: copied %@ ago to %@": + "Görüntü üst verisi: %@ önce %@ konumuna kopyalandı", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "Görüntü üst verisi: en son %@ önce kopyalandı - GECİKMİŞ (%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "Görüntü üst verisi: henüz kopyalanmadı - vm-prepare-bundle'ı bekliyor", + "Backup %@, paused by the guard %@: %@": + "Yedek %@, bekçi tarafından %@ duraklatıldı: %@", + "Free in machine: %@ GiB": + "Makinede boş: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n sorun buldu: %@", + "Google Drive folder: %@": + "Google Drive klasörü: %@", + "hdiutil attach of the converted image failed: %@": + "Dönüştürülen görüntünün hdiutil attach işlemi başarısız oldu: %@", + "hdiutil convert failed: %@": + "hdiutil convert başarısız oldu: %@", + "Image name in the machine (default: from the computer name).": + "Makinedeki görüntünün adı (varsayılan: bilgisayar adından).", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "Dönüştürülen görüntünün kurulumu BAŞARISIZ OLDU: %@\nTime Machine yarım kurulmuş bir görüntüyü açmasın diye smbd DURDURULMUŞ bırakıldı. Orijinal makinede %@ içinde.", + "limactl create failed: %@": + "limactl create başarısız oldu: %@", + "limactl list failed: %@": + "limactl list başarısız oldu: %@", + "limactl not found - install Lima: brew install lima": + "limactl bulunamadı - Lima'yı kurun: brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start başarısız oldu: %@\nMakinenin kendi günlüğü: %@", + "Machine %@ is running.": + "%@ makinesi çalışıyor.", + "Machine %@ was already running.": + "%@ makinesi zaten çalışıyordu.", + "Machine: %@ (%@)": + "Makine: %@ (%@)", + "Machine: %@": + "Makine: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "Makine: oluşturulmadı - çalıştırın: cloudmachine-agent vm-setup", + "no answer within the time limit": + "süre sınırı içinde yanıt yok", + "No image %@ in the machine.": + "Makinede %@ görüntüsü yok.", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "Makinede henüz görüntü yok - önce Time Machine'i paylaşıma yönlendirin ve bir tane oluşturmasına izin verin.", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "%@ konumunda rclone yapılandırması yok - önce Google Drive'ı bağlayın (configure-remote).", + "no SMB destination": + "SMB hedefi yok", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "Makinenin yükleme arabelleğinin tek bir denetimi: dolduğunda Time Machine'i duraklatır, duraklattığını sürdürür.", + "Packing the converted image failed: %@": + "Dönüştürülen görüntü paketlenemedi: %@", + "Packing the image failed: %@": + "Görüntü paketlenemedi: %@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "Makineden yanıt yok (rclone rc) - bekçi hiçbir şey yapmazdı.", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "Yalnızca bekçinin ne karar vereceğini yazdır - eşikleri atılabilir bir makinede denemek için.", + "Pause above this many GiB in the buffer.": + "Arabellekte bu kadar GiB'ın üzerinde duraklat.", + "Pause when the machine has less free than this, in GiB.": + "Makinenin boş alanı bundan azsa duraklat, GiB cinsinden.", + "Point Time Machine at the machine (once, needs an administrator password):": + "Time Machine'i makineye yönlendirin (bir kez, yönetici parolası gerekir):", + "punchfs files: %@ open, limit %@": + "punchfs dosyaları: %@ açık, sınır %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "rclone yapılandırması makinede zaten var - korundu (--replace-rclone-config onu değiştirir).", + "rclone configuration copied into the machine.": + "rclone yapılandırması makineye kopyalandı.", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "rclone-tm veya punchfs makinede çalışmıyor - bkz. cloudmachine-agent vm-status.", + "Resume below this many GiB (only a backup the guard paused).": + "Bu kadar GiB'ın altına inince sürdür (yalnızca bekçinin duraklattığı yedeği).", + "Service %@: %@": + "Hizmet %@: %@", + "Several images in the machine (%@) - choose one with --bundle.": + "Makinede birden çok görüntü var (%@) - --bundle ile birini seçin.", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "Makineyi gösterir: adres, hizmetler, yükleme arabelleği, boş alan ve Time Machine hedefi.", + "SMB password stored in %@ (mode 600).": + "SMB parolası %@ içinde saklandı (izinler 600).", + "The converted image does not have %@-byte bands.": + "Dönüştürülen görüntüde %@ baytlık bantlar yok.", + "The converted image has no APFS partition.": + "Dönüştürülen görüntüde APFS bölümü yok.", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "Görüntü zaten %@ MB yer kaplıyor - bu komut yalnızca yeni, boş bir görüntüyü (%@ MB altı) dönüştürür.", + "The image is encrypted - converting encrypted images is not supported.": + "Görüntü şifreli - şifreli görüntüleri dönüştürme desteklenmiyor.", + "The image was not changed; smbd started again.": + "Görüntü değiştirilmedi; smbd yeniden başlatıldı.", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "Makine yanıt vermiyor - çalışıyor mu? cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "Makinenin vzNAT ağında adresi yok.", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "Makinedeki hizmetler başlamadı - denetleyin: cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine yedekliyor - önce durdurun: tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: makineyi GÖSTERMİYOR (%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil yanıt vermedi", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil yanıt vermedi - durumu bilinmeyen görüntüye dokunulmuyor.", + "unknown": + "bilinmiyor", + "Unpacking the image failed: %@": + "Görüntü açılamadı: %@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "Yüklenecek kalan: %@ GiB, %@ bantta, yüklenen %@ (diskteki önbellek %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "%@ (makine ve yükleme arabelleği) Time Machine'den hariç tutuldu.", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "UYARI: %@ Time Machine'den hariç tutulamadı - çalıştırın: tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "Yükleme arabelleği: rclone'dan yanıt yok (rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Time Machine boş görüntüsünü oluşturunca yedeklemeyi durdurun (tmutil stopbackup) ve şunu çalıştırın: cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "Gönderilmemiş %@ GiB, boş %@ GiB (%@ GiB gönderilmemişin üzerinde veya %@ GiB boşun altında duraklat, %@ GiB altında sürdür).", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "Yükleme: Google'ın günlük sınırı %@ önce bir yüklemeyi reddetti - rclone 5 dakikada bir yeniden dener ve kendiliğinden sürdürür", + "no": + "hayır", + "running": + "sürüyor", + "stopped": + "durduruldu", + "yes": + "evet", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\nÖnceki şablon %@ içinde - onu lima.yaml üzerine geri kopyalayın ve limactl start %@ çalıştırın.", + "Could not read this app's machine template (limactl template copy).": + "Bu uygulamanın makine şablonu okunamadı (limactl template copy).", + "Could not replace %@: %@": + "%@ değiştirilemedi: %@", + "Machine %@ already runs this app's template.": + "%@ makinesi zaten bu uygulamanın şablonuyla çalışıyor.", + "Machine %@ now runs this app's template; the previous one is in %@.": + "%@ makinesi artık bu uygulamanın şablonuyla çalışıyor; öncekisi %@ içinde.", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "Makineyi bu uygulamanın şablonuna taşır (iki yeniden başlatma, asla yedekleme sırasında değil).", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "%@ makinesi yok - oluşturun: cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "Şablon: bu uygulamanınkinden ESKİ - çalıştırın: cloudmachine-agent vm-update", + "Template: not compared": + "Şablon: karşılaştırılmadı", + "Template: this app's": + "Şablon: bu uygulamanınki", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "Makinede %@ yok - önce cloudmachine-agent vm-setup çalıştırın.", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "Makine yeniden başladı ama tüm hizmetler çalışmıyor - denetleyin: cloudmachine-agent vm-status. Önceki şablon %@ içinde.", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "Şablon makinenin kendisini değiştiriyor (%@) - bu güncelleme değil, yeni bir makine gerektirir.", + "The upload to Google Drive hangs": + "Google Drive'a yükleme takıldı", + "Time Machine is backing up - try again when it has finished.": + "Time Machine yedekliyor - bitince yeniden deneyin.", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "Yükleme: TAKILDI - bantlar sürüyor, %@ süredir hiçbiri yüklenmedi (ağ?); makinedeki /var/log/rclone-tm.log dosyasına bakın", + "limactl stop failed - nothing was changed.": + "limactl stop başarısız oldu - hiçbir şey değiştirilmedi.", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone'da süren bantlar var ama %@ süredir hiçbiri yüklenmedi - genellikle rclone'un hata olarak bildirmediği kopuk bir ağ bağlantısıdır. O zamandan beri alınan yedekler yalnızca makinenin arabelleğinde. Ağ geri gelince yükleme kendiliğinden sürer (28.10.2026'da 80 s içinde); sürmezse makineyi yeniden başlatmak (prepare-shutdown, limactl start) ölü bağlantıları koparır.", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil yanıt vermedi - durumu bilinmeyen makine yeniden başlatılmıyor.", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+zh-Hans.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+zh-Hans.swift new file mode 100644 index 0000000..ec881b7 --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+zh-Hans.swift @@ -0,0 +1,951 @@ +// Simplified Chinese translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let zhHans: [String: String] = [ + "Space limit: %@": + "空间上限: %@", + " Time Machine quota not set to match - run: %@": + " Time Machine 配额未相应设置,请运行:%@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "设置此 Mac 可使用多少 Google Drive 空间,并输出 Time Machine 配额命令。", + "Limit in GB.": + "上限,单位为 GB。", + "Limit for this Mac: %@ GB.": + "此 Mac 的上限:%@ GB。", + "Now set the Time Machine quota (needs an administrator password):": + "现在设置 Time Machine 配额(需要管理员密码):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine:检查、Google Drive 设置与安装。由 launchd 按计划调用,或在终端中手动运行。", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "通过 rclone 连接 Google Drive(在浏览器中进行 OAuth 授权),并为此虚拟机创建文件夹。", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "覆盖现有 remote。有风险:会替换令牌和权限。", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "将 build/CloudMachine.app 打包为 build/CloudMachine-.dmg。", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "错误:缺少 %@,请先运行 'cloudmachine-agent build-app'", + "==> Preparing the staging folder": + "==> 正在准备暂存文件夹", + "==> Creating %@": + "==> 正在创建 %@", + "ERROR: hdiutil exited with code %@.": + "错误:hdiutil 以代码 %@ 退出。", + "==> Done: %@": + "==> 完成:%@", + "On first launch (the app is not signed with an Apple Developer account):": + "首次打开时(此 App 未使用 Apple Developer 账户签名):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. 打开 %@,并将 CloudMachine.app 拖到“应用程序”文件夹。", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. 在访达中,按住 Control 键点按(或右键点按)CloudMachine.app -> 打开 -> 打开\n (直接双击会显示 Gatekeeper 的“未识别的开发者”拦截提示)。", + "3. Later launches work normally, with a double-click.": + "3. 之后即可正常双击打开。", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "构建 CloudMachine.app(Release):图形界面与 cloudmachine-agent 位于 Contents/MacOS/,launchd/、vm/ 和 config/ 作为资源一并打包。", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "同时构建 Apple 芯片和 Intel 版本的二进制文件(CI 发布版本的方式;本地无需使用)。", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> 正在构建 CloudMachineApp + cloudmachine-agent(release)- 版本 %@(%@)", + "ERROR: swift build exited with code %@.": + "错误:swift build 以代码 %@ 退出。", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "错误:swift build --show-bin-path 未报告二进制文件所在的目录。", + "ERROR: no built binary found at %@": + "错误:在 %@ 未找到已构建的二进制文件", + "==> Assembling the .app bundle in %@": + "==> 正在 %@ 中组装 .app 包", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> 警告:当前是从有未提交更改的工作树构建,此版本无法对应到某次提交。", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "错误:缺少 Resources/AppIcon.icns,请生成:swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> 正在使用本地证书 '%@' 签名(之后重新构建时,完全磁盘访问权限仍会保留)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> 正在进行临时签名(ad-hoc,没有 Apple Developer 账户):请先运行一次 'cloudmachine-agent setup-signing-cert',这样之后重新构建时 TCC 权限才能保留", + "ERROR: codesign exited with code %@.": + "错误:codesign 以代码 %@ 退出。", + "Next step: %@": + "下一步:%@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "创建本地自签名证书,使“完全磁盘访问权限”在之后重新构建 App 时仍能保留。", + "Certificate '%@' already exists in %@, nothing to do.": + "证书 '%@' 已存在于 %@,无需操作。", + "==> Generating the key and self-signed certificate '%@'...": + "==> 正在生成密钥和自签名证书 '%@'...", + "ERROR: openssl req exited with code %@.": + "错误:openssl req 以代码 %@ 退出。", + "ERROR: openssl pkcs12 exited with code %@.": + "错误:openssl pkcs12 以代码 %@ 退出。", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> 正在将证书导入 %@(已预先授权 /usr/bin/codesign,因此不会每次都询问钥匙串密码)...", + "ERROR: security import exited with code %@.": + "错误:security import 以代码 %@ 退出。", + "==> Trusting the certificate ONLY for code signing...": + "==> 正在将该证书仅设为信任用于代码签名...", + "ERROR: security add-trusted-cert exited with code %@.": + "错误:security add-trusted-cert 以代码 %@ 退出。", + "Done. Certificate '%@' is now available to codesign.": + "完成。证书 '%@' 现在可供 codesign 使用。", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "下次运行 'cloudmachine-agent build-app' 时,将自动使用它,而不是临时签名。", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "在那一次重新构建之后,请再授予一次“完全磁盘访问权限”。\n只要使用同一个证书签名,之后重新构建就不会再重置该权限。", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "检查每小时的备份周期是否仍在正常运行(最近一次成功备份的日期),并报告故障。", + "After this many hours without a successful backup we consider the cycle broken.": + "超过这么多小时没有成功备份,就认为备份周期已中断。", + "Only print the state, without a system notification.": + "仅输出状态,不发送系统通知。", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "使用另一个 Time Machine 偏好设置文件,以便用已知样本测试备份监测。", + "Last successful backup: %@": + "最近一次成功备份:%@", + "Last successful backup: NONE": + "最近一次成功备份:无", + "Last attempt: %@": + "最近一次尝试: %@", + "WAITING (system startup): %@": + "等待中(系统启动):%@", + "Backup cycle: OK": + "备份周期:正常", + "FAILURE: %@": + "故障:%@", + " %@": + " %@", + "Check the state: %@": + "查看状态: %@", + "Preparing for restart": + "正在准备重启", + "Prepare for restart": + "准备重启", + "Prepare": + "准备", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> 警告:git rev-list 失败(%@),改用日期作为构建号。", + "Agents: %@": + "代理: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "无法启动:%@,请打开 CloudMachine 或运行 backup-health 重新载入", + "Reloaded agents that could not start: %@": + "已重新载入无法启动的代理:%@", + "Drive folder: %@": + "Drive 文件夹: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "此 Mac 在 Google Drive 上的文件夹名称(默认:根据电脑名称生成)。只能设置一次,之后无法更改。", + "Backup watchdog: %@": + "备份监测: %@", + "Prints the version, the build number and the commit this binary was built from.": + "输出版本、构建号以及构建此二进制文件所用的提交。", + "Only one line, without a description.": + "只输出一行,不带说明。", + "Build from the working tree (outside a bundle) - no version data.": + "从工作树构建(不在 App 包内),没有版本数据。", + "Version: %@": + "版本:%@", + "Build: %@": + "构建:%@", + "Commit: %@": + "提交:%@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "警告:此版本是从有未提交更改的工作树构建的,\n 其中包含不在任何提交中的代码。\n 提交编号并不能说明实际运行的是什么。", + "Saving the space limit": + "正在保存空间上限", + "Measuring usage on Google Drive": + "正在测量 Google Drive 用量", + "Google Drive did not answer - try again later.": + "Google Drive 没有响应,请稍后再试。", + "Measured.": + "已测量。", + "Space limit for this Mac": + "此 Mac 的空间上限", + "Used on Google Drive": + "Google Drive 已用空间", + "Measured %@. The watchdog measures again every few hours.": + "已于 %@ 测量。备份监测每隔几小时会再次测量。", + "Limit (GB)": + "上限(GB)", + "Save": + "保存", + "Measure now": + "立即测量", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Time Machine 配额:%@ GB(上限的 70%%,因为 Drive 上的副本比其中的备份大约大三分之一)。Time Machine 会删除最旧的备份,以保持在配额之内。", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "设置 Time Machine 配额:在终端中运行以下命令(需要 sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "连接 Google Drive:在终端中运行以下命令,并在浏览器中批准", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "为 CloudMachine 授予“完全磁盘访问权限”,以便它能判断备份是否完成", + "Folder on Google Drive": + "Google Drive 上的文件夹", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "每台 Mac 一个文件夹。只能设置一次,连接后无法更改。", + "Use lowercase letters, digits and dashes.": + "请使用小写字母、数字和连字符。", + "Install rclone": + "安装 rclone", + "Open System Settings": + "打开系统设置", + "Install agents": + "安装代理", + "not checked": + "未检查", + "none at all": + "完全没有", + "%@ ago": + "%@前", + "Missing: %@": + "缺少:%@", + "Google Drive not connected": + "未连接 Google Drive", + "Time Machine does not point to CloudMachine": + "Time Machine 未指向 CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "无法确定 Time Machine 是否指向 CloudMachine,tmutil 没有响应", + "Backup in progress": + "正在备份", + "Unknown when the last backup was made": + "不知道上次备份是什么时候", + "There is no completed backup at all": + "完全没有已完成的备份", + "No completed backup for %@": + "已有 %@ 没有完成的备份", + "Ready": + "就绪", + "Not saved: %@": + "未保存:%@", + "Installing rclone": + "正在安装 rclone", + "Installing launchd agents": + "正在安装 launchd 代理", + "Starting backup": + "正在开始备份", + "Backup started.": + "备份已开始。", + "Could not start the backup.": + "无法开始备份。", + "Stopping backup": + "正在停止备份", + "Backup stopped.": + "备份已停止。", + "Could not stop the backup.": + "无法停止备份。", + "Could not prepare the AppleScript.": + "无法准备 AppleScript。", + "Unknown authorization error.": + "未知的授权错误。", + "Waiting to upload": + "等待上传", + "%@ files": + "%@ 个文件", + "nothing": + "无", + "Back up now": + "立即备份", + "Stop backup": + "停止备份", + "Open CloudMachine": + "打开 CloudMachine", + "Quit": + "退出", + "Healthy": + "正常", + "Attention": + "需要注意", + "Refreshed %@": + "已于 %@ 刷新", + "System Status": + "系统状态", + "Action needed": + "需要处理", + "not measured": + "未测量", + "rclone did not answer": + "rclone 没有响应", + "Backup in Progress": + "正在备份", + "Files processed": + "已处理文件", + "Write speed": + "写入速度", + "Operation phase": + "操作阶段", + "Required Setup Steps": + "必要的设置步骤", + "Copy": + "拷贝", + "Last completed backup": + "最近一次完成的备份", + "Last backup watchdog run": + "备份监测最近一次运行", + "not read": + "未读取", + "Everything uploaded": + "已全部上传", + "File upload errors": + "文件上传错误", + "Google Drive Credentials (OAuth 2.0)": + "Google Drive 凭据(OAuth 2.0)", + "Keychain OK": + "钥匙串正常", + "No custom keys": + "没有自定义密钥", + "Paste client_id...": + "粘贴 client_id...", + "Paste client_secret...": + "粘贴 client_secret...", + "Save securely in the Keychain": + "安全存入钥匙串", + "Refresh": + "刷新", + "Overview": + "概览", + "Backups": + "备份", + "Storage": + "存储", + "Settings": + "设置", + "Current status: %@": + "当前状态:%@", + "Does not point to CloudMachine": + "未指向 CloudMachine", + "tmutil did not answer": + "tmutil 没有响应", + "Backing up: %@ of %@": + "正在备份:%@ / %@", + "%@ of %@": + "%@ / %@", + "Copied": + "已拷贝", + "No backup is running": + "没有正在进行的备份", + "Time Machine starts the next one on its own schedule.": + "Time Machine 会按自己的计划开始下一次备份。", + "Backup cycle": + "备份周期", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB,共 %@ 个分块,正在上传 %@ 个", + "%@ bands": + "%@ 个分块", + "%@ fragments abandoned - only in the machine": + "%@ 个片段已放弃,仅存在于虚拟机中", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 在此 Mac 上有响应:Lima 转发了虚拟机的 rclone 远程控制,而它没有密码。浏览器中打开的任何网页都可以向它发送命令,包括删除 Google Drive 上的备份。请将 vm/cmsmb.yaml 中的 portForwards 规则添加到虚拟机并重新启动它(参见 vm/README.md)。", + "A service in the CloudMachine machine is not running": + "CloudMachine 虚拟机中的某项服务没有运行", + "Address": + "地址", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "代理安装不完整:%@ / %@ 未能装入:\n%@\n%@\n每个缺失的代理都意味着某项功能已悄悄停止工作(vm-guard 监视虚拟机的缓冲区,backup-health 报告故障)。请排除原因后重新安装。", + "All running": + "全部运行中", + "Also install the launchd agents (same as install-launchd).": + "同时安装 launchd 代理(与 install-launchd 相同)。", + "At most this many minutes of waiting for the upload.": + "等待上传的时间最多为这么多分钟。", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "达到上限时,每个新分块都会因 EMFILE 而失败,备份随之停止。检查:cloudmachine-agent vm-status", + "Cache on the machine's disk": + "虚拟机磁盘上的缓存", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "已连接到 Google Drive,但无法创建文件夹 '%@',没有它虚拟机就没有地方保存备份。请检查账户权限后重试。", + "Convert the image": + "转换映像", + "Converting the image to 32 MB bands": + "正在将映像转换为 32 MB 分块", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "无法通过当前连接检查备份是否在 Google Drive 上(%@),因此 remote '%@' 没有被替换:没有这一结果,就无法用它来核对新的登录。", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "将官方 rclone 二进制文件下载到 ~/.cloudmachine/bin(Google 登录和虚拟机的 rclone.conf)。", + "Free in the machine": + "虚拟机可用空间", + "Free in the machine: %@": + "虚拟机可用空间:%@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "生成并安装 launchd 代理(App、备份监测、虚拟机启动、虚拟机守护)。", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "安装运行 CloudMachine 虚拟机的 Lima:在终端中运行以下命令", + "Install rclone (signs in to Google Drive for the machine)": + "安装 rclone(为虚拟机登录 Google Drive)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "安装后台代理(虚拟机启动、缓冲区守护、备份监测)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "通过 Homebrew 安装 rclone;CloudMachine 自身使用的是 install-rclone 安装的那一个。", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "备份映像的 Info.plist、令牌和 mapped/ 只存在于虚拟机的磁盘上;没有它们,%@ 中的分块就无法恢复。副本(tm-meta-sync,每 15 分钟一次)会发送到 %@。检查:cloudmachine-agent vm-status,然后在虚拟机中运行:journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima 显示虚拟机正在运行,但其中的某个命令没有返回。没有它,就无法得知 Samba、rclone 或上传的情况。检查:cloudmachine-agent vm-status", + "Machine": + "虚拟机", + "Machine %@": + "虚拟机 %@", + "Machine & Upload Status": + "虚拟机与上传状态", + "Machine buffer": + "虚拟机缓冲区", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "没有任何 Time Machine 备份目标是虚拟机的共享(smb://tm@
/CloudMachine),因此不会在那里进行备份。该命令由以下命令输出:cloudmachine-agent vm-setup", + "Not running: %@": + "未运行:%@", + "Not set up": + "未设置", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "用尽后,rclone 会停止上传,虚拟机的缓冲区会被填满,备份也会停止。按每小时周期增长约 600 MB 计算,大约还能支撑 %@ 天。", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "或者缺少 rclone.conf:此 Mac 已经设置过 CloudMachine 虚拟机,因此不会不加确认地重新连接。请从备份中恢复该文件(虚拟机在 %@ 中保留有自己的副本)。如仍要连接,请在 `%@ config file` 输出的路径创建一个空文件,然后重新运行,现有文件夹会保留。", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "让 Time Machine 指向虚拟机:在终端中运行以下命令(需要 sudo;“拷贝”会包含密码)", + "Points to the machine": + "指向虚拟机", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "为重启做准备:停止备份,等待一段时间让上传完成,然后正常关闭虚拟机。", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "读取 Time Machine 备份目标未在 %@ 秒内返回。备份目标卡住时,tmutil 就是这样的表现。", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "remote '%@' 没有被替换。新的登录会获得 'drive.file' 权限范围,只能看到由它自己的 client_id 创建的文件。现有备份很可能是由当前连接创建的,会对它不可见。在写入任何内容之前,会先用现有备份核对新令牌,如果它看不到备份,则放弃替换。在运行 vm-setup --replace-rclone-config 之前,虚拟机会保留自己的那份配置副本。如要继续,请加上 --replace-existing --accept-scope-change 重新运行。", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "远程控制: 在 Mac 上开放,地址为 127.0.0.1:5572,任何网页都可以发送 rclone 命令;参见 vm/README.md(portForwards)", + "Running": + "运行中", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "虚拟机中的 Samba、rclone 或 punchfs 未处于活动状态,因此 Time Machine 无处写入,或分块无法到达 Google Drive。检查:cloudmachine-agent vm-status", + "Service %@": + "服务 %@", + "Services": + "服务", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "设置 CloudMachine 虚拟机(首次会下载 Ubuntu,需要几分钟)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "重新设置 CloudMachine 虚拟机,以输出 Time Machine 命令", + "Set up the machine": + "设置虚拟机", + "Setting up the CloudMachine machine": + "正在设置 CloudMachine 虚拟机", + "Start the CloudMachine machine": + "启动 CloudMachine 虚拟机", + "Start the machine": + "启动虚拟机", + "Starting the CloudMachine machine": + "正在启动 CloudMachine 虚拟机", + "Still to upload: %@ GiB": + "仍待上传:%@ GiB", + "Stopping the Time Machine backup...": + "正在停止 Time Machine 备份...", + "Stopping the machine %@...": + "正在停止虚拟机 %@...", + "The CloudMachine machine does not answer": + "CloudMachine 虚拟机没有响应", + "The CloudMachine machine is not running": + "CloudMachine 虚拟机未运行", + "The CloudMachine machine is not set up yet": + "CloudMachine 虚拟机尚未设置", + "The CloudMachine machine is stopped": + "CloudMachine 虚拟机已停止", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "备份会停止,上传最多有 30 分钟时间,然后虚拟机会正常关闭。下次登录时它会再次启动。", + "The machine %@ is not running - nothing to prepare.": + "虚拟机 %@ 未运行,无需准备。", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "虚拟机已停止,所有内容都已到达 Google Drive。可以重启 Mac;虚拟机会在登录时再次启动。", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "虚拟机已停止。有 %@ GiB 尚未到达 Google Drive,它们保留在虚拟机的缓冲区中,会在下次启动后上传。可以重启 Mac。", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "虚拟机已停止。rclone 没有说明还有多少内容待上传;未上传的内容保留在虚拟机的缓冲区中,会在下次启动后上传。可以重启 Mac。", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "虚拟机的磁盘是此磁盘上的一个文件,会随着上传缓冲区被填满而增大。没有剩余空间时,虚拟机无法写入缓冲区,Time Machine 的本地快照也无处存放。", + "The image's metadata has never been copied to Drive": + "映像的元数据从未拷贝到 Drive", + "The image's metadata was last copied to Drive %@ ago": + "映像的元数据已于 %@前拷贝到 Drive", + "The machine's disk is running out of space (%@ GB)": + "虚拟机的磁盘空间即将用尽(%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "新的登录看不到现有备份(%@),因此 remote '%@' 没有被替换,rclone.conf 保持不变。请保留当前连接,或使用创建该备份的凭据(client_id)登录。", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "上传缓冲区位于此磁盘上。守护程序会在缓冲区填满之前暂停 Time Machine;如果上传一直追不上,备份将保持暂停。", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "这些分块只存在于虚拟机的缓冲区中。Google Drive 上的备份不完整,可能无法打开。", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine 备份到虚拟机,因此虚拟机不运行就无法备份。启动它:limactl start %@(或使用 App 中的“启动虚拟机”按钮)。", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine 没有在 2 分钟内停止备份(或 tmutil 没有响应),虚拟机没有被停止。请稍后再试。", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine 已创建映像:停止备份,然后将映像转换为 32 MB 分块", + "To upload": + "待上传", + "Unknown whether the CloudMachine machine is running": + "无法确定 CloudMachine 虚拟机是否在运行", + "Waiting for the upload to Google Drive (at most %@ min)...": + "正在等待上传到 Google Drive(最多 %@ 分钟)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "与 --replace-existing 一起使用:确认新的登录(权限范围 'drive.file')可能看不到现有备份。仍会先用该备份核对新令牌。", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "没有它,就无法检查是否有内容到达 Drive,虚拟机的守护程序将处于盲区。", + "limactl did not answer": + "limactl 没有响应", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl 没有响应(或未安装)。这并不表示虚拟机已停止,只表示还没有人检查过。", + "limactl start failed: %@": + "limactl start 失败:%@", + "limactl stop failed: %@": + "limactl stop 失败:%@", + "punchfs is close to its open-file limit": + "punchfs 已接近其打开文件数上限", + "punchfs open files": + "punchfs 打开的文件", + "rclone's remote control is open on this Mac": + "rclone 的远程控制在此 Mac 上处于开放状态", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') 返回了错误,因此无法得知虚拟机的磁盘在此 Mac 上是否还能继续增大。", + "Google Drive's daily upload limit stops the upload": + "Google Drive 的每日上传上限使上传停止", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google 在 %@前拒绝了一次上传(每天 750 GB)。此后的备份只存在于此 Mac 上虚拟机的缓冲区中。rclone 每 5 分钟重试一次,上限解除后会自动继续;如果等待上传的内容超过 %@ GiB,守护程序会暂停 Time Machine。", + "Usage on Google Drive is not being measured": + "未测量 Google Drive 的用量", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "最近一次测量(%@ GB)是在 %@,即 %@前,此后 rclone size 一直没有响应。在它响应之前,没有任何机制监视 %@ GB 的上限:90%% 和 100%% 的警报都不会触发。请检查 vm-status,或在窗口中点按“立即测量”。", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size 一次都没有响应过。在它响应之前,没有任何机制监视 %@ GB 的上限:90%% 和 100%% 的警报都不会触发。请检查 vm-status,或在窗口中点按“立即测量”。", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "已存入钥匙串。连接 Google Drive(configure-remote)时将使用它们。", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "已存入钥匙串。现有的 Google Drive 连接仍使用旧的 client_id,在此 Mac 上应保持如此:用新密钥建立的连接('drive.file' 权限范围)看不到由旧连接创建的备份。请不要在此处替换连接;新密钥是留给尚未连接的 Mac 使用的。", + "it is not there for the new token": + "新令牌看不到它", + "Cancel": + "取消", + "ACTION NEEDED": + "需要处理", + "WILL PASS BY ITSELF — DO NOTHING": + "会自行恢复,无需操作", + "UNKNOWN — CHECK AGAIN SHORTLY": + "情况未知,请稍后再查看", + "ALL GOOD": + "一切正常", + "Upload is not working": + "上传无法进行", + "Upload stopped — no space left on Google Drive": + "上传已停止:Google Drive 上没有剩余空间", + "%@ backup fragments not uploaded": + "%@ 个备份片段未上传", + "Upload cannot keep up with writes": + "上传跟不上写入速度", + "Upload paused — Google daily limit": + "上传已暂停:Google 每日上限", + "Uploading to Google Drive — %@ queued": + "正在上传到 Google Drive:%@ 个在队列中", + "Everything uploaded to Google Drive": + "已全部上传到 Google Drive", + "Unknown what is waiting in the queue": + "不知道队列中还有什么在等待", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "与 Google Drive 之间没有连接,因此备份只在此 Mac 上进行。如果几分钟内没有自行恢复,请检查网络以及与 Drive 的连接。", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Google Drive 上没有剩余空间。这不会自行恢复:您需要在 Drive 上释放空间。在此之前,Time Machine 会保持暂停,以免占满此 Mac 的磁盘。", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ 个备份片段无法上传,rclone 已停止重试。这些片段只存在于此 Mac 上,所以 Drive 上的备份不完整。需要检查。", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine 的写入速度快于上传速度,缓冲区已满。备份会暂停,直到上传追上来为止。这是为防止磁盘被占满而设的保护措施,并非故障。", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google 每天接受 750 GB,这一上限已用完。无需任何操作:上限会自行恢复,通常在几个小时内。在此期间 Time Machine 会正常备份,数据会在缓冲区中等待,Google 重新接受后就会立即上传。", + "%@ backup fragments are queued and on their way to Drive.": + "%@ 个备份片段在队列中,正在发送到 Drive。", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "队列中没有等待的内容,Google Drive 上的备份是完整的。", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone 没有回答关于队列的询问,因此不知道还有多少备份在等待上传。这并不表示出了问题,负载较高时响应可能会延迟。这只表示目前没有人知道。如果持续如此,备份周期检查会报告出来。", + "unknown error": + "未知错误", + "rclone lsf ended with an error": + "rclone lsf 以错误结束", + "This Mac is close to its space limit on Google Drive": + "此 Mac 的 Google Drive 空间已接近上限", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "已用 %@ GB,上限 %@ GB。Time Machine 会删除最旧的备份,以保持在配额之内;请确认已设置配额(vm-status)。", + "This Mac is over its space limit on Google Drive": + "此 Mac 的 Google Drive 空间已超出上限", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "已用 %@ GB,上限 %@ GB。请设置 Time Machine 配额(命令见 App 窗口或 vm-status),或提高上限。", + "not set": + "未设置", + "%@ GB - usage not measured yet": + "%@ GB,用量尚未测量", + "%@ of %@ GB used (%@%%)": + "已用 %@ / %@ GB(%@%%)", + "The limit must be a whole number of GB above zero.": + "上限必须是大于零的整数 GB。", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "无法读取 machines.json,因此没有覆盖它。请先修复或删除它。", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' 不是有效的文件夹名称:请使用小写字母、数字和连字符。", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "此 Mac 已备份到文件夹 '%@'。改用 '%@' 会开始一个新的空备份,并使现有备份成为孤立数据,因此没有做任何更改。", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "此 Mac 已安装过 CloudMachine,其备份位于文件夹 '%@'。改用 '%@' 会使它成为孤立数据,因此没有做任何更改。", + "Could not save the folder name to %@: %@": + "无法将文件夹名称保存到 %@:%@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "未安装 Homebrew。请手动安装:https://brew.sh", + "Installing rclone failed: %@": + "安装 rclone 失败:%@", + "Installed rclone.": + "已安装 rclone。", + "Own Google credentials: set.": + "自有 Google 凭据:已设置。", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "不完整:缺少 %@,rclone 仍会使用 rclone 的共享 client_id。", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "没有自有凭据:rclone 使用共享的 client_id,该 client_id 由所有用户共同限速,并将在 2026 年停用。", + "Empty value - not saving.": + "值为空,不保存。", + "Keychain refused: %@": + "钥匙串拒绝了请求:%@", + "DIRTY-TREE": + "未提交更改", + "Cannot create the working directory: %@": + "无法创建工作目录:%@", + "Could not read the rclone version number.": + "无法读取 rclone 的版本号。", + "Could not download %@.": + "无法下载 %@。", + "No entry for %@ in SHA256SUMS.": + "SHA256SUMS 中没有 %@ 的条目。", + "Could not compute the checksum.": + "无法计算校验和。", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "SHA256 校验和不匹配,不予安装。\n 预期:%@\n 计算得到:%@", + "Could not unpack the archive.": + "无法解压归档。", + "Could not install the binary: %@": + "无法安装该二进制文件:%@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "已将 rclone %@ 安装到 %@(SHA256 校验和一致)。", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ 未在规定时间内响应(该进程已作为孤立进程留在后台)。", + "Cannot launch %@: %@": + "无法启动 %@:%@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "remote '%@' 已存在,没有被改动。\n覆盖它会替换令牌和权限范围;使用 'drive.file' 权限范围的凭据看不到由之前那个凭据创建的文件,因此现有备份将无法访问。\n如果确实要替换,请先备份 ~/.config/rclone/rclone.conf,然后加上 --replace-existing 重新运行。", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "无法检查 remote '%@' 是否已存在(rclone listremotes 没有响应或失败),因此没有做任何更改。请运行 `%@ listremotes` 查看错误,然后重试。", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "无法检查此 Mac 是否已安装过 CloudMachine(rclone 没有响应),因此没有选择文件夹。请稍后再试。", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize 失败(%@)。如果缺少该二进制文件,请先运行:cloudmachine-agent install-rclone。", + "Could not read the token from the output of rclone authorize.": + "无法从 rclone authorize 的输出中读取令牌。", + "rclone config create failed.": + "rclone config create 失败。", + "Connected to Google Drive as remote '%@', folder %@.": + "已作为 remote '%@' 连接到 Google Drive,文件夹为 %@。", + "tmutil is not responding - unknown where the backup goes": + "tmutil 没有响应,不知道备份保存在哪里", + "No successful backup for %@": + "已有 %@ 没有成功的备份", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "最近一次完成的备份:%@。备份周期为每小时一次,因此已错过 %@ 次运行。", + "There is NOT A SINGLE successful backup": + "没有任何一次成功的备份", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Time Machine 偏好设置中没有此备份目标的已完成备份日期。", + "The last backup attempt did not end in a backup": + "最近一次备份尝试没有产生备份", + "The attempt at %@ is newer than the last successful backup at %@.": + "%@ 的尝试比 %@ 的最近一次成功备份更新。", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine 报告上次运行出错(RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Time Machine 偏好设置中的 RESULT 不为零,表示该次运行未成功。", + "rclone failed to upload %@ files": + "rclone 上传 %@ 个文件失败", + "Buffer full of nothing but unsent data": + "缓冲区中全是尚未发送的数据", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone 已没有可从缓冲区中移出的内容,上传跟不上或已停滞。", + "The rclone control interface is not responding": + "rclone 控制接口没有响应", + "Google Drive is running out of space (%@ GB)": + "Google Drive 空间即将用尽(%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Mac 的磁盘空间即将用尽(%@ GB)", + "Cannot read the Time Machine preferences": + "无法读取 Time Machine 偏好设置", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ 无法读取,最常见的原因是缺少“完全磁盘访问权限”。没有这个文件,就无法得知上次备份的时间,所以我们把它当作故障,而不是没有问题。", + "Cannot measure free space on the Mac's disk": + "无法测量 Mac 磁盘的可用空间", + "%@ days": + "%@ 天", + "CloudMachine: backup is not working": + "CloudMachine:备份未正常工作", + "unknown reason": + "原因未知", + "osascript did not show the notification (permissions or no graphical session)": + "osascript 没有显示通知(权限问题,或没有图形界面会话)", + "UNDELIVERED ALARM: %@": + "未送达的警报:%@", + "from %@, reason: %@": + "来自 %@,原因:%@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "系统通知没有送达,此警报只会显示在这里。", + "%@ (%@ ago)": + "%@(%@前)", + "%@ - marker from the FUTURE": + "%@:标记来自未来", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@(%@前):备份监测可能没有在运行", + "NEVER - the watchdog has not recorded a single run": + "从未:备份监测没有记录过任何一次运行", + "Could not find the launchd/ directory with templates.": + "找不到包含模板的 launchd/ 目录。", + "Could not find the compiled cloudmachine-agent binary.": + "找不到已编译的 cloudmachine-agent 二进制文件。", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "已中止:无法将 cloudmachine-agent 放到固定位置\n(%@),最常见的原因是空间或权限不足。\n不会安装指向 %@ 的代理:该路径\n会在下次 `swift build` 或 `git clean` 时消失,备份将在\n没有任何可见提示的情况下停止。", + "ABORTED: %@": + "已中止:%@", + "Could not list the templates in %@.": + "无法列出 %@ 中的模板。", + "could not read the template %@": + "无法读取模板 %@", + "could not write %@ (lack of space or permissions)": + "无法写入 %@(空间或权限不足)", + "launchctl load refused to load %@": + "launchctl load 拒绝载入 %@", + "NOT A SINGLE agent was loaded.": + "没有载入任何一个代理。", + "Only these went in: %@.": + "只装入了这些:%@。", + "Could not load any launchd agent.": + "无法载入任何 launchd 代理。", + "Installed agents: %@": + "已安装的代理:%@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " 警告:已接近上限,新的分块将因 EMFILE 而失败", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "Google Drive 上的 %@/bands 不是空的,其中可能有另一份备份。不会覆盖它,请手动检查。", + "Address: %@": + "地址: %@", + "Already prepared (%@ exists) - nothing to do.": + "已经准备好(%@ 已存在),无需操作。", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "将虚拟机中 Time Machine 新建的空映像转换为 32 MB 分块,并将分块移到 Google Drive。", + "Copy rclone.conf into the machine even if it already has one.": + "即使虚拟机中已有 rclone.conf,也将其拷贝进去。", + "Copying the converted image into the machine failed: %@": + "将转换后的映像拷贝到虚拟机失败:%@", + "Copying the image to the Mac failed: %@": + "将映像拷贝到 Mac 失败:%@", + "Could not ask Lima about the machine: %@": + "无法向 Lima 询问虚拟机的情况:%@", + "Could not carry the Time Machine files over: %@": + "无法转移 Time Machine 文件:%@", + "Could not check the image in the machine.": + "无法检查虚拟机中的映像。", + "Could not copy the rclone configuration into the machine.": + "无法将 rclone 配置拷贝到虚拟机。", + "Could not create %@ on Google Drive: %@": + "无法在 Google Drive 上创建 %@:%@", + "Could not create %@: %@": + "无法创建 %@:%@", + "Could not find the vm/ directory with the machine template.": + "找不到包含虚拟机模板的 vm/ 目录。", + "Could not read the image size.": + "无法读取映像大小。", + "Could not set the SMB password of user %@ in the machine.": + "无法为虚拟机中的用户 %@ 设置 SMB 密码。", + "Could not stop smbd in the machine.": + "无法停止虚拟机中的 smbd。", + "Could not write %@ in the machine.": + "无法在虚拟机中写入 %@。", + "Could not write the password file %@.": + "无法写入密码文件 %@。", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "创建或启动 CloudMachine 虚拟机(Lima),为它提供 rclone 配置和 SMB 密码,并输出 Time Machine 命令。", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "正在创建虚拟机 %@(首次启动会下载 Ubuntu 并安装软件包,需要几分钟)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "完成:%@ 在 Google Drive 上有 %@ MB 的分块;原始映像保存在虚拟机的 %@ 中。开始备份:tmutil startbackup", + "exit code %@, no message": + "退出代码 %@,没有消息", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "映像元数据: 从未拷贝到 %@,请检查虚拟机中的 tm-meta-sync", + "Image metadata: copied %@ ago to %@": + "映像元数据: 已于 %@前拷贝到 %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "映像元数据: 上次拷贝在 %@前,已逾期(%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "映像元数据: 尚未拷贝,等待 vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "备份 %@,守护程序暂停于 %@:%@", + "Free in machine: %@ GiB": + "虚拟机可用空间: %@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n 发现问题:%@", + "Google Drive folder: %@": + "Google Drive 文件夹:%@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach 挂载转换后的映像失败:%@", + "hdiutil convert failed: %@": + "hdiutil convert 失败:%@", + "Image name in the machine (default: from the computer name).": + "虚拟机中的映像名称(默认:根据电脑名称生成)。", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "安装转换后的映像失败:%@\nsmbd 保持停止状态,以免 Time Machine 打开只装了一半的映像。原始映像在虚拟机的 %@ 中。", + "limactl create failed: %@": + "limactl create 失败:%@", + "limactl list failed: %@": + "limactl list 失败:%@", + "limactl not found - install Lima: brew install lima": + "找不到 limactl,请安装 Lima:brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start 失败:%@\n虚拟机自己的日志:%@", + "Machine %@ is running.": + "虚拟机 %@ 正在运行。", + "Machine %@ was already running.": + "虚拟机 %@ 已在运行。", + "Machine: %@ (%@)": + "虚拟机: %@(%@)", + "Machine: %@": + "虚拟机: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "虚拟机: 尚未创建,请运行:cloudmachine-agent vm-setup", + "no answer within the time limit": + "在时限内没有响应", + "No image %@ in the machine.": + "虚拟机中没有映像 %@。", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "虚拟机中还没有映像,请先让 Time Machine 指向该共享并创建一个。", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "在 %@ 没有 rclone 配置,请先连接 Google Drive(configure-remote)。", + "no SMB destination": + "没有 SMB 备份目标", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "对虚拟机的上传缓冲区做一次检查:缓冲区填满时暂停 Time Machine,并恢复它曾暂停的备份。", + "Packing the converted image failed: %@": + "打包转换后的映像失败:%@", + "Packing the image failed: %@": + "打包映像失败:%@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "虚拟机(rclone rc)没有响应,守护程序将不会采取任何操作。", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "只输出守护程序会做出的决定,用于在临时虚拟机上试验阈值。", + "Pause above this many GiB in the buffer.": + "缓冲区超过这么多 GiB 时暂停。", + "Pause when the machine has less free than this, in GiB.": + "虚拟机的可用空间少于这么多 GiB 时暂停。", + "Point Time Machine at the machine (once, needs an administrator password):": + "让 Time Machine 指向虚拟机(只需一次,需要管理员密码):", + "punchfs files: %@ open, limit %@": + "punchfs 文件: 已打开 %@ 个,上限 %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "虚拟机中已有 rclone 配置,予以保留(--replace-rclone-config 可替换它)。", + "rclone configuration copied into the machine.": + "rclone 配置已拷贝到虚拟机。", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "虚拟机中的 rclone-tm 或 punchfs 未运行,请参见 cloudmachine-agent vm-status。", + "Resume below this many GiB (only a backup the guard paused).": + "低于这么多 GiB 时恢复(仅限守护程序暂停的备份)。", + "Service %@: %@": + "服务 %@:%@", + "Several images in the machine (%@) - choose one with --bundle.": + "虚拟机中有多个映像(%@),请用 --bundle 选择一个。", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "显示虚拟机的情况:地址、服务、上传缓冲区、可用空间和 Time Machine 备份目标。", + "SMB password stored in %@ (mode 600).": + "SMB 密码已存储在 %@(权限 600)。", + "The converted image does not have %@-byte bands.": + "转换后的映像的分块不是 %@ 字节。", + "The converted image has no APFS partition.": + "转换后的映像没有 APFS 分区。", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "映像已占用 %@ MB,此命令只转换新建的空映像(小于 %@ MB)。", + "The image is encrypted - converting encrypted images is not supported.": + "映像已加密,不支持转换加密的映像。", + "The image was not changed; smbd started again.": + "映像未被更改,smbd 已重新启动。", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "虚拟机没有响应,它在运行吗?cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "虚拟机在 vzNAT 网络上没有地址。", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "虚拟机中的服务没有启动,请检查:cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine 正在备份,请先停止:tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: 未指向虚拟机(%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil 没有响应", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil 没有响应,在映像状态未知时不会改动映像。", + "unknown": + "未知", + "Unpacking the image failed: %@": + "解包映像失败:%@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "仍待上传: %@ GiB,共 %@ 个分块,正在上传 %@(磁盘缓存 %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "已将 %@(虚拟机及其上传缓冲区)从 Time Machine 中排除。", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "警告:无法将 %@ 从 Time Machine 中排除,请运行:tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "上传缓冲区: rclone 没有响应(rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Time Machine 创建好空映像后,请停止备份(tmutil stopbackup)并运行:cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "未发送 %@ GiB,可用 %@ GiB(未发送超过 %@ GiB 或可用低于 %@ GiB 时暂停,低于 %@ GiB 时恢复)。", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "上传: Google 的每日上限在 %@前拒绝了一次上传,rclone 每 5 分钟重试一次,并会自动继续", + "no": + "否", + "running": + "运行中", + "stopped": + "已停止", + "yes": + "是", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\n之前的模板在 %@,请将它拷贝回 lima.yaml,然后运行 limactl start %@。", + "Could not read this app's machine template (limactl template copy).": + "无法读取此 App 的虚拟机模板(limactl template copy)。", + "Could not replace %@: %@": + "无法替换 %@:%@", + "Machine %@ already runs this app's template.": + "虚拟机 %@ 已在使用此 App 的模板。", + "Machine %@ now runs this app's template; the previous one is in %@.": + "虚拟机 %@ 现在使用此 App 的模板;之前的模板在 %@。", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "将虚拟机切换到此 App 的模板(会重启两次,绝不会在备份期间进行)。", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "没有虚拟机 %@,请用以下命令创建:cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "模板: 比此 App 的旧,请运行:cloudmachine-agent vm-update", + "Template: not compared": + "模板: 未比较", + "Template: this app's": + "模板: 与此 App 一致", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "虚拟机中没有 %@,请先运行 cloudmachine-agent vm-setup。", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "虚拟机已重启,但并非所有服务都在运行,请检查:cloudmachine-agent vm-status。之前的模板在 %@。", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "该模板会更改虚拟机本身(%@),这需要新建虚拟机,而不是更新。", + "The upload to Google Drive hangs": + "上传到 Google Drive 卡住了", + "Time Machine is backing up - try again when it has finished.": + "Time Machine 正在备份,请在它完成后再试。", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "上传: 卡住,有分块正在处理,已有 %@ 没有任何分块上传完成(网络问题?);请查看虚拟机中的 /var/log/rclone-tm.log", + "limactl stop failed - nothing was changed.": + "limactl stop 失败,没有做任何更改。", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone 有分块正在处理,但已有 %@ 没有任何分块上传完成,这通常是网络连接中断造成的,rclone 不会把它报告为错误。此后的备份只存在于虚拟机的缓冲区中。网络恢复后,上传会自动继续(2026 年 10 月 28 日那次在 80 秒内恢复);如果没有恢复,请重启虚拟机(prepare-shutdown,limactl start)以丢弃失效的连接。", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil 没有响应,在状态未知时不会重启虚拟机。", + ] +} diff --git a/mac-app/Sources/CloudMachineCore/L10nTranslations+zh-Hant.swift b/mac-app/Sources/CloudMachineCore/L10nTranslations+zh-Hant.swift new file mode 100644 index 0000000..79d534b --- /dev/null +++ b/mac-app/Sources/CloudMachineCore/L10nTranslations+zh-Hant.swift @@ -0,0 +1,951 @@ +// Traditional Chinese translations, keyed by the English text passed to `L10n.tr`. +extension L10nTranslations { + static let zhHant: [String: String] = [ + "Space limit: %@": + "空間上限: %@", + " Time Machine quota not set to match - run: %@": + " Time Machine 配額尚未對應設定,請執行:%@", + "Sets how much of Google Drive this Mac may use, and prints the Time Machine quota command.": + "設定這台 Mac 可使用多少 Google Drive 空間,並輸出 Time Machine 配額指令。", + "Limit in GB.": + "上限,單位為 GB。", + "Limit for this Mac: %@ GB.": + "這台 Mac 的上限:%@ GB。", + "Now set the Time Machine quota (needs an administrator password):": + "現在設定 Time Machine 配額(需要管理員密碼):", + "CloudMachine - verification, Google Drive setup and installation. Called by launchd on a schedule, or by hand from Terminal.": + "CloudMachine:檢查、Google Drive 設定與安裝。由 launchd 依排程呼叫,或在終端機中手動執行。", + "Connects to Google Drive through rclone (OAuth in the browser) and creates this machine's folder.": + "透過 rclone 連接 Google Drive(在瀏覽器中進行 OAuth 授權),並為這台虛擬機器建立資料夾。", + "Overwrite the existing remote. RISKY: replaces the token and permissions.": + "覆寫現有的 remote。有風險:會取代權杖與權限。", + "Packs build/CloudMachine.app into build/CloudMachine-.dmg.": + "將 build/CloudMachine.app 打包成 build/CloudMachine-.dmg。", + "ERROR: %@ is missing - run 'cloudmachine-agent build-app' first": + "錯誤:找不到 %@,請先執行 'cloudmachine-agent build-app'", + "==> Preparing the staging folder": + "==> 正在準備暫存資料夾", + "==> Creating %@": + "==> 正在建立 %@", + "ERROR: hdiutil exited with code %@.": + "錯誤:hdiutil 以代碼 %@ 結束。", + "==> Done: %@": + "==> 完成:%@", + "On first launch (the app is not signed with an Apple Developer account):": + "首次開啟時(此 App 未使用 Apple Developer 帳號簽署):", + "1. Open %@ and drag CloudMachine.app to Applications.": + "1. 開啟 %@,並將 CloudMachine.app 拖到「應用程式」資料夾。", + "2. In Finder, RIGHT-click CloudMachine.app -> Open -> Open\n (a plain double-click shows the Gatekeeper block \"unidentified developer\").": + "2. 在 Finder 中,按住 Control 鍵按一下(或按右鍵)CloudMachine.app -> 打開 -> 打開\n (直接按兩下會顯示 Gatekeeper 的「未識別的開發者」攔截提示)。", + "3. Later launches work normally, with a double-click.": + "3. 之後即可正常按兩下開啟。", + "Builds CloudMachine.app (Release) - GUI + cloudmachine-agent in Contents/MacOS/, plus launchd/, vm/ and config/ as Resources.": + "建置 CloudMachine.app(Release):圖形介面與 cloudmachine-agent 位於 Contents/MacOS/,launchd/、vm/ 和 config/ 則作為資源一併打包。", + "Binaries for Apple Silicon and Intel at once (how CI builds a release; unnecessary locally).": + "同時建置 Apple 晶片與 Intel 版本的二進位檔(CI 發行版本的方式;本機不需要)。", + "==> Building CloudMachineApp + cloudmachine-agent (release) - version %@ (%@)": + "==> 正在建置 CloudMachineApp + cloudmachine-agent(release)- 版本 %@(%@)", + "ERROR: swift build exited with code %@.": + "錯誤:swift build 以代碼 %@ 結束。", + "ERROR: swift build --show-bin-path did not report the binaries directory.": + "錯誤:swift build --show-bin-path 未回報二進位檔所在的目錄。", + "ERROR: no built binary found at %@": + "錯誤:在 %@ 找不到已建置的二進位檔", + "==> Assembling the .app bundle in %@": + "==> 正在 %@ 中組裝 .app 套件", + "==> WARNING: you are building from a DIRTY tree - the version will not point to a commit.": + "==> 警告:目前是從有未提交變更的工作樹建置,此版本無法對應到某次提交。", + "ERROR: Resources/AppIcon.icns is missing - generate it: swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns": + "錯誤:找不到 Resources/AppIcon.icns,請產生:swift Resources/icon-gen/generate_icon.swift Resources/AppIcon.iconset && iconutil -c icns Resources/AppIcon.iconset -o Resources/AppIcon.icns", + "==> Signing with the local certificate '%@' (Full Disk Access will survive later rebuilds)": + "==> 正在使用本機憑證 '%@' 簽署(之後重新建置時,「完整磁碟取用權限」仍會保留)", + "==> Signing ad-hoc (no Apple Developer account) - run 'cloudmachine-agent setup-signing-cert' once so that TCC permissions survive later rebuilds": + "==> 正在進行臨時簽署(ad-hoc,沒有 Apple Developer 帳號):請先執行一次 'cloudmachine-agent setup-signing-cert',這樣之後重新建置時 TCC 權限才會保留", + "ERROR: codesign exited with code %@.": + "錯誤:codesign 以代碼 %@ 結束。", + "Next step: %@": + "下一步:%@", + "Creates a local self-signed certificate so that Full Disk Access survives later rebuilds of the app.": + "建立本機自行簽署的憑證,讓「完整磁碟取用權限」在之後重新建置 App 時仍能保留。", + "Certificate '%@' already exists in %@, nothing to do.": + "憑證 '%@' 已存在於 %@,不需要處理。", + "==> Generating the key and self-signed certificate '%@'...": + "==> 正在產生金鑰與自行簽署的憑證 '%@'...", + "ERROR: openssl req exited with code %@.": + "錯誤:openssl req 以代碼 %@ 結束。", + "ERROR: openssl pkcs12 exited with code %@.": + "錯誤:openssl pkcs12 以代碼 %@ 結束。", + "==> Importing the certificate into %@ (pre-authorizing /usr/bin/codesign, so it does not ask for the keychain password every time)...": + "==> 正在將憑證匯入 %@(已預先授權 /usr/bin/codesign,因此不會每次都詢問鑰匙圈密碼)...", + "ERROR: security import exited with code %@.": + "錯誤:security import 以代碼 %@ 結束。", + "==> Trusting the certificate ONLY for code signing...": + "==> 正在將此憑證設為僅信任用於程式碼簽署...", + "ERROR: security add-trusted-cert exited with code %@.": + "錯誤:security add-trusted-cert 以代碼 %@ 結束。", + "Done. Certificate '%@' is now available to codesign.": + "完成。憑證 '%@' 現在可供 codesign 使用。", + "The next 'cloudmachine-agent build-app' will use it automatically instead of an ad-hoc signature.": + "下次執行 'cloudmachine-agent build-app' 時,會自動使用它,而不是臨時簽署。", + "After THAT ONE rebuild, grant Full Disk Access one last time - later\nrebuilds will no longer reset it, as long as you sign with the same certificate.": + "在那一次重新建置之後,請再授予一次「完整磁碟取用權限」。\n只要使用同一個憑證簽署,之後重新建置就不會再重設該權限。", + "Checks whether the hourly cycle STILL works (date of the last SUCCESSFUL backup) and reports failures.": + "檢查每小時的備份週期是否仍正常運作(最近一次成功備份的日期),並回報故障。", + "After this many hours without a successful backup we consider the cycle broken.": + "超過這麼多小時沒有成功備份,就視為備份週期已中斷。", + "Only print the state, without a system notification.": + "只輸出狀態,不發送系統通知。", + "A different Time Machine preferences file - to test the watchdog on a known sample.": + "使用另一個 Time Machine 偏好設定檔,以便用已知範例測試備份監測。", + "Last successful backup: %@": + "最近一次成功備份:%@", + "Last successful backup: NONE": + "最近一次成功備份:無", + "Last attempt: %@": + "最近一次嘗試: %@", + "WAITING (system startup): %@": + "等待中(系統啟動):%@", + "Backup cycle: OK": + "備份週期:正常", + "FAILURE: %@": + "故障:%@", + " %@": + " %@", + "Check the state: %@": + "查看狀態: %@", + "Preparing for restart": + "正在準備重新啟動", + "Prepare for restart": + "準備重新啟動", + "Prepare": + "準備", + "==> WARNING: git rev-list failed (%@) - using the date as the build number.": + "==> 警告:git rev-list 失敗(%@),改用日期作為建置編號。", + "Agents: %@": + "代理程式: %@", + "CANNOT START: %@ - open CloudMachine or run backup-health to reload them": + "無法啟動:%@,請開啟 CloudMachine 或執行 backup-health 重新載入", + "Reloaded agents that could not start: %@": + "已重新載入無法啟動的代理程式:%@", + "Drive folder: %@": + "Drive 資料夾: %@", + "Name of this Mac's folder on Google Drive (default: derived from the computer name). Set once; it cannot be changed later.": + "這台 Mac 在 Google Drive 上的資料夾名稱(預設:依電腦名稱產生)。只能設定一次,之後無法更改。", + "Backup watchdog: %@": + "備份監測: %@", + "Prints the version, the build number and the commit this binary was built from.": + "輸出版本、建置編號,以及建置此二進位檔所用的提交。", + "Only one line, without a description.": + "只輸出一行,不含說明。", + "Build from the working tree (outside a bundle) - no version data.": + "從工作樹建置(不在 App 套件內),沒有版本資料。", + "Version: %@": + "版本:%@", + "Build: %@": + "建置:%@", + "Commit: %@": + "提交:%@", + "WARNING: built from a DIRTY tree - the binary contains code that\n is in no commit. The commit number does NOT describe\n what actually runs.": + "警告:此版本是從有未提交變更的工作樹建置的,\n 其中包含不在任何提交中的程式碼。\n 提交編號無法說明實際執行的是什麼。", + "Saving the space limit": + "正在儲存空間上限", + "Measuring usage on Google Drive": + "正在測量 Google Drive 用量", + "Google Drive did not answer - try again later.": + "Google Drive 沒有回應,請稍後再試。", + "Measured.": + "已測量。", + "Space limit for this Mac": + "這台 Mac 的空間上限", + "Used on Google Drive": + "Google Drive 已用空間", + "Measured %@. The watchdog measures again every few hours.": + "已於 %@ 測量。備份監測每隔幾小時會再測量一次。", + "Limit (GB)": + "上限(GB)", + "Save": + "儲存", + "Measure now": + "立即測量", + "Time Machine quota: %@ GB (70%% of the limit - the copy on Drive is about a third larger than the backup inside it). Time Machine deletes the oldest backups to stay within it.": + "Time Machine 配額:%@ GB(上限的 70%%,因為 Drive 上的副本比其中的備份大了約三分之一)。Time Machine 會刪除最舊的備份,以維持在配額之內。", + "Set the Time Machine quota: run this in Terminal (needs sudo)": + "設定 Time Machine 配額:在終端機中執行以下指令(需要 sudo)", + "Connect Google Drive: run this in Terminal and approve in the browser": + "連接 Google Drive:在終端機中執行以下指令,並在瀏覽器中核准", + "Grant Full Disk Access to CloudMachine, so it can tell whether backups complete": + "為 CloudMachine 授予「完整磁碟取用權限」,這樣它才能判斷備份是否完成", + "Folder on Google Drive": + "Google Drive 上的資料夾", + "One folder per Mac. Set once - it cannot be changed after connecting.": + "每台 Mac 一個資料夾。只能設定一次,連接後無法更改。", + "Use lowercase letters, digits and dashes.": + "請使用小寫字母、數字與連字號。", + "Install rclone": + "安裝 rclone", + "Open System Settings": + "打開系統設定", + "Install agents": + "安裝代理程式", + "not checked": + "尚未檢查", + "none at all": + "完全沒有", + "%@ ago": + "%@前", + "Missing: %@": + "缺少:%@", + "Google Drive not connected": + "尚未連接 Google Drive", + "Time Machine does not point to CloudMachine": + "Time Machine 未指向 CloudMachine", + "UNKNOWN whether Time Machine points to CloudMachine - tmutil did not answer": + "無法確定 Time Machine 是否指向 CloudMachine,tmutil 沒有回應", + "Backup in progress": + "正在備份", + "Unknown when the last backup was made": + "不知道上次備份是什麼時候", + "There is no completed backup at all": + "完全沒有已完成的備份", + "No completed backup for %@": + "已有 %@ 沒有完成的備份", + "Ready": + "就緒", + "Not saved: %@": + "未儲存:%@", + "Installing rclone": + "正在安裝 rclone", + "Installing launchd agents": + "正在安裝 launchd 代理程式", + "Starting backup": + "正在開始備份", + "Backup started.": + "備份已開始。", + "Could not start the backup.": + "無法開始備份。", + "Stopping backup": + "正在停止備份", + "Backup stopped.": + "備份已停止。", + "Could not stop the backup.": + "無法停止備份。", + "Could not prepare the AppleScript.": + "無法準備 AppleScript。", + "Unknown authorization error.": + "未知的授權錯誤。", + "Waiting to upload": + "等待上傳", + "%@ files": + "%@ 個檔案", + "nothing": + "無", + "Back up now": + "立即備份", + "Stop backup": + "停止備份", + "Open CloudMachine": + "打開 CloudMachine", + "Quit": + "結束", + "Healthy": + "正常", + "Attention": + "需要注意", + "Refreshed %@": + "已於 %@ 重新整理", + "System Status": + "系統狀態", + "Action needed": + "需要處理", + "not measured": + "尚未測量", + "rclone did not answer": + "rclone 沒有回應", + "Backup in Progress": + "正在備份", + "Files processed": + "已處理的檔案", + "Write speed": + "寫入速度", + "Operation phase": + "作業階段", + "Required Setup Steps": + "必要的設定步驟", + "Copy": + "拷貝", + "Last completed backup": + "最近一次完成的備份", + "Last backup watchdog run": + "備份監測最近一次執行", + "not read": + "尚未讀取", + "Everything uploaded": + "已全部上傳", + "File upload errors": + "檔案上傳錯誤", + "Google Drive Credentials (OAuth 2.0)": + "Google Drive 認證資料(OAuth 2.0)", + "Keychain OK": + "鑰匙圈正常", + "No custom keys": + "沒有自訂金鑰", + "Paste client_id...": + "貼上 client_id...", + "Paste client_secret...": + "貼上 client_secret...", + "Save securely in the Keychain": + "安全地存入鑰匙圈", + "Refresh": + "重新整理", + "Overview": + "總覽", + "Backups": + "備份", + "Storage": + "儲存空間", + "Settings": + "設定", + "Current status: %@": + "目前狀態:%@", + "Does not point to CloudMachine": + "未指向 CloudMachine", + "tmutil did not answer": + "tmutil 沒有回應", + "Backing up: %@ of %@": + "正在備份:%@ / %@", + "%@ of %@": + "%@ / %@", + "Copied": + "已拷貝", + "No backup is running": + "沒有進行中的備份", + "Time Machine starts the next one on its own schedule.": + "Time Machine 會依自己的排程開始下一次備份。", + "Backup cycle": + "備份週期", + "%@ GiB": + "%@ GiB", + "%@ GiB in %@ bands, %@ uploading": + "%@ GiB,共 %@ 個分塊,正在上傳 %@ 個", + "%@ bands": + "%@ 個分塊", + "%@ fragments abandoned - only in the machine": + "%@ 個片段已放棄,僅存在於虛擬機器中", + "127.0.0.1:5572 answers on the Mac: Lima forwards the machine's rclone remote control, which has no password. Any web page open in a browser can send it commands - including deleting the backup on Google Drive. Add the portForwards rule from vm/cmsmb.yaml to the machine and restart it (see vm/README.md).": + "127.0.0.1:5572 在這台 Mac 上有回應:Lima 轉送了虛擬機器的 rclone 遠端控制,而它沒有密碼。瀏覽器中開啟的任何網頁都可以對它傳送指令,包括刪除 Google Drive 上的備份。請將 vm/cmsmb.yaml 中的 portForwards 規則加到虛擬機器,並重新啟動它(請參閱 vm/README.md)。", + "A service in the CloudMachine machine is not running": + "CloudMachine 虛擬機器中的某項服務沒有執行", + "Address": + "位址", + "Agent installation INCOMPLETE - %@ of %@ did not go in:\n%@\n%@\nEvery missing agent is a function that has silently stopped working (vm-guard watches the machine's buffer, backup-health reports failures). Fix the cause and repeat the installation.": + "代理程式安裝不完整:%@ / %@ 未能裝入:\n%@\n%@\n每個缺少的代理程式,都代表某項功能已悄悄停止運作(vm-guard 監看虛擬機器的緩衝區,backup-health 回報故障)。請排除原因後重新安裝。", + "All running": + "全部執行中", + "Also install the launchd agents (same as install-launchd).": + "同時安裝 launchd 代理程式(與 install-launchd 相同)。", + "At most this many minutes of waiting for the upload.": + "等待上傳的時間最多為這麼多分鐘。", + "At the limit every new band fails with EMFILE and the backup stops. Check: cloudmachine-agent vm-status": + "達到上限時,每個新分塊都會因 EMFILE 而失敗,備份隨之停止。檢查:cloudmachine-agent vm-status", + "Cache on the machine's disk": + "虛擬機器磁碟上的快取", + "Connected to Google Drive, but could not create the folder '%@' - without it the machine has nowhere to keep the backup. Check the account permissions and try again.": + "已連接到 Google Drive,但無法建立資料夾 '%@',沒有它虛擬機器就沒有地方存放備份。請檢查帳號權限後再試一次。", + "Convert the image": + "轉換映像檔", + "Converting the image to 32 MB bands": + "正在將映像檔轉換為 32 MB 分塊", + "Could not check with the current connection whether the backup is on Google Drive (%@), so remote '%@' was NOT replaced: without that answer the new sign-in cannot be checked against it.": + "無法透過目前的連線檢查備份是否在 Google Drive 上(%@),因此 remote '%@' 沒有被取代:沒有這個結果,就無法用它來核對新的登入。", + "Downloads the official rclone binary into ~/.cloudmachine/bin (Google sign-in and the machine's rclone.conf).": + "將官方 rclone 二進位檔下載到 ~/.cloudmachine/bin(Google 登入與虛擬機器的 rclone.conf)。", + "Free in the machine": + "虛擬機器可用空間", + "Free in the machine: %@": + "虛擬機器可用空間:%@", + "Generates and installs the launchd agents (app, backup watchdog, machine start, machine guard).": + "產生並安裝 launchd 代理程式(App、備份監測、虛擬機器啟動、虛擬機器守護)。", + "Install Lima, which runs the CloudMachine machine: run this in Terminal": + "安裝執行 CloudMachine 虛擬機器的 Lima:在終端機中執行以下指令", + "Install rclone (signs in to Google Drive for the machine)": + "安裝 rclone(為虛擬機器登入 Google Drive)", + "Install the background agents (machine start, buffer guard, backup watchdog)": + "安裝背景代理程式(虛擬機器啟動、緩衝區守護、備份監測)", + "Installs rclone through Homebrew - CloudMachine itself uses the one from install-rclone.": + "透過 Homebrew 安裝 rclone;CloudMachine 本身使用的是 install-rclone 安裝的那一個。", + "Info.plist, token and mapped/ of the backup image exist only on the machine's disk; without them the bands in %@ cannot be restored. The copy (tm-meta-sync, every 15 min) goes to %@. Check: cloudmachine-agent vm-status, then in the machine: journalctl -u tm-meta-sync": + "備份映像檔的 Info.plist、權杖與 mapped/ 只存在於虛擬機器的磁碟上;沒有它們,%@ 中的分塊就無法復原。副本(tm-meta-sync,每 15 分鐘一次)會傳送到 %@。檢查:cloudmachine-agent vm-status,然後在虛擬機器中執行:journalctl -u tm-meta-sync", + "Lima says the machine is running, but a command in it did not return. Without it nothing is known about Samba, rclone or the upload. Check: cloudmachine-agent vm-status": + "Lima 顯示虛擬機器正在執行,但其中的某個指令沒有傳回。沒有它,就無法得知 Samba、rclone 或上傳的情況。檢查:cloudmachine-agent vm-status", + "Machine": + "虛擬機器", + "Machine %@": + "虛擬機器 %@", + "Machine & Upload Status": + "虛擬機器與上傳狀態", + "Machine buffer": + "虛擬機器緩衝區", + "No Time Machine destination is the machine's share (smb://tm@
/CloudMachine) - backups are not being made there. The command is printed by: cloudmachine-agent vm-setup": + "沒有任何 Time Machine 備份目的地是虛擬機器的共享(smb://tm@
/CloudMachine),因此不會在那裡進行備份。該指令由以下指令輸出:cloudmachine-agent vm-setup", + "Not running: %@": + "未執行:%@", + "Not set up": + "尚未設定", + "Once it runs out, rclone stops uploading, the machine's buffer fills up and backups stop being made. At a growth of ~600 MB per hourly cycle that is about %@ days.": + "用盡後,rclone 會停止上傳,虛擬機器的緩衝區會被填滿,備份也會停止。依每小時週期增加約 600 MB 計算,大約還能支撐 %@ 天。", + "Or rclone.conf is missing: this Mac has already set up the CloudMachine machine, so it is not connected anew blindly. Restore the file from a backup (the machine keeps its own copy in %@). To connect anyway, create an empty file at the path `%@ config file` prints and run again - the existing folder is kept.": + "或是缺少 rclone.conf:這台 Mac 已經設定過 CloudMachine 虛擬機器,因此不會不加確認就重新連接。請從備份中復原該檔案(虛擬機器在 %@ 中保留有自己的副本)。若仍要連接,請在 `%@ config file` 輸出的路徑建立一個空檔案,然後重新執行,現有資料夾會保留。", + "Point Time Machine at the machine: run this in Terminal (needs sudo; Copy includes the password)": + "讓 Time Machine 指向虛擬機器:在終端機中執行以下指令(需要 sudo;「拷貝」會包含密碼)", + "Points to the machine": + "指向虛擬機器", + "Prepares for a restart: stops the backup, waits a while for the upload, then stops the machine cleanly.": + "為重新啟動做準備:停止備份,等待一段時間讓上傳完成,然後正常關閉虛擬機器。", + "Reading the Time Machine destination did not return within %@ s. That is how tmutil behaves when its destination hangs.": + "讀取 Time Machine 備份目的地未在 %@ 秒內傳回。備份目的地卡住時,tmutil 就是這樣的表現。", + "Remote '%@' was NOT replaced. The new sign-in gets the 'drive.file' scope, which sees only files created under its own client_id. The existing backup was most likely created by the current connection and would become invisible to it. Before anything is written, the new token is checked against the existing backup, and the replacement is abandoned if it cannot see it. The machine keeps its own copy of the configuration until vm-setup --replace-rclone-config. To go ahead, run again with --replace-existing --accept-scope-change.": + "remote '%@' 沒有被取代。新的登入會取得 'drive.file' 權限範圍,只能看到由它自己的 client_id 建立的檔案。現有備份很可能是由目前的連線建立的,會對它不可見。在寫入任何內容之前,會先用現有備份核對新權杖,如果它看不到備份,就放棄取代。在執行 vm-setup --replace-rclone-config 之前,虛擬機器會保留自己的那份設定副本。若要繼續,請加上 --replace-existing --accept-scope-change 重新執行。", + "Remote control: OPEN on the Mac at 127.0.0.1:5572 - any web page can send rclone commands; see vm/README.md (portForwards)": + "遠端控制: 在 Mac 上開放,位址為 127.0.0.1:5572,任何網頁都可以傳送 rclone 指令;請參閱 vm/README.md(portForwards)", + "Running": + "執行中", + "Samba, rclone or punchfs in the machine is not active, so Time Machine has nowhere to write or the bands do not reach Google Drive. Check: cloudmachine-agent vm-status": + "虛擬機器中的 Samba、rclone 或 punchfs 未處於作用中,因此 Time Machine 無處可寫入,或分塊無法送到 Google Drive。檢查:cloudmachine-agent vm-status", + "Service %@": + "服務 %@", + "Services": + "服務", + "Set up the CloudMachine machine (the first time it downloads Ubuntu - several minutes)": + "設定 CloudMachine 虛擬機器(首次會下載 Ubuntu,需要幾分鐘)", + "Set up the CloudMachine machine again, so it prints the Time Machine command": + "重新設定 CloudMachine 虛擬機器,以輸出 Time Machine 指令", + "Set up the machine": + "設定虛擬機器", + "Setting up the CloudMachine machine": + "正在設定 CloudMachine 虛擬機器", + "Start the CloudMachine machine": + "啟動 CloudMachine 虛擬機器", + "Start the machine": + "啟動虛擬機器", + "Starting the CloudMachine machine": + "正在啟動 CloudMachine 虛擬機器", + "Still to upload: %@ GiB": + "仍待上傳:%@ GiB", + "Stopping the Time Machine backup...": + "正在停止 Time Machine 備份...", + "Stopping the machine %@...": + "正在停止虛擬機器 %@...", + "The CloudMachine machine does not answer": + "CloudMachine 虛擬機器沒有回應", + "The CloudMachine machine is not running": + "CloudMachine 虛擬機器未執行", + "The CloudMachine machine is not set up yet": + "CloudMachine 虛擬機器尚未設定", + "The CloudMachine machine is stopped": + "CloudMachine 虛擬機器已停止", + "The backup is stopped, the upload gets up to 30 minutes, then the machine shuts down cleanly. It starts again at the next login.": + "備份會停止,上傳最多有 30 分鐘的時間,然後虛擬機器會正常關閉。下次登入時它會再次啟動。", + "The machine %@ is not running - nothing to prepare.": + "虛擬機器 %@ 未執行,不需要準備。", + "The machine is stopped and everything reached Google Drive. The Mac can be restarted; the machine starts again at login.": + "虛擬機器已停止,所有內容都已送到 Google Drive。可以重新啟動 Mac;虛擬機器會在登入時再次啟動。", + "The machine is stopped. %@ GiB had not reached Google Drive yet - it is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "虛擬機器已停止。有 %@ GiB 尚未送到 Google Drive,它們保留在虛擬機器的緩衝區中,會在下次啟動後上傳。可以重新啟動 Mac。", + "The machine is stopped. rclone did not say how much was still to upload; what was not uploaded is kept in the machine's buffer and uploaded after the next start. The Mac can be restarted.": + "虛擬機器已停止。rclone 沒有說明還有多少內容待上傳;未上傳的內容保留在虛擬機器的緩衝區中,會在下次啟動後上傳。可以重新啟動 Mac。", + "The machine's disk is a file on this disk and grows as the upload buffer fills. With no space left the machine cannot write the buffer, and Time Machine's local snapshots have nowhere to go either.": + "虛擬機器的磁碟是這個磁碟上的一個檔案,會隨著上傳緩衝區被填滿而變大。沒有剩餘空間時,虛擬機器無法寫入緩衝區,Time Machine 的本機快照也無處可放。", + "The image's metadata has never been copied to Drive": + "映像檔的中繼資料從未拷貝到 Drive", + "The image's metadata was last copied to Drive %@ ago": + "映像檔的中繼資料已於 %@前拷貝到 Drive", + "The machine's disk is running out of space (%@ GB)": + "虛擬機器的磁碟空間即將用盡(%@ GB)", + "The new sign-in does NOT see the existing backup (%@), so remote '%@' was NOT replaced and rclone.conf is unchanged. Keep the current connection, or sign in with the credential (client_id) that created the backup.": + "新的登入看不到現有備份(%@),因此 remote '%@' 沒有被取代,rclone.conf 維持不變。請保留目前的連線,或使用建立該備份的認證資料(client_id)登入。", + "The upload buffer lives on this disk. The guard pauses Time Machine before it fills; if the upload does not catch up, backups stay paused.": + "上傳緩衝區位於這個磁碟上。守護程式會在緩衝區填滿之前暫停 Time Machine;如果上傳一直追不上,備份將持續暫停。", + "These bands exist only in the machine's buffer. The backup on Google Drive is INCOMPLETE and may not open.": + "這些分塊只存在於虛擬機器的緩衝區中。Google Drive 上的備份不完整,可能無法打開。", + "Time Machine backs up to the machine, so without it no backup is made. Start it: limactl start %@ (or the Start button in the app).": + "Time Machine 備份到虛擬機器,因此虛擬機器沒有執行就無法備份。啟動它:limactl start %@(或使用 App 中的「啟動虛擬機器」按鈕)。", + "Time Machine did not stop its backup within 2 minutes (or tmutil did not answer) - the machine was NOT stopped. Try again in a moment.": + "Time Machine 沒有在 2 分鐘內停止備份(或 tmutil 沒有回應),虛擬機器沒有被停止。請稍後再試一次。", + "Time Machine has created its image: stop the backup, then convert the image to 32 MB bands": + "Time Machine 已建立映像檔:停止備份,然後將映像檔轉換為 32 MB 分塊", + "To upload": + "待上傳", + "Unknown whether the CloudMachine machine is running": + "無法確定 CloudMachine 虛擬機器是否在執行", + "Waiting for the upload to Google Drive (at most %@ min)...": + "正在等待上傳到 Google Drive(最多 %@ 分鐘)...", + "With --replace-existing: confirms that the new sign-in (scope 'drive.file') may not see the existing backup. The new token is still checked against the backup first.": + "與 --replace-existing 一起使用:確認新的登入(權限範圍 'drive.file')可能看不到現有備份。仍會先用該備份核對新權杖。", + "Without it there is no way to check whether anything reached the Drive - the machine's guard is blind then.": + "沒有它,就無法檢查是否有內容送到 Drive,虛擬機器的守護程式將處於盲區。", + "limactl did not answer": + "limactl 沒有回應", + "limactl did not answer (or is not installed). That does not mean the machine is down - it means nobody has checked.": + "limactl 沒有回應(或未安裝)。這並不表示虛擬機器已停止,只表示還沒有人檢查過。", + "limactl start failed: %@": + "limactl start 失敗:%@", + "limactl stop failed: %@": + "limactl stop 失敗:%@", + "punchfs is close to its open-file limit": + "punchfs 已接近其開啟檔案數上限", + "punchfs open files": + "punchfs 開啟的檔案", + "rclone's remote control is open on this Mac": + "rclone 的遠端控制在這台 Mac 上處於開放狀態", + "statfs('/System/Volumes/Data') returned an error, so nobody knows whether the machine's disk can still grow on this Mac.": + "statfs('/System/Volumes/Data') 傳回了錯誤,因此無法得知虛擬機器的磁碟在這台 Mac 上是否還能繼續增大。", + "Google Drive's daily upload limit stops the upload": + "Google Drive 的每日上傳上限使上傳停止", + "Google last refused an upload %@ ago (750 GB a day). Backups since then are only in the machine's buffer on this Mac. rclone retries every 5 min and resumes by itself when the limit passes; the guard pauses Time Machine if more than %@ GiB waits.": + "Google 在 %@前拒絕了一次上傳(每天 750 GB)。此後的備份只存在於這台 Mac 上虛擬機器的緩衝區中。rclone 每 5 分鐘重試一次,上限解除後會自動繼續;如果等待上傳的內容超過 %@ GiB,守護程式會暫停 Time Machine。", + "Usage on Google Drive is not being measured": + "未測量 Google Drive 的用量", + "The last measurement (%@ GB) is from %@, %@ ago - rclone size has not answered since. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "最近一次測量(%@ GB)是在 %@,即 %@前,此後 rclone size 一直沒有回應。在它回應之前,沒有任何機制監看 %@ GB 的上限:90%% 與 100%% 的警示都不會觸發。請檢查 vm-status,或在視窗中按一下「立即測量」。", + "rclone size has not answered even once. Until it does, nothing watches the %@ GB limit: the 90%% and 100%% alarms stay silent. Check vm-status, or press Measure now in the window.": + "rclone size 一次都沒有回應過。在它回應之前,沒有任何機制監看 %@ GB 的上限:90%% 與 100%% 的警示都不會觸發。請檢查 vm-status,或在視窗中按一下「立即測量」。", + "Saved in the Keychain. Connecting Google Drive (configure-remote) will use them.": + "已存入鑰匙圈。連接 Google Drive(configure-remote)時會使用它們。", + "Saved in the Keychain. The existing Google Drive connection keeps its old client_id, and on this Mac it should stay that way: a connection made with the new keys (the 'drive.file' scope) cannot see the backup created by the old one. Do not replace the connection here; the new keys are for a Mac that is not connected yet.": + "已存入鑰匙圈。現有的 Google Drive 連線仍使用舊的 client_id,在這台 Mac 上應維持如此:用新金鑰建立的連線('drive.file' 權限範圍)看不到由舊連線建立的備份。請不要在此處取代連線;新金鑰是留給尚未連接的 Mac 使用的。", + "it is not there for the new token": + "新權杖看不到它", + "Cancel": + "取消", + "ACTION NEEDED": + "需要處理", + "WILL PASS BY ITSELF — DO NOTHING": + "會自行恢復,無需操作", + "UNKNOWN — CHECK AGAIN SHORTLY": + "情況未知,請稍後再查看", + "ALL GOOD": + "一切正常", + "Upload is not working": + "上傳無法進行", + "Upload stopped — no space left on Google Drive": + "上傳已停止:Google Drive 上沒有剩餘空間", + "%@ backup fragments not uploaded": + "%@ 個備份片段未上傳", + "Upload cannot keep up with writes": + "上傳跟不上寫入速度", + "Upload paused — Google daily limit": + "上傳已暫停:Google 每日上限", + "Uploading to Google Drive — %@ queued": + "正在上傳到 Google Drive:%@ 個在佇列中", + "Everything uploaded to Google Drive": + "已全部上傳到 Google Drive", + "Unknown what is waiting in the queue": + "不知道佇列中還有什麼在等待", + "There is no connection to Google Drive, so backups are only made on this Mac. If this does not pass by itself within a few minutes, check the network and the connection to Drive.": + "與 Google Drive 之間沒有連線,因此備份只在這台 Mac 上進行。如果幾分鐘內沒有自行恢復,請檢查網路以及與 Drive 的連線。", + "There is no space left on Google Drive. This will NOT pass by itself — you need to free up space on Drive. Until then Time Machine is paused, so that it does not fill up this Mac's disk.": + "Google Drive 上沒有剩餘空間。這不會自行恢復:你需要在 Drive 上釋出空間。在此之前,Time Machine 會保持暫停,以免占滿這台 Mac 的磁碟。", + "%@ backup fragments could not be uploaded and rclone stopped trying. These fragments exist only on this Mac, so the backup on Drive is incomplete. This needs checking.": + "%@ 個備份片段無法上傳,rclone 已停止重試。這些片段只存在於這台 Mac 上,所以 Drive 上的備份不完整。需要檢查。", + "Time Machine is writing faster than the upload goes, and the buffer has filled up. The backup will be paused until the upload catches up — this is a safeguard against filling up the disk, not a failure.": + "Time Machine 的寫入速度比上傳速度快,緩衝區已滿。備份會暫停,直到上傳追上來為止。這是為了避免磁碟被占滿而設的保護機制,並非故障。", + "Google accepts 750 GB per day and that limit has been used up. There is nothing to do: the limit renews by itself, usually within a few hours. Time Machine backups are made normally in the meantime and wait in the buffer — they will be uploaded as soon as Google starts accepting again.": + "Google 每天接受 750 GB,這個上限已用完。不需要任何操作:上限會自行恢復,通常在幾個小時內。在此期間 Time Machine 會正常備份,資料會在緩衝區中等待,Google 重新接受後就會立即上傳。", + "%@ backup fragments are queued and on their way to Drive.": + "%@ 個備份片段在佇列中,正在傳送到 Drive。", + "Nothing is waiting in the queue — the backup on Google Drive is complete.": + "佇列中沒有等待的內容,Google Drive 上的備份是完整的。", + "rclone did not answer the question about the queue, so it is unknown how many backups are still waiting to be uploaded. This does not mean something broke — under load the answer can be late. It only means that right now nobody knows. If it persists, the backup cycle check will report it.": + "rclone 沒有回答關於佇列的詢問,因此不知道還有多少備份在等待上傳。這並不表示出了問題,負載較高時回應可能會延遲。這只表示目前沒有人知道。如果持續如此,備份週期檢查會回報出來。", + "unknown error": + "未知的錯誤", + "rclone lsf ended with an error": + "rclone lsf 以錯誤結束", + "This Mac is close to its space limit on Google Drive": + "這台 Mac 的 Google Drive 空間已接近上限", + "%@ GB of %@ GB used. Time Machine deletes the oldest backups to stay within its quota; check that the quota is set (vm-status).": + "已用 %@ GB,上限 %@ GB。Time Machine 會刪除最舊的備份,以維持在配額之內;請確認已設定配額(vm-status)。", + "This Mac is over its space limit on Google Drive": + "這台 Mac 的 Google Drive 空間已超出上限", + "%@ GB of %@ GB used. Set the Time Machine quota (command in the app window or vm-status), or raise the limit.": + "已用 %@ GB,上限 %@ GB。請設定 Time Machine 配額(指令見 App 視窗或 vm-status),或提高上限。", + "not set": + "未設定", + "%@ GB - usage not measured yet": + "%@ GB,用量尚未測量", + "%@ of %@ GB used (%@%%)": + "已用 %@ / %@ GB(%@%%)", + "The limit must be a whole number of GB above zero.": + "上限必須是大於零的整數 GB。", + "machines.json cannot be read, so it was not overwritten. Fix or remove it first.": + "無法讀取 machines.json,因此沒有覆寫它。請先修復或刪除它。", + "'%@' is not a valid folder name: use lowercase letters, digits and dashes.": + "'%@' 不是有效的資料夾名稱:請使用小寫字母、數字與連字號。", + "This Mac already backs up to folder '%@'. Switching to '%@' would start a new, empty backup and orphan the existing one, so nothing was changed.": + "這台 Mac 已備份到資料夾 '%@'。改用 '%@' 會開始一個新的空備份,並使現有備份成為孤立資料,因此沒有做任何變更。", + "This Mac already has a CloudMachine installation, whose backup is in folder '%@'. Switching to '%@' would orphan it, so nothing was changed.": + "這台 Mac 已安裝過 CloudMachine,其備份位於資料夾 '%@'。改用 '%@' 會使它成為孤立資料,因此沒有做任何變更。", + "Could not save the folder name to %@: %@": + "無法將資料夾名稱儲存到 %@:%@", + "Homebrew is not installed. Install it manually: https://brew.sh": + "尚未安裝 Homebrew。請手動安裝:https://brew.sh", + "Installing rclone failed: %@": + "安裝 rclone 失敗:%@", + "Installed rclone.": + "已安裝 rclone。", + "Own Google credentials: set.": + "自有的 Google 認證資料:已設定。", + "INCOMPLETE: %@ is missing - rclone will use rclone's shared client_id anyway.": + "不完整:缺少 %@,rclone 仍會使用 rclone 的共用 client_id。", + "No own credentials - rclone uses the shared client_id, rate-limited jointly and being retired in 2026.": + "沒有自有的認證資料:rclone 使用共用的 client_id,該 client_id 由所有使用者共同限速,並將在 2026 年停用。", + "Empty value - not saving.": + "值為空,不儲存。", + "Keychain refused: %@": + "鑰匙圈拒絕了要求:%@", + "DIRTY-TREE": + "未提交變更", + "Cannot create the working directory: %@": + "無法建立工作目錄:%@", + "Could not read the rclone version number.": + "無法讀取 rclone 的版本號碼。", + "Could not download %@.": + "無法下載 %@。", + "No entry for %@ in SHA256SUMS.": + "SHA256SUMS 中沒有 %@ 的項目。", + "Could not compute the checksum.": + "無法計算總和檢查碼。", + "SHA256 checksum does not match - NOT installing.\n expected: %@\n computed: %@": + "SHA256 總和檢查碼不符,不予安裝。\n 預期:%@\n 計算得到:%@", + "Could not unpack the archive.": + "無法解壓縮封存檔。", + "Could not install the binary: %@": + "無法安裝該二進位檔:%@", + "Installed rclone %@ in %@ (SHA256 checksum matches).": + "已將 rclone %@ 安裝到 %@(SHA256 總和檢查碼相符)。", + "%@ did not respond within the allotted time (the process was left orphaned in the background).": + "%@ 未在規定時間內回應(該程序已成為孤立程序留在背景)。", + "Cannot launch %@: %@": + "無法啟動 %@:%@", + "Remote '%@' already exists and was NOT touched.\nOverwriting it replaces the token and the permission scope; a credential with the 'drive.file' scope does not see files created by the previous one, so the existing backup becomes unreachable.\nIf you really want to replace it, first back up ~/.config/rclone/rclone.conf and run again with --replace-existing.": + "remote '%@' 已存在,沒有被更動。\n覆寫它會取代權杖與權限範圍;使用 'drive.file' 權限範圍的認證資料看不到由先前那個認證資料建立的檔案,因此現有備份將無法存取。\n如果確實要取代,請先備份 ~/.config/rclone/rclone.conf,然後加上 --replace-existing 重新執行。", + "Could not check whether remote '%@' already exists (rclone listremotes did not answer or failed), so nothing was changed. Run `%@ listremotes` to see the error, then try again.": + "無法檢查 remote '%@' 是否已存在(rclone listremotes 沒有回應或失敗),因此沒有做任何變更。請執行 `%@ listremotes` 查看錯誤,然後再試一次。", + "Could not check whether this Mac already has a CloudMachine installation (rclone did not answer), so no folder was chosen. Try again in a moment.": + "無法檢查這台 Mac 是否已安裝過 CloudMachine(rclone 沒有回應),因此沒有選擇資料夾。請稍後再試一次。", + "rclone authorize failed (%@). If that binary is missing, start with: cloudmachine-agent install-rclone.": + "rclone authorize 失敗(%@)。如果缺少該二進位檔,請先執行:cloudmachine-agent install-rclone。", + "Could not read the token from the output of rclone authorize.": + "無法從 rclone authorize 的輸出中讀取權杖。", + "rclone config create failed.": + "rclone config create 失敗。", + "Connected to Google Drive as remote '%@', folder %@.": + "已作為 remote '%@' 連接到 Google Drive,資料夾為 %@。", + "tmutil is not responding - unknown where the backup goes": + "tmutil 沒有回應,不知道備份存放在哪裡", + "No successful backup for %@": + "已有 %@ 沒有成功的備份", + "Last COMPLETED backup: %@. The cycle is hourly, so that is %@ missed runs.": + "最近一次完成的備份:%@。備份週期為每小時一次,因此已錯過 %@ 次執行。", + "There is NOT A SINGLE successful backup": + "沒有任何一次成功的備份", + "The Time Machine preferences contain no date of a completed backup for this destination.": + "Time Machine 偏好設定中沒有此備份目的地的已完成備份日期。", + "The last backup attempt did not end in a backup": + "最近一次備份嘗試沒有產生備份", + "The attempt at %@ is newer than the last successful backup at %@.": + "%@ 的嘗試比 %@ 的最近一次成功備份更新。", + "Time Machine reports an error in the last run (RESULT=%@)": + "Time Machine 回報上次執行出錯(RESULT=%@)", + "A non-zero RESULT in the Time Machine preferences means the run did not succeed.": + "Time Machine 偏好設定中的 RESULT 不為零,表示該次執行未成功。", + "rclone failed to upload %@ files": + "rclone 上傳 %@ 個檔案失敗", + "Buffer full of nothing but unsent data": + "緩衝區中全是尚未傳送的資料", + "rclone has nothing left to evict from the buffer - the upload cannot keep up or has stalled.": + "rclone 已沒有可從緩衝區中移出的內容,上傳跟不上或已停滯。", + "The rclone control interface is not responding": + "rclone 控制介面沒有回應", + "Google Drive is running out of space (%@ GB)": + "Google Drive 空間即將用盡(%@ GB)", + "The Mac's disk is running out of space (%@ GB)": + "Mac 的磁碟空間即將用盡(%@ GB)", + "Cannot read the Time Machine preferences": + "無法讀取 Time Machine 偏好設定", + "%@ is unreadable - most often Full Disk Access is missing. Without this file it is UNKNOWN when the last backup was made, so we treat it as a failure, not as the absence of a problem.": + "%@ 無法讀取,最常見的原因是缺少「完整磁碟取用權限」。沒有這個檔案,就無法得知上次備份的時間,所以我們把它視為故障,而不是沒有問題。", + "Cannot measure free space on the Mac's disk": + "無法測量 Mac 磁碟的可用空間", + "%@ days": + "%@ 天", + "CloudMachine: backup is not working": + "CloudMachine:備份未正常運作", + "unknown reason": + "原因不明", + "osascript did not show the notification (permissions or no graphical session)": + "osascript 沒有顯示通知(權限問題,或沒有圖形介面工作階段)", + "UNDELIVERED ALARM: %@": + "未送達的警示:%@", + "from %@, reason: %@": + "來自 %@,原因:%@", + "The system notification was not delivered - you will see this alarm ONLY here.": + "系統通知沒有送達,此警示只會顯示在這裡。", + "%@ (%@ ago)": + "%@(%@前)", + "%@ - marker from the FUTURE": + "%@:標記來自未來", + "%@ (%@ ago) - THE WATCHDOG MAY NOT BE RUNNING": + "%@(%@前):備份監測可能沒有在執行", + "NEVER - the watchdog has not recorded a single run": + "從未:備份監測沒有記錄過任何一次執行", + "Could not find the launchd/ directory with templates.": + "找不到包含範本的 launchd/ 目錄。", + "Could not find the compiled cloudmachine-agent binary.": + "找不到已編譯的 cloudmachine-agent 二進位檔。", + "ABORTED: could not put cloudmachine-agent in a stable location\n(%@) - most often a lack of space or permissions.\nNOT installing agents pointing at %@: that path\ndisappears on the next `swift build` or `git clean`, and backups stop\nwithout any visible signal.": + "已中止:無法將 cloudmachine-agent 放到固定位置\n(%@),最常見的原因是空間或權限不足。\n不會安裝指向 %@ 的代理程式:該路徑\n會在下次 `swift build` 或 `git clean` 時消失,備份將在\n沒有任何可見提示的情況下停止。", + "ABORTED: %@": + "已中止:%@", + "Could not list the templates in %@.": + "無法列出 %@ 中的範本。", + "could not read the template %@": + "無法讀取範本 %@", + "could not write %@ (lack of space or permissions)": + "無法寫入 %@(空間或權限不足)", + "launchctl load refused to load %@": + "launchctl load 拒絕載入 %@", + "NOT A SINGLE agent was loaded.": + "沒有載入任何一個代理程式。", + "Only these went in: %@.": + "只裝入了這些:%@。", + "Could not load any launchd agent.": + "無法載入任何 launchd 代理程式。", + "Installed agents: %@": + "已安裝的代理程式:%@", + " WARNING: close to the limit - new bands will fail with EMFILE": + " 警告:已接近上限,新的分塊將因 EMFILE 而失敗", + "%@/bands on Google Drive is not empty - it may hold another backup. NOT overwriting it; check it by hand.": + "Google Drive 上的 %@/bands 不是空的,其中可能有另一份備份。不會覆寫它,請手動檢查。", + "Address: %@": + "位址: %@", + "Already prepared (%@ exists) - nothing to do.": + "已經準備好(%@ 已存在),不需要處理。", + "Converts Time Machine's new, empty image in the machine to 32 MB bands and moves the bands to Google Drive.": + "將虛擬機器中 Time Machine 新建的空映像檔轉換為 32 MB 分塊,並將分塊移到 Google Drive。", + "Copy rclone.conf into the machine even if it already has one.": + "即使虛擬機器中已有 rclone.conf,也將其拷貝進去。", + "Copying the converted image into the machine failed: %@": + "將轉換後的映像檔拷貝到虛擬機器失敗:%@", + "Copying the image to the Mac failed: %@": + "將映像檔拷貝到 Mac 失敗:%@", + "Could not ask Lima about the machine: %@": + "無法向 Lima 詢問虛擬機器的情況:%@", + "Could not carry the Time Machine files over: %@": + "無法轉移 Time Machine 檔案:%@", + "Could not check the image in the machine.": + "無法檢查虛擬機器中的映像檔。", + "Could not copy the rclone configuration into the machine.": + "無法將 rclone 設定拷貝到虛擬機器。", + "Could not create %@ on Google Drive: %@": + "無法在 Google Drive 上建立 %@:%@", + "Could not create %@: %@": + "無法建立 %@:%@", + "Could not find the vm/ directory with the machine template.": + "找不到包含虛擬機器範本的 vm/ 目錄。", + "Could not read the image size.": + "無法讀取映像檔大小。", + "Could not set the SMB password of user %@ in the machine.": + "無法為虛擬機器中的使用者 %@ 設定 SMB 密碼。", + "Could not stop smbd in the machine.": + "無法停止虛擬機器中的 smbd。", + "Could not write %@ in the machine.": + "無法在虛擬機器中寫入 %@。", + "Could not write the password file %@.": + "無法寫入密碼檔 %@。", + "Creates or starts the CloudMachine machine (Lima), gives it rclone's configuration and an SMB password, and prints the Time Machine command.": + "建立或啟動 CloudMachine 虛擬機器(Lima),為它提供 rclone 設定與 SMB 密碼,並輸出 Time Machine 指令。", + "Creating the machine %@ (first start downloads Ubuntu and installs packages - several minutes)...": + "正在建立虛擬機器 %@(首次啟動會下載 Ubuntu 並安裝軟體套件,需要幾分鐘)...", + "Done: %@ has %@ MB bands on Google Drive; the original is kept in %@ in the machine. Start the backup: tmutil startbackup": + "完成:%@ 在 Google Drive 上有 %@ MB 的分塊;原始映像檔保存在虛擬機器的 %@ 中。開始備份:tmutil startbackup", + "exit code %@, no message": + "結束代碼 %@,沒有訊息", + "Image metadata: NEVER copied to %@ - check tm-meta-sync in the machine": + "映像檔中繼資料: 從未拷貝到 %@,請檢查虛擬機器中的 tm-meta-sync", + "Image metadata: copied %@ ago to %@": + "映像檔中繼資料: 已於 %@前拷貝到 %@", + "Image metadata: last copied %@ ago - OVERDUE (%@)": + "映像檔中繼資料: 上次拷貝在 %@前,已逾期(%@)", + "Image metadata: not copied yet - waits for vm-prepare-bundle": + "映像檔中繼資料: 尚未拷貝,等待 vm-prepare-bundle", + "Backup %@, paused by the guard %@: %@": + "備份 %@,守護程式暫停於 %@:%@", + "Free in machine: %@ GiB": + "虛擬機器可用空間:%@ GiB", + "fsck_apfs -n found problems: %@": + "fsck_apfs -n 發現問題:%@", + "Google Drive folder: %@": + "Google Drive 資料夾:%@", + "hdiutil attach of the converted image failed: %@": + "hdiutil attach 掛載轉換後的映像檔失敗:%@", + "hdiutil convert failed: %@": + "hdiutil convert 失敗:%@", + "Image name in the machine (default: from the computer name).": + "虛擬機器中的映像檔名稱(預設:依電腦名稱產生)。", + "Installing the converted image FAILED: %@\nsmbd is left STOPPED so Time Machine does not open a half-installed image. The original is in %@ in the machine.": + "安裝轉換後的映像檔失敗:%@\nsmbd 保持停止狀態,以免 Time Machine 打開只裝了一半的映像檔。原始映像檔在虛擬機器的 %@ 中。", + "limactl create failed: %@": + "limactl create 失敗:%@", + "limactl list failed: %@": + "limactl list 失敗:%@", + "limactl not found - install Lima: brew install lima": + "找不到 limactl,請安裝 Lima:brew install lima", + "limactl start failed: %@\nThe machine's own log: %@": + "limactl start 失敗:%@\n虛擬機器自己的記錄檔:%@", + "Machine %@ is running.": + "虛擬機器 %@ 正在執行。", + "Machine %@ was already running.": + "虛擬機器 %@ 已在執行。", + "Machine: %@ (%@)": + "虛擬機器: %@(%@)", + "Machine: %@": + "虛擬機器: %@", + "Machine: not created - run: cloudmachine-agent vm-setup": + "虛擬機器: 尚未建立,請執行:cloudmachine-agent vm-setup", + "no answer within the time limit": + "在時限內沒有回應", + "No image %@ in the machine.": + "虛擬機器中沒有映像檔 %@。", + "No image in the machine yet - point Time Machine at the share and let it create one first.": + "虛擬機器中還沒有映像檔,請先讓 Time Machine 指向該共享並建立一個。", + "No rclone configuration at %@ - connect Google Drive first (configure-remote).": + "在 %@ 沒有 rclone 設定,請先連接 Google Drive(configure-remote)。", + "no SMB destination": + "沒有 SMB 備份目的地", + "One check of the machine's upload buffer: pauses Time Machine when it fills, resumes what it paused.": + "對虛擬機器的上傳緩衝區做一次檢查:緩衝區填滿時暫停 Time Machine,並恢復它曾暫停的備份。", + "Packing the converted image failed: %@": + "打包轉換後的映像檔失敗:%@", + "Packing the image failed: %@": + "打包映像檔失敗:%@", + "No answer from the machine (rclone rc) - the guard would do nothing.": + "虛擬機器(rclone rc)沒有回應,守護程式將不會採取任何動作。", + "Only print what the guard would decide - for trying thresholds on a throwaway machine.": + "只輸出守護程式會做出的決定,用於在臨時虛擬機器上試驗門檻值。", + "Pause above this many GiB in the buffer.": + "緩衝區超過這麼多 GiB 時暫停。", + "Pause when the machine has less free than this, in GiB.": + "虛擬機器的可用空間少於這麼多 GiB 時暫停。", + "Point Time Machine at the machine (once, needs an administrator password):": + "讓 Time Machine 指向虛擬機器(只需一次,需要管理員密碼):", + "punchfs files: %@ open, limit %@": + "punchfs 檔案: 已開啟 %@ 個,上限 %@", + "rclone configuration already in the machine - kept (--replace-rclone-config replaces it).": + "虛擬機器中已有 rclone 設定,予以保留(--replace-rclone-config 可取代它)。", + "rclone configuration copied into the machine.": + "rclone 設定已拷貝到虛擬機器。", + "rclone-tm or punchfs is not running in the machine - see cloudmachine-agent vm-status.": + "虛擬機器中的 rclone-tm 或 punchfs 未執行,請參閱 cloudmachine-agent vm-status。", + "Resume below this many GiB (only a backup the guard paused).": + "低於這麼多 GiB 時恢復(僅限守護程式暫停的備份)。", + "Service %@: %@": + "服務 %@:%@", + "Several images in the machine (%@) - choose one with --bundle.": + "虛擬機器中有多個映像檔(%@),請用 --bundle 選擇一個。", + "Shows the machine: address, services, upload buffer, free space and the Time Machine destination.": + "顯示虛擬機器的情況:位址、服務、上傳緩衝區、可用空間與 Time Machine 備份目的地。", + "SMB password stored in %@ (mode 600).": + "SMB 密碼已儲存在 %@(權限 600)。", + "The converted image does not have %@-byte bands.": + "轉換後的映像檔的分塊不是 %@ 位元組。", + "The converted image has no APFS partition.": + "轉換後的映像檔沒有 APFS 分割區。", + "The image already takes %@ MB - this command converts only a new, empty image (under %@ MB).": + "映像檔已占用 %@ MB,此指令只轉換新建的空映像檔(小於 %@ MB)。", + "The image is encrypted - converting encrypted images is not supported.": + "映像檔已加密,不支援轉換加密的映像檔。", + "The image was not changed; smbd started again.": + "映像檔未被更改,smbd 已重新啟動。", + "The machine does not answer - is it running? cloudmachine-agent vm-status": + "虛擬機器沒有回應,它在執行嗎?cloudmachine-agent vm-status", + "The machine has no address on the vzNAT network.": + "虛擬機器在 vzNAT 網路上沒有位址。", + "The services in the machine did not start - check: cloudmachine-agent vm-status": + "虛擬機器中的服務沒有啟動,請檢查:cloudmachine-agent vm-status", + "Time Machine is backing up - stop it first: tmutil stopbackup": + "Time Machine 正在備份,請先停止:tmutil stopbackup", + "Time Machine: %@": + "Time Machine: %@", + "Time Machine: NOT pointing at the machine (%@)": + "Time Machine: 未指向虛擬機器(%@)", + "Time Machine: tmutil did not answer": + "Time Machine: tmutil 沒有回應", + "tmutil did not answer - not touching the image while its state is unknown.": + "tmutil 沒有回應,在映像檔狀態未知時不會更動映像檔。", + "unknown": + "未知", + "Unpacking the image failed: %@": + "解開映像檔失敗:%@", + "Still to upload: %@ GiB in %@ bands, uploading %@ (cache on disk %@ GiB)": + "仍待上傳: %@ GiB,共 %@ 個分塊,正在上傳 %@(磁碟快取 %@ GiB)", + "Excluded %@ (the machine and its upload buffer) from Time Machine.": + "已將 %@(虛擬機器及其上傳緩衝區)從 Time Machine 中排除。", + "WARNING: could not exclude %@ from Time Machine - run: tmutil addexclusion %@": + "警告:無法將 %@ 從 Time Machine 中排除,請執行:tmutil addexclusion %@", + "Upload buffer: no answer from rclone (rc %@)": + "上傳緩衝區: rclone 沒有回應(rc %@)", + "When Time Machine has created its empty image, stop the backup (tmutil stopbackup) and run: cloudmachine-agent vm-prepare-bundle": + "Time Machine 建立好空映像檔後,請停止備份(tmutil stopbackup)並執行:cloudmachine-agent vm-prepare-bundle", + "Unsent %@ GiB, free %@ GiB (pause above %@ GiB unsent or below %@ GiB free, resume below %@ GiB).": + "未傳送 %@ GiB,可用 %@ GiB(未傳送超過 %@ GiB 或可用低於 %@ GiB 時暫停,低於 %@ GiB 時恢復)。", + "Upload: Google's daily limit refused an upload %@ ago - rclone retries every 5 min and resumes by itself": + "上傳: Google 的每日上限在 %@前拒絕了一次上傳,rclone 每 5 分鐘重試一次,並會自動繼續", + "no": + "否", + "running": + "執行中", + "stopped": + "已停止", + "yes": + "是", + "%@\nThe previous template is in %@ - copy it back over lima.yaml and run limactl start %@.": + "%@\n先前的範本在 %@,請將它拷貝回 lima.yaml,然後執行 limactl start %@。", + "Could not read this app's machine template (limactl template copy).": + "無法讀取此 App 的虛擬機器範本(limactl template copy)。", + "Could not replace %@: %@": + "無法取代 %@:%@", + "Machine %@ already runs this app's template.": + "虛擬機器 %@ 已在使用此 App 的範本。", + "Machine %@ now runs this app's template; the previous one is in %@.": + "虛擬機器 %@ 現在使用此 App 的範本;先前的範本在 %@。", + "Moves the machine onto this app's template (two restarts, never during a backup).": + "將虛擬機器切換到此 App 的範本(會重新啟動兩次,絕不會在備份期間進行)。", + "No machine %@ - create it with: cloudmachine-agent vm-setup": + "沒有虛擬機器 %@,請用以下指令建立:cloudmachine-agent vm-setup", + "Template: OLDER than this app's - run: cloudmachine-agent vm-update": + "範本: 比此 App 的舊,請執行:cloudmachine-agent vm-update", + "Template: not compared": + "範本: 未比較", + "Template: this app's": + "範本: 與此 App 一致", + "The machine has no %@ - run cloudmachine-agent vm-setup first.": + "虛擬機器中沒有 %@,請先執行 cloudmachine-agent vm-setup。", + "The machine restarted, but not every service is running - check: cloudmachine-agent vm-status. The previous template is in %@.": + "虛擬機器已重新啟動,但並非所有服務都在執行,請檢查:cloudmachine-agent vm-status。先前的範本在 %@。", + "The template changes the machine itself (%@) - that needs a new machine, not an update.": + "該範本會更改虛擬機器本身(%@),這需要新建虛擬機器,而不是更新。", + "The upload to Google Drive hangs": + "上傳到 Google Drive 卡住了", + "Time Machine is backing up - try again when it has finished.": + "Time Machine 正在備份,請在它完成後再試一次。", + "Upload: HANGS - bands in progress, none uploaded for %@ (network?); see /var/log/rclone-tm.log in the machine": + "上傳: 卡住,有分塊正在處理,已有 %@ 沒有任何分塊上傳完成(網路問題?);請查看虛擬機器中的 /var/log/rclone-tm.log", + "limactl stop failed - nothing was changed.": + "limactl stop 失敗,沒有做任何變更。", + "rclone has bands in progress, but none has been uploaded for %@ - usually a broken network connection, which rclone does not report as an error. Backups since then are only in the machine's buffer. When the network comes back the upload resumes by itself (on 28.10.2026 within 80 s); if it does not, restarting the machine (prepare-shutdown, limactl start) drops the dead connections.": + "rclone 有分塊正在處理,但已有 %@ 沒有任何分塊上傳完成,這通常是網路連線中斷造成的,rclone 不會把它回報為錯誤。此後的備份只存在於虛擬機器的緩衝區中。網路恢復後,上傳會自動繼續(2026 年 10 月 28 日那次在 80 秒內恢復);如果沒有恢復,請重新啟動虛擬機器(prepare-shutdown,limactl start)以丟棄失效的連線。", + "tmutil did not answer - not restarting the machine while its state is unknown.": + "tmutil 沒有回應,在狀態未知時不會重新啟動虛擬機器。", + ] +} diff --git a/mac-app/Tests/CloudMachineAppTests/L10nTests.swift b/mac-app/Tests/CloudMachineAppTests/L10nTests.swift index ecea21d..779eb8c 100644 --- a/mac-app/Tests/CloudMachineAppTests/L10nTests.swift +++ b/mac-app/Tests/CloudMachineAppTests/L10nTests.swift @@ -2,8 +2,8 @@ import XCTest @testable import CloudMachineCore -/// Guards the rules in `L10n`: every key translated, placeholders matching, -/// and no Polish left in the code outside the Polish tables. +/// Guards the rules in `L10n`: every key translated into every language, +/// placeholders matching, and no Polish left in the code outside the tables. /// /// These tests read the source tree, because the failure they look for is a /// string that compiles fine and only shows up as English text on a Polish @@ -23,20 +23,109 @@ final class L10nTests: XCTestCase { .en) } - func testFollowsFirstPreferredLanguage() { + func testEnvironmentAcceptsEveryLanguageCode() { XCTAssertEqual( L10n.detectLanguage( - environment: [:], preferredLanguages: ["pl-PL", "en-US"], isRunningTests: false), - .pl) + environment: ["CM_LANGUAGE": "zh-hant"], preferredLanguages: ["en-US"], + isRunningTests: true), + .zhHant) XCTAssertEqual( L10n.detectLanguage( - environment: [:], preferredLanguages: ["en-PL", "pl-PL"], isRunningTests: false), - .en) + environment: ["CM_LANGUAGE": "pt-BR"], preferredLanguages: ["en-US"], isRunningTests: true), + .ptBR) + } + + /// The variable goes through the same matching as the system setting, so + /// a locale-style value works too. + func testEnvironmentAcceptsLocaleStyleValues() { + let cases: [(String, L10n.Language)] = [ + ("pl-PL", .pl), ("de_DE", .de), ("zh_Hant", .zhHant), ("zh-TW", .zhHant), ("pt", .ptBR), + ("no", .nb), ("en_GB", .en), + ] + for (value, expected) in cases { + XCTAssertEqual( + L10n.detectLanguage( + environment: ["CM_LANGUAGE": value], preferredLanguages: ["ja-JP"], isRunningTests: true), + expected, value) + } + } + + /// An unknown value is not a reason to switch to English: the system wins. + func testUnknownEnvironmentValueFallsBackToTheSystem() { + for value in ["xx", "", "uk-UA"] { + XCTAssertEqual( + L10n.detectLanguage( + environment: ["CM_LANGUAGE": value], preferredLanguages: ["ja-JP"], + isRunningTests: false), + .ja, value) + } + } + + /// Same matching as macOS uses for a localized app: the first preferred + /// language the app has wins, regional variants fall back to the language. + func testFollowsPreferredLanguagesLikeTheSystem() { + let cases: [([String], L10n.Language)] = [ + (["pl-PL", "en-US"], .pl), + (["en-PL", "pl-PL"], .en), + (["de-DE"], .de), + (["de-AT"], .de), + (["fr-CA", "en-US"], .fr), + (["ja-JP"], .ja), + (["ar-SA"], .ar), + (["he-IL"], .he), + (["zh-Hans-PL"], .zhHans), + (["zh-CN"], .zhHans), + (["zh-TW"], .zhHant), + (["zh-HK"], .zhHant), + (["pt-BR"], .ptBR), + (["pt-PT"], .ptBR), + (["nb-NO"], .nb), + (["uk-UA", "pl-PL"], .pl), + (["uk-UA"], .en), + (["xx"], .en), + (["xx", "de-DE"], .de), + ([], .en), + ] + for (preferred, expected) in cases { + XCTAssertEqual( + L10n.detectLanguage(environment: [:], preferredLanguages: preferred, isRunningTests: false), + expected, "\(preferred)") + } + } + + func testTheSameTwentyTwoLanguagesAsTheGames() { XCTAssertEqual( - L10n.detectLanguage(environment: [:], preferredLanguages: ["de-DE"], isRunningTests: false), - .en) + L10n.Language.allCases.map(\.rawValue), + [ + "ar", "da", "de", "en", "es", "fi", "fr", "he", "it", "ja", "ko", "ms", "nb", "nl", "pl", + "pt-BR", "ru", "sv", "th", "tr", "zh-Hans", "zh-Hant", + ]) + } + + func testRightToLeftOnlyForArabicAndHebrew() { + XCTAssertEqual(L10n.Language.allCases.filter(\.isRightToLeft), [.ar, .he]) + } + + /// CFBundleLocalizations makes macOS pick the same language for its own + /// parts of the app (menus, alerts, mirrored window chrome for ar/he). + func testInfoPlistDeclaresTheSameLanguages() throws { + let url = Self.macAppRoot.appendingPathComponent("Resources/Info.plist") + let plist = try XCTUnwrap( + PropertyListSerialization.propertyList(from: Data(contentsOf: url), format: nil) + as? [String: Any]) XCTAssertEqual( - L10n.detectLanguage(environment: [:], preferredLanguages: [], isRunningTests: false), .en) + plist["CFBundleLocalizations"] as? [String], L10n.Language.allCases.map(\.rawValue)) + XCTAssertEqual(plist["CFBundleDevelopmentRegion"] as? String, "en") + } + + func testTranslatesIntoTheSelectedLanguage() { + defer { L10n.language = .en } + L10n.language = .de + XCTAssertEqual(L10n.tr("Cancel"), "Abbrechen") + L10n.language = .pl + XCTAssertEqual(L10n.tr("Cancel"), "Anuluj") // l10n-polish-ok + L10n.language = .en + XCTAssertEqual(L10n.tr("Cancel"), "Cancel") } func testTestsRunInEnglishWhateverTheSystemSays() { @@ -111,31 +200,125 @@ final class L10nTests: XCTestCase { return result } - private static func placeholderCount(_ text: String) -> Int { - text.components(separatedBy: "%@").count - 1 - + (try! NSRegularExpression(pattern: #"%\d+\$@"#)) - .numberOfMatches(in: text, range: NSRange(text.startIndex..., in: text)) + /// What a translation must keep from its English key, so that + /// `String(format:)` gets the same arguments and CLI output keeps its shape. + private static func formatProblems(_ text: String, key: String) -> [String] { + var problems: [String] = [] + let positional = try! NSRegularExpression(pattern: #"%(\d+)\$@"#) + let range = NSRange(text.startIndex..., in: text) + let indices = positional.matches(in: text, range: range).map { + Int(text[Range($0.range(at: 1), in: text)!])! + } + let plain = text.components(separatedBy: "%@").count - 1 + let expected = key.components(separatedBy: "%@").count - 1 + if indices.isEmpty { + if plain != expected { problems.append("\(plain) placeholders, the key has \(expected)") } + } else if plain != 0 || indices.sorted() != Array(1...max(expected, 1)) || expected == 0 { + problems.append("positional placeholders must be exactly %1$@...%\(expected)$@") + } + let escaped = { (s: String) in s.components(separatedBy: "%%").count - 1 } + if escaped(text) != escaped(key) { problems.append("%% count differs") } + let stripped = positional.stringByReplacingMatches(in: text, range: range, withTemplate: "") + .replacingOccurrences(of: "%%", with: "").replacingOccurrences(of: "%@", with: "") + if stripped.contains("%") { problems.append("stray % (write %% for a percent sign)") } + let lines = { (s: String) in s.components(separatedBy: "\n") } + if lines(text).count != lines(key).count { problems.append("line count differs") } + // Width may differ: an indent lines up under a prefix that is translated too. + let indented = { (s: String) in lines(s).map { $0.hasPrefix(" ") } } + if indented(text) != indented(key) { problems.append("indented lines differ") } + return problems } - func testEveryKeyIsTranslatedWithMatchingPlaceholders() throws { + /// Control characters other than a newline, invisible direction and + /// zero-width marks (they garble Terminal output), the replacement character. + private static let forbiddenScalars = CharacterSet.controlCharacters + .subtracting(CharacterSet(charactersIn: "\n")) + .union(CharacterSet(charactersIn: "\u{200B}\u{200C}\u{200D}\u{FEFF}\u{FFFD}")) + .union(CharacterSet(charactersIn: Unicode.Scalar(0x200E)!...Unicode.Scalar(0x200F)!)) + .union(CharacterSet(charactersIn: Unicode.Scalar(0x202A)!...Unicode.Scalar(0x202E)!)) + .union(CharacterSet(charactersIn: Unicode.Scalar(0x2066)!...Unicode.Scalar(0x2069)!)) + + /// Letters only Polish uses among the 22 languages: one in another table is + /// a Polish text copied instead of translated. + private static let polishOnlyLetters = CharacterSet( + charactersIn: "\u{0105}\u{0107}\u{0119}\u{0142}\u{0144}\u{015B}\u{017A}\u{017C}" + + "\u{0104}\u{0106}\u{0118}\u{0141}\u{0143}\u{015A}\u{0179}\u{017B}") + + func testEveryKeyIsTranslatedIntoEveryLanguage() throws { let (keys, problems) = try Self.usedKeys() var failures = problems - for (key, place) in keys.sorted(by: { $0.value < $1.value }) { - guard let polish = L10n.polish[key] else { - failures.append("\(place): no Polish translation for \"\(key)\"") - continue + for language in L10n.Language.allCases where language != .en { + let table = L10n.translations[language] ?? [:] + for (key, place) in keys.sorted(by: { $0.value < $1.value }) { + let label = "\(place) [\(language.rawValue)] \"\(key)\"" + guard let text = table[key], !text.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty + else { + failures.append("\(label): no translation") + continue + } + failures += Self.formatProblems(text, key: key).map { "\(label): \($0) -> \"\(text)\"" } + if text.unicodeScalars.contains(where: Self.forbiddenScalars.contains) { + failures.append("\(label): control, direction or zero-width character") + } + if language != .pl, text.unicodeScalars.contains(where: Self.polishOnlyLetters.contains) { + failures.append("\(label): Polish letters -> \"\(text)\"") + } } - if Self.placeholderCount(polish) != Self.placeholderCount(key) { - failures.append("\(place): placeholder count differs for \"\(key)\" -> \"\(polish)\"") + } + XCTAssert( + failures.isEmpty, + "\(failures.count) problems:\n" + failures.prefix(300).joined(separator: "\n")) + } + + /// Words spelled the same in Polish and in that language. + private static let sameAsPolish: [L10n.Language: Set] = [.nl: ["Adres"], .tr: ["Adres"]] + + /// A table copied instead of translated passes every format check, so + /// compare it with Polish (no entry may equal it) and with English (names, + /// units and words spelled alike, such as Version or GiB, are a few percent). + func testNoTableIsACopyOfPolishOrEnglish() { + var failures: [String] = [] + for language in L10n.Language.allCases where language != .en && language != .pl { + let table = L10n.translations[language] ?? [:] + let bare = { (s: String) in s.filter { $0.isLetter } } + var sameAsEnglish = 0 + for (key, text) in table where !bare(text).isEmpty { + if text == key { sameAsEnglish += 1 } + if let polish = L10n.polish[key], polish != key, text == polish, + Self.sameAsPolish[language]?.contains(bare(text)) != true + { + failures.append("[\(language.rawValue)] \"\(key)\" is the Polish text") + } + } + if sameAsEnglish * 100 > table.count * 3 { + failures.append( + "[\(language.rawValue)] \(sameAsEnglish) of \(table.count) entries are the English text") } } XCTAssert(failures.isEmpty, "\n" + failures.joined(separator: "\n")) } - func testNoUnusedPolishEntries() throws { + func testNoUnusedTranslations() throws { let used = Set(try Self.usedKeys().keys.keys) - let unused = L10n.polish.keys.filter { !used.contains($0) }.sorted() - XCTAssert(unused.isEmpty, "Polish entries no code uses:\n" + unused.joined(separator: "\n")) + var unused: [String] = [] + for (language, table) in L10n.translations { + unused += table.keys.filter { !used.contains($0) }.map { "[\(language.rawValue)] \($0)" } + } + XCTAssert(unused.isEmpty, "Entries no code uses:\n" + unused.sorted().joined(separator: "\n")) + } + + /// A test of the checks themselves: each rule catches what it is for. + func testFormatChecksCatchBrokenTranslations() { + XCTAssertEqual(Self.formatProblems("%@ von %@", key: "%@ of %@"), []) + XCTAssertEqual(Self.formatProblems("%2$@ / %1$@", key: "%@ of %@"), []) + XCTAssertEqual(Self.formatProblems("90 %%", key: "90%%"), []) + XCTAssertFalse(Self.formatProblems("%@", key: "%@ of %@").isEmpty) + XCTAssertFalse(Self.formatProblems("%1$@ %1$@", key: "%@ of %@").isEmpty) + XCTAssertFalse(Self.formatProblems("%1$@ %@", key: "%@ of %@").isEmpty) + XCTAssertFalse(Self.formatProblems("90 %", key: "90%%").isEmpty) + XCTAssertFalse(Self.formatProblems("%d", key: "%@").isEmpty) + XCTAssertFalse(Self.formatProblems("a b", key: "a\nb").isEmpty) + XCTAssertFalse(Self.formatProblems("x", key: " x").isEmpty) } func testTablesDoNotDisagree() { @@ -176,7 +359,9 @@ final class L10nTests: XCTestCase { let regex = try NSRegularExpression(pattern: Self.polishPattern) var hits: [String] = [] for file in Self.swiftFiles(under: "Sources") + Self.swiftFiles(under: "Tests") { - if file.lastPathComponent.hasPrefix("L10nPolish+") { continue } + if ["L10nPolish+", "L10nTranslations+"].contains(where: file.lastPathComponent.hasPrefix) { + continue + } let lines = try String(contentsOf: file, encoding: .utf8).components(separatedBy: "\n") for (index, line) in lines.enumerated() where !line.contains(Self.allowMarker) { if regex.firstMatch(in: line, range: NSRange(line.startIndex..., in: line)) != nil {