diff --git a/webui/messages/ar.json b/webui/messages/ar.json index 0bd39d79..290fd394 100644 --- a/webui/messages/ar.json +++ b/webui/messages/ar.json @@ -23,7 +23,7 @@ "add_plan_modal_field_paths": "المسارات", "add_plan_modal_validation_paths_required": "الرجاء إدخال مسار واحد على الأقل للنسخ الاحتياطي", "add_plan_modal_validation_paths_valid_required": "الرجاء إدخال مسار صالح واحد على الأقل للنسخ الاحتياطي", - "add_plan_modal_field_excludes": "المستثنيات", + "add_plan_modal_field_excludes": "الاستثناءات", "add_plan_modal_field_excludes_tooltip_prefix": "مسارات لاستبعادها من النسخ الاحتياطية الخاصة بك. راجع ", "add_plan_modal_field_excludes_tooltip_link": "وثائق restic", "add_plan_modal_field_excludes_tooltip_suffix": " لمزيد من المعلومات.", @@ -32,9 +32,9 @@ "add_plan_modal_field_iexcludes_tooltip_prefix": "مسارات غير حساسة لحالة الأحرف لاستبعادها من النسخ الاحتياطية الخاصة بك. راجع ", "add_plan_modal_field_iexcludes_add": "إضافة نمط استثناء غير حساس لحالة الأحرف", "add_plan_modal_field_schedule": "جدول النسخ الاحتياطي", - "add_plan_modal_field_backup_flags": "أعلام النسخ الاحتياطي", - "add_plan_modal_field_backup_flags_tooltip": "أعلام إضافية لإضافتها إلى أمر 'restic backup'", - "add_plan_modal_field_backup_flags_add": "تعيين علم", + "add_plan_modal_field_backup_flags": "علامات النسخ الاحتياطي", + "add_plan_modal_field_backup_flags_tooltip": "علامات إضافية لإضافتها إلى أمر 'restic backup'", + "add_plan_modal_field_backup_flags_add": "تعيين علامة", "add_plan_modal_validation_flag_pattern": "يجب أن تكون القيمة علامة CLI، مثال: راجع restic backup --help", "add_plan_modal_preview_json": "إعدادات الخطة بصيغة JSON", "add_plan_modal_see_guide_prefix": "راجع ", @@ -74,9 +74,9 @@ "settings_multihost_identity_tooltip": "تُستخدم هوية الاستضافة المتعددة لتحديد هذا المثيل في إعداد الاستضافة المتعددة. وهي مشتقة تشفيرياً من المفتاح العام لهذا المثيل.", "settings_multihost_identity_placeholder": "هوية استضافة متعددة فريدة", "button_copy": "نسخ", - "settings_multihost_authorized_clients": "العملاء المصرح بهم", - "settings_multihost_authorized_clients_tooltip": "العملاء المصرح لهم هم مثيلات Backrest أخرى مسموح لها بالوصول إلى المستودعات على هذا المثيل.", - "settings_multihost_authorized_client_item": "عميل مصرح به", + "settings_multihost_authorized_clients": "النظراء الموثوقون", + "settings_multihost_authorized_clients_tooltip": "النظراء الموثوقون هم مثيلات Backrest أخرى مسموح لها بالاتصال والوصول إلى المستودعات على هذا المثيل. يتم إضافة النظراء تلقائيًا عبر رموز الاقتران.", + "settings_multihost_authorized_client_item": "نظير موثوق", "settings_multihost_known_hosts": "المضيفون المعروفون", "settings_multihost_known_hosts_tooltip": "المضيفون المعروفون هم مثيلات Backrest أخرى يمكن لهذا المثيل الاتصال بها.", "settings_multihost_known_host_item": "مضيف معروف", @@ -108,7 +108,7 @@ "repo_success_unlocked": "تم إلغاء قفل المستودع.", "repo_error_unlock": "فشل إلغاء قفل المستودع: ", "repo_error_stats": "فشل حساب الإحصائيات: ", - "repo_error_prune": "فشل التقليم: ", + "repo_error_prune": "فشل تنفيذ prune: ", "repo_error_check": "فشل الفحص: ", "repo_deleted_message": "تم حذف المستودع", "repo_tab_tree": "عرض الشجرة", @@ -130,14 +130,14 @@ "repo_tooltip_stats": "يقوم بتشغيل إحصائيات restic على المستودع، قد تكون هذه العملية بطيئة.", "settings_modal_title": "الإعدادات", "app_breadcrumb_repo": "المستودع", - "app_breadcrumb_peer": "القرين", + "app_breadcrumb_peer": "النظير", "app_breadcrumb_plan": "الخطة", "app_breadcrumb_summary": "الملخص", "app_breadcrumb_getting_started": "البدء", "app_page_not_found": "الصفحة غير موجودة", "app_repo_not_found": "المستودع {repoId} غير موجود", "app_plan_not_found": "الخطة {planId} غير موجودة", - "app_unknown_peer": "قرين غير معروف", + "app_unknown_peer": "نظير غير معروف", "app_unknown_repo": "مستودع غير معروف", "app_remote_repo_title": "المستودع البعيد: {id}", "app_logout": "تسجيل الخروج", @@ -145,7 +145,7 @@ "app_menu_add_plan": "إضافة خطة", "app_menu_repos": "المستودعات", "app_menu_add_repo": "إضافة مستودع", - "app_menu_remote_instances": "النسخ البعيدة", + "app_menu_remote_instances": "المثيلات البعيدة", "app_menu_settings": "الإعدادات", "app_menu_dashboard": "لوحة التحكم", "app_error_initial_config": "فشل تحميل التكوين الأولي، وعادةً ما يعني هذا أن واجهة المستخدم لم تستطع الاتصال بالواجهة الخلفية.", @@ -191,7 +191,7 @@ "add_repo_modal_field_password_tooltip_entropy": "يوصى باختيار قيمة تحتوي على 128 بت من الإنتروبيا (20 حرفًا أو أكثر)", "add_repo_modal_field_password_tooltip_env": "يمكنك بدلاً من ذلك توفير بيانات اعتماد متغيرة بيئية مثل RESTIC_PASSWORD أو RESTIC_PASSWORD_FILE أو RESTIC_PASSWORD_COMMAND.", "add_repo_modal_field_password_tooltip_generate": "انقر فوق [إنشاء] لإنشاء كلمة مرور عشوائية من واجهة برمجة تطبيقات التشفير العشوائية لمتصفحك.", - "add_repo_modal_button_generate": "[إنشاء]", + "add_repo_modal_button_generate": "[توليد]", "add_repo_modal_field_env_vars": "متغيرات البيئة", "add_repo_modal_field_env_vars_tooltip": "متغيرات البيئة التي يتم تمريرها إلى restic (مثل توفير بيانات اعتماد S3 أو B2). يتم دعم الإشارات إلى متغيرات بيئة العملية الأصلية مثل FOO=$\\{MY_FOO_VAR\\}.", "op_row_deleted_success": "تم حذف العملية", @@ -216,7 +216,7 @@ "op_row_user_host": "المستخدم والمضيف", "op_row_tags": "الوسوم", "op_row_files_added": "الملفات المضافة", - "op_row_files_changed": "الملفات المتغيرة", + "op_row_files_changed": "الملفات المعدلة", "op_row_files_unmodified": "الملفات غير المعدلة", "op_row_bytes_added": "البايتات المضافة", "op_row_total_bytes": "إجمالي البايتات المعالجة", @@ -226,14 +226,14 @@ "op_row_restored_snapshot_id": "معرف اللقطة المستعادة: {id}", "op_row_bytes_done_total": "البايتات المنجزة/الإجمالي", "op_row_files_done_total": "الملفات المنجزة/الإجمالي", - "op_row_no_status": "لا يوجد حالة بعد.", + "op_row_no_status": "لا توجد حالة بعد.", "op_row_current_files": "الملفات الحالية:", "op_row_no_snapshot": "لم يتم إنشاء لقطة", "op_row_unexpected_status": "تم الحصول على حالة غير متوقعة: ", "op_row_removed_snapshot_desc": "تمت إزالة اللقطة {id} الملتقطة في {time}", "op_row_policy_header": "السياسة:", "op_row_fetch_download_error": "فشل جلب رابط التنزيل: ", - "plan_backup_scheduled": "تم جدولة النسخ الاحتياطي.", + "plan_backup_scheduled": "تمت جدولة النسخ الاحتياطي.", "plan_error_backup": "فشل جدولة النسخ الاحتياطي: ", "plan_clearing_history": "مسح سجل الأخطاء...", "plan_history_cleared": "تم مسح سجل الأخطاء.", @@ -268,8 +268,8 @@ "op_subtitle_cancelled_user": "ألغاه المستخدم", "op_subtitle_cancelled_system": "ألغاه النظام", "op_subtitle_took": "استغرقت {duration}", - "add_repo_modal_error_env_format": "يجب أن يكون المتغير البيئي بالتنسيق KEY=VALUE", - "add_repo_modal_button_set_env": "تعيين متغير بيئي", + "add_repo_modal_error_env_format": "يجب أن يكون متغير البيئة بالتنسيق KEY=VALUE", + "add_repo_modal_button_set_env": "تعيين متغير البيئة", "add_repo_modal_field_flags": "علامات", "add_repo_modal_error_flag_format": "يجب أن تكون القيمة علامة CLI، على سبيل المثال راجع restic --help", "add_repo_modal_button_set_flag": "تعيين علامة", @@ -317,7 +317,7 @@ "dashboard_backup_tooltip_pending": "مجدولة، بانتظار التنفيذ.", "dashboard_backup_tooltip_finished": "استغرقت {duration}، وأضافت {bytes}", "dashboard_card_backups_30d": "النسخ الاحتياطية (30 يومًا)", - "dashboard_card_backups_ok": "موافق", + "dashboard_card_backups_ok": "ناجحة", "dashboard_card_backups_failed": "فشل", "dashboard_card_backups_warning": "تحذير", "dashboard_card_bytes_scanned_30d": "البايتات المفحوصة (30 يوماً)", @@ -362,7 +362,7 @@ "op_row_cancel_op": "إلغاء العملية", "op_row_confirm_cancel": "تأكيد الإلغاء؟", "op_type_dry_run_backup": "نسخ احتياطي تجريبي", - "plan_dry_run_scheduled": "تم جدولة نسخ احتياطي تجريبي", + "plan_dry_run_scheduled": "تمت جدولة النسخ الاحتياطي التجريبي", "plan_dry_run_error": "فشل النسخ الاحتياطي التجريبي: ", "add_plan_modal_field_repository_select": "اختر المستودع", "add_plan_modal_field_add": "أضف", @@ -374,7 +374,7 @@ "hooks_from_list_d": "دليل الإرشادات", "hooks_from_list_e": " لأمثلة البرمجة النصية.", "repo_tab_stats_no": "لا توجد إحصائيات متاحة", - "repo_tab_stats_yet": "هل قمت بتشغيل عملية إحصائيات بعد؟", + "repo_tab_stats_yet": "هل قمت بتشغيل عملية الإحصائيات حتى الآن؟", "repo_tab_stats_size": "الحجم الكلي", "repo_tab_stats_ratio": "نسبة الضغط", "repo_tab_stats_count": "عدد اللقطات", @@ -392,7 +392,7 @@ "repo_hooks_command_error_tooltip": "سلوك الخطأ...", "repo_hooks_command_template_label": "قالب النص:", "repo_hooks_command_error_info_what": "ماذا يحدث عندما يفشل الـ Hook", - "repo_hooks_command_error_info_only": "(يسري فقط على الـ Hooks التي تبدأ، مثل بدء النسخ الاحتياطي)", + "repo_hooks_command_error_info_only": "(يسري فقط على الـ Hooks الخاصة بالبدء، مثل بدء النسخ الاحتياطي)", "repo_hooks_command_error_info_ignore": "تجاهل - يتم تجاهل الفشل", "repo_hooks_command_error_info_fatal": "قاتل - يوقف العملية بخطأ", "repo_hooks_command_error_info_cancel": "إلغاء - يوقف العملية (ملغاة)", @@ -424,9 +424,9 @@ "repo_hooks_command_runs_condition_unknown": "يتم تشغيله عندما يكون غير معروف", "app_menu_menu": "القائمة", "login_password_invalid": "كلمة المرور غير صالحة", - "add_repo_modal_repo_details": "تفاصيل Repo", + "add_repo_modal_repo_details": "تفاصيل المستودع", "add_repo_modal_env_and_flags": "البيئة والعلامات", - "dashboard_getting_started_title": "البدء", + "dashboard_getting_started_title": "بدء الاستخدام", "dashboard_getting_started_check": "التحقق من إصدارات Backrest الجديدة على GitHub", "dashboard_getting_started_overview": "نظرة عامة", "dashboard_getting_started_overview_a": "تتطابق المستودعات (Repos) مباشرة مع مستودعات restic، ابدأ بتكوين مواقع النسخ الاحتياطي الخاصة بك.", @@ -446,7 +446,7 @@ "add_plan_modal_advanced_label": "خيارات متقدمة", "add_plan_modal_schedule_type_label": "نوع الجدول", "add_plan_modal_schedule_disabled_label": "معطل", - "add_plan_modal_schedule_disabled_description": "اللقطات التلقائية معطلة لهذه الخطة. لا يزال بإمكانك تشغيل النسخ الاحتياطية يدويًا.", + "add_plan_modal_schedule_disabled_description": "التشغيل التلقائي معطل لهذا الجدول الزمني. لا يزال بإمكانك تشغيل هذا الجدول الزمني يدويًا.", "add_plan_modal_schedule_interval_hours": "الفاصل الزمني (بالساعات)", "add_plan_modal_schedule_interval_days": "الفاصل الزمني (بالأيام)", "add_plan_modal_schedule_interval_in_hours": "الفاصل الزمني بالساعات", @@ -460,43 +460,80 @@ "add_plan_modal_schedule_time_utc": "UTC", "add_plan_modal_schedule_time_last": "وقت آخر تشغيل", "add_repo_modal_field_forget_policy": "سياسة Forget", - "add_repo_modal_field_forget_policy_help": "قم بجدولة عملية forget اختيارية شاملة للمستودع تطبق سياسة احتفاظ واحدة على جميع الخطط. عند تفعيلها، يتم تعطيل سياسات الاحتفاظ الخاصة بكل خطة.", + "add_repo_modal_field_forget_policy_help": "قم بجدولة عملية forget اختيارية شاملة للمستودع تطبق سياسة احتفاظ واحدة على جميع الخطط. عند تفعيلها، يتم تعطيل سياسات الاحتفاظ الخاصة بكل خطة. هذه ميزة متقدمة. يُفضّل استخدام سياسات الاحتفاظ الخاصة بكل خطة ما لم تكن تشارك المستودع مع أجهزة متعددة.", "add_repo_modal_retention_policy_label": "سياسة الاحتفاظ (على مستوى المستودع)", "add_repo_modal_retention_policy_help": "سياسة الاحتفاظ المطبقة على النسخ الاحتياطية المجمعة حسب الخطة، والتي يتم تشغيلها وفقاً للجدول الزمني أعلاه على مستوى المستودع. قم بتعطيل الجدول الزمني لتطبيق سياسة الاحتفاظ لكل خطة بعد كل عملية نسخة احتياطية (Backup) بدلاً من ذلك.", "add_plan_modal_retention_managed_by_repo": "تتم إدارة الاحتفاظ على مستوى المستودع عبر سياسة Forget الخاصة بالمستودع. قم بتحرير المستودع لتغيير إعدادات الاحتفاظ.", - "dashboard_activity_no_backups": "No backups recorded yet.", - "dashboard_activity_row_completed": "Completed", - "dashboard_activity_row_completed_warnings": "Completed with warnings", - "dashboard_activity_row_failed": "Failed", + "dashboard_activity_no_backups": "لم يتم تسجيل أي نسخ احتياطية بعد.", + "dashboard_activity_row_completed": "مكتمل", + "dashboard_activity_row_completed_warnings": "مكتمل مع تحذيرات", + "dashboard_activity_row_failed": "فشل", "dashboard_activity_row_label": "{plan} · {status}", - "dashboard_activity_row_ran": "Ran", - "dashboard_activity_title": "Recent activity", - "dashboard_card_destination": "Destination", - "dashboard_card_last_upload": "Last upload", - "dashboard_card_next_run": "Next run", - "dashboard_card_protected": "Protected", - "dashboard_card_retention": "Keeps {parts}", - "dashboard_hero_err": "A backup needs attention", - "dashboard_hero_idle": "Waiting for first backup", - "dashboard_hero_last_backup": "Last backup {ago}", - "dashboard_hero_next": "next {when}", - "dashboard_hero_no_backups": "No backups recorded yet", - "dashboard_hero_ok": "Everything's backed up", - "dashboard_hero_run": "Backing up now", - "dashboard_hero_warn": "Backed up, with warnings", - "dashboard_history_all_backed_up": "Backed up every day since you started", - "dashboard_history_issues": "{count} with issues", - "dashboard_history_legend_backed_up": "Backed up", - "dashboard_history_legend_issue": "Issue", - "dashboard_history_legend_missed": "Missed", - "dashboard_history_missed": "{count} days missed", - "dashboard_history_no_data": "Backup history will fill in as it runs", - "dashboard_history_summary": "{details} in the last 30 days", - "dashboard_history_tooltip_before_start": "Before you started", - "dashboard_history_tooltip_no_backup": "No backup", - "dashboard_state_label_err": "Backup failed", - "dashboard_state_label_idle": "No backups yet", - "dashboard_state_label_ok": "Backed up", - "dashboard_state_label_run": "Backing up", - "dashboard_state_label_warn": "Backed up, with warnings" + "dashboard_activity_row_ran": "تم التشغيل", + "dashboard_activity_title": "النشاط الأخير", + "dashboard_card_destination": "الوجهة", + "dashboard_card_last_upload": "آخر رفع", + "dashboard_card_next_run": "التشغيل التالي", + "dashboard_card_protected": "محمي", + "dashboard_card_retention": "يحتفظ بـ {parts}", + "dashboard_hero_err": "نسخة احتياطية تتطلب الاهتمام", + "dashboard_hero_idle": "في انتظار أول نسخ احتياطي", + "dashboard_hero_last_backup": "آخر نسخ احتياطي {ago}", + "dashboard_hero_next": "التالي {when}", + "dashboard_hero_no_backups": "لم يتم تسجيل أي نسخ احتياطي بعد", + "dashboard_hero_ok": "تم نسخ كل شيء احتياطياً", + "dashboard_hero_run": "يتم النسخ الاحتياطي الآن", + "dashboard_hero_warn": "تم النسخ الاحتياطي، مع وجود تحذيرات", + "dashboard_history_all_backed_up": "تم النسخ الاحتياطي يومياً منذ أن بدأت", + "dashboard_history_issues": "{count} بها مشكلات", + "dashboard_history_legend_backed_up": "تم النسخ الاحتياطي", + "dashboard_history_legend_issue": "مشكلة", + "dashboard_history_legend_missed": "فائت", + "dashboard_history_missed": "تم تفويت {count} يوم", + "dashboard_history_no_data": "سيتم ملء سجل النسخ الاحتياطي عند تشغيله", + "dashboard_history_summary": "{details} في آخر 30 يوماً", + "dashboard_history_tooltip_before_start": "قبل أن تبدأ", + "dashboard_history_tooltip_no_backup": "لا يوجد نسخ احتياطي", + "dashboard_state_label_err": "فشل النسخ الاحتياطي", + "dashboard_state_label_idle": "لا توجد نسخ احتياطية بعد", + "dashboard_state_label_ok": "تم النسخ الاحتياطي", + "dashboard_state_label_run": "جاري النسخ الاحتياطي", + "dashboard_state_label_warn": "تم النسخ الاحتياطي، مع وجود تحذيرات", + "repo_error_forget": "فشل تنفيذ forget: ", + "repo_button_forget": "Forget الآن", + "repo_tooltip_forget": "تشغيل عملية forget على المستودع لتطبيق سياسة الاحتفاظ الخاصة بالمستودع", + "add_repo_modal_shared_forget_hint": "نصيحة: عند مشاركة مستودع (repo) بين عدة أجهزة، قم أيضاً بتهيئة سياسة Forget مجدولة على مستوى المستودع (تحت Scheduling) لضمان تطبيق سياسة الاحتفاظ بشكل متسق على اللقطات (snapshots) من جميع الأجهزة الأخرى.", + "dashboard_time_never": "أبداً", + "dashboard_time_just_now": "الآن", + "dashboard_time_a_minute_ago": "منذ دقيقة", + "dashboard_time_minutes_ago": "منذ {count} دقيقة", + "dashboard_time_an_hour_ago": "منذ ساعة", + "dashboard_time_hour_ago": "منذ {count} ساعة", + "dashboard_time_hours_ago": "منذ {count} ساعة", + "dashboard_time_yesterday": "أمس", + "dashboard_time_days_ago": "منذ {count} يوم", + "dashboard_time_due_now": "مستحق الآن", + "dashboard_time_in_minutes": "خلال {count} دقيقة", + "dashboard_time_in_hours": "خلال {count} ساعة", + "dashboard_time_in_days": "خلال {count} يوم", + "dashboard_time_soon": "قريباً", + "dashboard_schedule_every_minutes": "يعمل كل {count} دقيقة", + "dashboard_schedule_hourly": "يعمل كل ساعة", + "dashboard_schedule_daily": "يعمل يومياً", + "dashboard_schedule_every_hours": "يعمل كل {count} ساعة", + "dashboard_card_progress_detail": "{pct}% · {done} من {total}", + "dashboard_card_progress_pct": "تم إنجاز {pct}%", + "dashboard_card_progress_scanning": "جارٍ الفحص...", + "dashboard_repo_window_30d": "30 يوم", + "dashboard_repo_ok": "{count} ناجح", + "dashboard_repo_failed": "{count} فشل", + "dashboard_repo_added": "تمت الإضافة", + "dashboard_activity_took": "استغرق {duration}", + "dashboard_peer_shared_repos": "المستودعات المشتركة", + "dashboard_retention_hourly": "{count} كل ساعة", + "dashboard_retention_daily": "{count} يوميًا", + "dashboard_retention_weekly": "{count} أسبوعيًا", + "dashboard_retention_monthly": "{count} شهريًا", + "dashboard_retention_yearly": "{count} سنويًا", + "dashboard_repo_dest_local": "محلي" } \ No newline at end of file diff --git a/webui/messages/bn.json b/webui/messages/bn.json index 1b25ca39..95db28fd 100644 --- a/webui/messages/bn.json +++ b/webui/messages/bn.json @@ -10,7 +10,7 @@ "add_plan_modal_title_add": "প্ল্যান যোগ করুন", "add_plan_modal_button_cancel": "বাতিল করুন", "add_plan_modal_button_delete": "মুছে ফেলুন", - "add_plan_modal_button_confirm_delete": "মোছা নিশ্চিত করুন", + "add_plan_modal_button_confirm_delete": "মুছে ফেলা নিশ্চিত করুন", "add_plan_modal_button_submit": "জমা দিন", "add_plan_modal_field_plan_name": "প্ল্যানের নাম", "add_plan_modal_field_plan_name_tooltip": "একটি অনন্য আইডি যা ব্যাকরেস্ট UI-তে এই প্ল্যানটিকে শনাক্ত করে (যেমন s3-myplan)। তৈরির পরে এটি পরিবর্তন করা যাবে না।", @@ -24,16 +24,16 @@ "add_plan_modal_validation_paths_required": "অনুগ্রহ করে ব্যাকআপ করার জন্য অন্তত একটি পথ লিখুন", "add_plan_modal_validation_paths_valid_required": "অনুগ্রহ করে ব্যাকআপ করার জন্য অন্তত একটি বৈধ পথ লিখুন", "add_plan_modal_field_excludes": "বাদ দিন", - "add_plan_modal_field_excludes_tooltip_prefix": "আপনার ব্যাকআপ থেকে বাদ দেওয়ার পথগুলি। দেখুন ", + "add_plan_modal_field_excludes_tooltip_prefix": "আপনার ব্যাকআপ থেকে বাদ দেওয়ার পথসমূহ। বিস্তারিত জানতে ", "add_plan_modal_field_excludes_tooltip_link": "রেস্টিক ডক্স", - "add_plan_modal_field_excludes_tooltip_suffix": " আরও তথ্যের জন্য।", + "add_plan_modal_field_excludes_tooltip_suffix": " দেখুন।", "add_plan_modal_field_excludes_add": "বাদ দেওয়ার গ্লোব যোগ করুন", "add_plan_modal_field_iexcludes": "বাদ দিন (কেস সংবেদনশীল নয়)", "add_plan_modal_field_iexcludes_tooltip_prefix": "আপনার ব্যাকআপ থেকে বাদ দেওয়ার জন্য কেস সংবেদনশীল নয় এমন পথগুলি। দেখুন ", "add_plan_modal_field_iexcludes_add": "কেস সংবেদনশীল নয় এমন বাদ দেওয়ার গ্লোব যোগ করুন", "add_plan_modal_field_schedule": "ব্যাকআপের সময়সূচী", "add_plan_modal_field_backup_flags": "ব্যাকআপ ফ্ল্যাগস", - "add_plan_modal_field_backup_flags_tooltip": "'রেস্টিক ব্যাকআপ' কমান্ডে যোগ করার জন্য অতিরিক্ত ফ্ল্যাগস", + "add_plan_modal_field_backup_flags_tooltip": "'restic backup' কমান্ডে যোগ করার জন্য অতিরিক্ত ফ্ল্যাগ", "add_plan_modal_field_backup_flags_add": "ফ্ল্যাগ সেট করুন", "add_plan_modal_validation_flag_pattern": "মানটি একটি CLI ফ্ল্যাগ হওয়া উচিত যেমন restic backup --help দেখুন", "add_plan_modal_preview_json": "JSON হিসাবে প্ল্যান কনফিগ", @@ -74,9 +74,9 @@ "settings_multihost_identity_tooltip": "মাল্টিহোস্ট সেটআপে এই ইনস্ট্যান্সকে শনাক্ত করতে মাল্টিহোস্ট পরিচিতি ব্যবহার করা হয়। এটি এই ইনস্ট্যান্সের পাবলিক কী থেকে ক্রিপ্টোগ্রাফিকভাবে প্রাপ্ত হয়।", "settings_multihost_identity_placeholder": "অনন্য মাল্টিহোস্ট পরিচিতি", "button_copy": "কপি", - "settings_multihost_authorized_clients": "অনুমোদিত ক্লায়েন্ট", - "settings_multihost_authorized_clients_tooltip": "অনুমোদিত ক্লায়েন্ট হল অন্যান্য ব্যাকরেস্ট ইনস্ট্যান্স যাদের এই ইনস্ট্যান্সে রিপোজিটরি অ্যাক্সেস করার অনুমতি আছে।", - "settings_multihost_authorized_client_item": "অনুমোদিত ক্লায়েন্ট", + "settings_multihost_authorized_clients": "বিশ্বস্ত পিয়ার", + "settings_multihost_authorized_clients_tooltip": "বিশ্বস্ত পিয়ার হল অন্যান্য ব্যাকরেস্ট ইনস্ট্যান্স যাদের এই ইনস্ট্যান্সে সংযোগ করার এবং রিপোজিটরি অ্যাক্সেস করার অনুমতি রয়েছে। পেয়ারিং টোকেনের মাধ্যমে স্বয়ংক্রিয়ভাবে পিয়ার যুক্ত হয়।", + "settings_multihost_authorized_client_item": "বিশ্বস্ত পিয়ার", "settings_multihost_known_hosts": "পরিচিত হোস্ট", "settings_multihost_known_hosts_tooltip": "পরিচিত হোস্ট হল অন্যান্য ব্যাকরেস্ট ইনস্ট্যান্স যাদের সাথে এই ইনস্ট্যান্স সংযোগ করতে পারে।", "settings_multihost_known_host_item": "পরিচিত হোস্ট", @@ -307,16 +307,16 @@ "dashboard_error_fetch": "সারসংক্ষেপ ডেটা আনতে ব্যর্থ: ", "dashboard_repos_title": "রিপো", "dashboard_repos_empty": "কোনো রিপো পাওয়া যায়নি", - "dashboard_plans_title": "পরিকল্পনা", - "dashboard_plans_empty": "কোনো পরিকল্পনা পাওয়া যায়নি", + "dashboard_plans_title": "প্ল্যান", + "dashboard_plans_empty": "কোনো প্ল্যান পাওয়া যায়নি", "dashboard_system_info_title": "সিস্টেম তথ্য", - "dashboard_config_path": "কনফিগার পথ", + "dashboard_config_path": "কনফিগারেশন পথ", "dashboard_data_dir": "ডেটা ডিরেক্টরি", - "dashboard_config_json": "JSON হিসাবে কনফিগার", + "dashboard_config_json": "JSON হিসেবে কনফিগারেশন", "dashboard_backup_tooltip_time": "{time} এ ব্যাকআপ", "dashboard_backup_tooltip_pending": "সময়সূচী করা হয়েছে, অপেক্ষায়।", "dashboard_backup_tooltip_finished": "{duration} লেগেছে, {bytes} যোগ করা হয়েছে", - "dashboard_card_backups_30d": "ব্যাকআপ (30 দিন)", + "dashboard_card_backups_30d": "ব্যাকআপ (৩০ দিন)", "dashboard_card_backups_ok": "ঠিক আছে", "dashboard_card_backups_failed": "ব্যর্থ", "dashboard_card_backups_warning": "সতর্কবার্তা", @@ -338,12 +338,12 @@ "op_row_removed_time_col": "সময়", "op_row_restore_source": "উৎস পথ", "op_row_restore_target": "গন্তব্য পথ", - "add_plan_modal_retention_policy_label": "ধারন নীতি", + "add_plan_modal_retention_policy_label": "ধারণ নীতি", "add_plan_modal_retention_policy_mode_count_label": "সংখ্যা অনুসারে", "add_plan_modal_retention_policy_mode_time_label": "সময়কাল অনুসারে", "add_plan_modal_retention_policy_mode_none_label": "কোনোটি নয়", - "add_plan_modal_retention_policy_keep_last_n_tooltip": "Restic দ্বারা শেষ N সংখ্যক স্ন্যাপশট রাখা হবে। প্রতিটি ব্যাকআপ চালানোর পর পুরানো স্ন্যাপশটগুলি বাদ দেওয়ার জন্য ধারন নীতি প্রয়োগ করা হয়।", - "add_plan_modal_retention_policy_time_bucketed_tooltip": "Restic দ্বারা প্রতিটি সময়কালের শেষ N সংখ্যক স্ন্যাপশট রাখা হবে। প্রতিটি ব্যাকআপ চালানোর পর পুরানো স্ন্যাপশটগুলি বাদ দেওয়ার জন্য ধারন নীতি প্রয়োগ করা হয়।", + "add_plan_modal_retention_policy_keep_last_n_tooltip": "Restic দ্বারা শেষ N সংখ্যক স্ন্যাপশট রাখা হবে। প্রতিটি ব্যাকআপ চালানোর পর পুরানো স্ন্যাপশটগুলি বাদ দেওয়ার জন্য ধারণ নীতি প্রয়োগ করা হয়।", + "add_plan_modal_retention_policy_time_bucketed_tooltip": "Restic দ্বারা প্রতিটি সময়কালের শেষ N সংখ্যক স্ন্যাপশট রাখা হবে। প্রতিটি ব্যাকআপ চালানোর পর পুরানো স্ন্যাপশটগুলি বাদ দেওয়ার জন্য ধারণ নীতি প্রয়োগ করা হয়।", "add_plan_modal_retention_policy_keep_all_tooltip": "সমস্ত ব্যাকআপ ধরে রাখা হবে। মনে রাখবেন যে স্ন্যাপশটগুলির সেট খুব বড় হলে এটি ধীর ব্যাকআপের কারণ হতে পারে।", "add_plan_modal_retention_policy_keep_all_warning": "সমস্ত ব্যাকআপ ধরে রাখা হয়েছে। সতর্কতা: রিপোজিটরি খুব বড় হলে এটি ধীর ব্যাকআপের কারণ হতে পারে।", "add_plan_modal_retention_policy_keep_last_n_snapshots_label": "শেষ N স্ন্যাপশট রাখুন", @@ -364,10 +364,10 @@ "op_type_dry_run_backup": "ড্রাই রান ব্যাকআপ", "plan_dry_run_scheduled": "ড্রাই রান ব্যাকআপ নির্ধারিত হয়েছে", "plan_dry_run_error": "ড্রাই রান ব্যর্থ হয়েছে: ", - "add_plan_modal_field_repository_select": "repository নির্বাচন করুন", + "add_plan_modal_field_repository_select": "রেপোজিটরি নির্বাচন করুন", "add_plan_modal_field_add": "যোগ করুন", "add_plan_modal_field_add_hook": "হুক যোগ করুন", - "add_plan_modal_field_paths_tooltip": "এই প্ল্যান দ্বারা তৈরি snapshot-গুলিতে অন্তর্ভুক্ত করার জন্য পাথ", + "add_plan_modal_field_paths_tooltip": "এই প্ল্যান দ্বারা তৈরি স্ন্যাপশটগুলিতে অন্তর্ভুক্ত করার জন্য পাথ", "hooks_from_list_a": "হুক আপনাকে ব্যাকআপ লাইফসাইকেলের প্রতিক্রিয়ায় চালানোর জন্য বিজ্ঞপ্তি এবং স্ক্রিপ্টের মতো ক্রিয়া কনফিগার করতে দেয়। দেখুন ", "hooks_from_list_b": "হুক ডকুমেন্টেশন", "hooks_from_list_c": " উপলব্ধ বিকল্পগুলির জন্য, অথবা ", @@ -377,11 +377,11 @@ "repo_tab_stats_yet": "আপনি কি এখনো কোনো পরিসংখ্যান অপারেশন চালাননি?", "repo_tab_stats_size": "মোট আকার", "repo_tab_stats_ratio": "কম্প্রেশন অনুপাত", - "repo_tab_stats_count": "snapshot সংখ্যা", + "repo_tab_stats_count": "স্ন্যাপশট সংখ্যা", "repo_tab_stats_blob": "মোট ব্লব সংখ্যা", - "repo_command_run": "repository-তে কমান্ড চালান", + "repo_command_run": "রিপোজিটরিতে কমান্ড চালান", "repo_command_tooltip": "restic কমান্ড চালান, যেমন 'help' সাহায্য টেক্সট প্রিন্ট করার জন্য", - "repo_command_button_execute": "নির্বাহী করুন", + "repo_command_button_execute": "সম্পাদন করুন", "repo_command_no": "এখনো কোনো অপারেশন হয়নি", "repo_command_no_op": "অপারেশন শুরু হলে এখানে প্রদর্শিত হবে।", "repo_hooks_command_label": "কমান্ড", @@ -446,7 +446,7 @@ "add_plan_modal_advanced_label": "উন্নত", "add_plan_modal_schedule_type_label": "সময়সূচী প্রকার", "add_plan_modal_schedule_disabled_label": "নিষ্ক্রিয়", - "add_plan_modal_schedule_disabled_description": "এই প্ল্যানের জন্য স্বয়ংক্রিয় snapshot নিষ্ক্রিয় করা হয়েছে। আপনি এখনও ম্যানুয়ালি ব্যাকআপ চালাতে পারেন।", + "add_plan_modal_schedule_disabled_description": "এই সময়সূচীর জন্য স্বয়ংক্রিয় সম্পাদন নিষ্ক্রিয় করা হয়েছে। আপনি এখনও ম্যানুয়ালি এই সময়সূচীটি ট্রিগার করতে পারেন।", "add_plan_modal_schedule_interval_hours": "ব্যবধান (ঘণ্টা)", "add_plan_modal_schedule_interval_days": "ব্যবধান (দিন)", "add_plan_modal_schedule_interval_in_hours": "ঘণ্টায় ব্যবধান", @@ -460,43 +460,80 @@ "add_plan_modal_schedule_time_utc": "UTC", "add_plan_modal_schedule_time_last": "শেষ রান টাইম", "add_repo_modal_field_forget_policy": "Forget Policy", - "add_repo_modal_field_forget_policy_help": "ঐচ্ছিকভাবে একটি repo-ব্যাপী Forget শিডিউল করুন যা সমস্ত প্ল্যানে একটি একক retention পলিসি প্রয়োগ করে। এটি সক্রিয় থাকলে, প্রতি-প্ল্যান retention পলিসিগুলো নিষ্ক্রিয় হয়ে যায়।", + "add_repo_modal_field_forget_policy_help": "ঐচ্ছিকভাবে একটি repo-ব্যাপী Forget শিডিউল করুন যা সমস্ত প্ল্যানে একটি একক retention পলিসি প্রয়োগ করে। এটি সক্রিয় থাকলে, প্রতি-প্ল্যান retention পলিসিগুলো নিষ্ক্রিয় হয়ে যায়। এটি একটি উন্নত বৈশিষ্ট্য। একাধিক মেশিনের সাথে repo শেয়ার না করা পর্যন্ত প্রতি-প্ল্যান retention পলিসি ব্যবহার করা শ্রেয়।", "add_repo_modal_retention_policy_label": "Retention Policy (রেপোজিটরি-লেভেল)", "add_repo_modal_retention_policy_help": "প্ল্যান অনুযায়ী গ্রুপ করা ব্যাকআপের ক্ষেত্রে এই retention পলিসি প্রয়োগ করা হয়, যা উপরের শিডিউল অনুযায়ী রেপো লেভেলে চলে। প্রতিটি ব্যাকআপ অপারেশনের পর প্রতি-প্ল্যান অনুযায়ী retention পলিসি প্রয়োগ করতে চাইলে এই শিডিউলটি নিষ্ক্রিয় করুন।", "add_plan_modal_retention_managed_by_repo": "রেপোজিটরির Forget Policy-র মাধ্যমে রেপোজিটরি লেভেলে Retention পরিচালিত হয়। Retention সেটিংস পরিবর্তন করতে রেপোজিটরি এডিট করুন।", - "dashboard_activity_no_backups": "No backups recorded yet.", - "dashboard_activity_row_completed": "Completed", - "dashboard_activity_row_completed_warnings": "Completed with warnings", - "dashboard_activity_row_failed": "Failed", + "dashboard_activity_no_backups": "এখনও কোনো ব্যাকআপ রেকর্ড করা হয়নি।", + "dashboard_activity_row_completed": "সম্পন্ন", + "dashboard_activity_row_completed_warnings": "সতর্কতাসহ সম্পন্ন", + "dashboard_activity_row_failed": "ব্যর্থ", "dashboard_activity_row_label": "{plan} · {status}", - "dashboard_activity_row_ran": "Ran", - "dashboard_activity_title": "Recent activity", - "dashboard_card_destination": "Destination", - "dashboard_card_last_upload": "Last upload", + "dashboard_activity_row_ran": "চালানো হয়েছে", + "dashboard_activity_title": "সাম্প্রতিক কার্যকলাপ", + "dashboard_card_destination": "গন্তব্য", + "dashboard_card_last_upload": "সর্বশেষ আপলোড", "dashboard_card_next_run": "Next run", - "dashboard_card_protected": "Protected", - "dashboard_card_retention": "Keeps {parts}", - "dashboard_hero_err": "A backup needs attention", - "dashboard_hero_idle": "Waiting for first backup", - "dashboard_hero_last_backup": "Last backup {ago}", - "dashboard_hero_next": "next {when}", - "dashboard_hero_no_backups": "No backups recorded yet", - "dashboard_hero_ok": "Everything's backed up", - "dashboard_hero_run": "Backing up now", - "dashboard_hero_warn": "Backed up, with warnings", - "dashboard_history_all_backed_up": "Backed up every day since you started", - "dashboard_history_issues": "{count} with issues", - "dashboard_history_legend_backed_up": "Backed up", - "dashboard_history_legend_issue": "Issue", - "dashboard_history_legend_missed": "Missed", - "dashboard_history_missed": "{count} days missed", - "dashboard_history_no_data": "Backup history will fill in as it runs", - "dashboard_history_summary": "{details} in the last 30 days", - "dashboard_history_tooltip_before_start": "Before you started", - "dashboard_history_tooltip_no_backup": "No backup", - "dashboard_state_label_err": "Backup failed", - "dashboard_state_label_idle": "No backups yet", - "dashboard_state_label_ok": "Backed up", - "dashboard_state_label_run": "Backing up", - "dashboard_state_label_warn": "Backed up, with warnings" + "dashboard_card_protected": "সুরক্ষিত", + "dashboard_card_retention": "{parts} ধরে রাখা হবে", + "dashboard_hero_err": "একটি ব্যাকআপে মনোযোগ প্রয়োজন", + "dashboard_hero_idle": "প্রথম ব্যাকআপের জন্য অপেক্ষা করা হচ্ছে", + "dashboard_hero_last_backup": "সর্বশেষ ব্যাকআপ {ago}", + "dashboard_hero_next": "পরবর্তী {when}", + "dashboard_hero_no_backups": "এখনো কোনো ব্যাকআপ রেকর্ড করা হয়নি", + "dashboard_hero_ok": "সবকিছু ব্যাকআপ করা হয়েছে", + "dashboard_hero_run": "এখন ব্যাকআপ করা হচ্ছে", + "dashboard_hero_warn": "সতর্কতাসহ ব্যাকআপ করা হয়েছে", + "dashboard_history_all_backed_up": "আপনি শুরু করার পর থেকে প্রতিদিন ব্যাকআপ করা হয়েছে", + "dashboard_history_issues": "{count} টিতে সমস্যা রয়েছে", + "dashboard_history_legend_backed_up": "ব্যাকআপ করা হয়েছে", + "dashboard_history_legend_issue": "সমস্যা", + "dashboard_history_legend_missed": "বাদ পড়েছে", + "dashboard_history_missed": "{count} দিন বাদ পড়েছে", + "dashboard_history_no_data": "ব্যাকআপ চলার সাথে সাথে ইতিহাস যুক্ত হবে", + "dashboard_history_summary": "গত ৩০ দিনে {details}", + "dashboard_history_tooltip_before_start": "আপনি শুরু করার আগে", + "dashboard_history_tooltip_no_backup": "কোনো ব্যাকআপ নেই", + "dashboard_state_label_err": "ব্যাকআপ ব্যর্থ হয়েছে", + "dashboard_state_label_idle": "এখনো কোনো ব্যাকআপ নেই", + "dashboard_state_label_ok": "ব্যাকআপ করা হয়েছে", + "dashboard_state_label_run": "ব্যাকআপ করা হচ্ছে", + "dashboard_state_label_warn": "সতর্কতাসহ ব্যাকআপ করা হয়েছে", + "repo_error_forget": "Forget করতে ব্যর্থ: ", + "repo_button_forget": "এখনই Forget করুন", + "repo_tooltip_forget": "রিপোজিটরিতে repo-level retention policy প্রয়োগ করে একটি forget অপারেশন চালায়।", + "add_repo_modal_shared_forget_hint": "পরামর্শ: একাধিক মেশিনে একটি repo শেয়ার করার সময়, একটি repo-level নির্ধারিত Forget Policy (Scheduling-এর অধীনে) কনফিগার করুন যাতে সমস্ত পিয়ার থেকে আসা snapshot-গুলিতে একইভাবে retention প্রযোজ্য হয়।", + "dashboard_time_never": "কখনো নয়", + "dashboard_time_just_now": "এইমাত্র", + "dashboard_time_a_minute_ago": "এক মিনিট আগে", + "dashboard_time_minutes_ago": "{count} মিনিট আগে", + "dashboard_time_an_hour_ago": "এক ঘণ্টা আগে", + "dashboard_time_hour_ago": "{count} ঘণ্টা আগে", + "dashboard_time_hours_ago": "{count} ঘণ্টা আগে", + "dashboard_time_yesterday": "গতকাল", + "dashboard_time_days_ago": "{count} দিন আগে", + "dashboard_time_due_now": "এখনই সময়", + "dashboard_time_in_minutes": "{count} মিনিটের মধ্যে", + "dashboard_time_in_hours": "{count} ঘণ্টার মধ্যে", + "dashboard_time_in_days": "{count} দিনের মধ্যে", + "dashboard_time_soon": "শীঘ্রই", + "dashboard_schedule_every_minutes": "প্রতি {count} মিনিটে চলে", + "dashboard_schedule_hourly": "প্রতি ঘণ্টায় চলে", + "dashboard_schedule_daily": "প্রতিদিন চলে", + "dashboard_schedule_every_hours": "প্রতি {count} ঘণ্টায় চলে", + "dashboard_card_progress_detail": "{pct}% · {total}-এর মধ্যে {done}", + "dashboard_card_progress_pct": "{pct}% সম্পন্ন", + "dashboard_card_progress_scanning": "স্ক্যান করা হচ্ছে…", + "dashboard_repo_window_30d": "30 দিন", + "dashboard_repo_ok": "{count} ঠিক আছে", + "dashboard_repo_failed": "{count} ব্যর্থ", + "dashboard_repo_added": "যুক্ত করা হয়েছে", + "dashboard_activity_took": "{duration} লেগেছে", + "dashboard_peer_shared_repos": "শেয়ার করা রিপোজিটরিগুলো", + "dashboard_retention_hourly": "{count}টি ঘণ্টাওয়ারী", + "dashboard_retention_daily": "{count}টি দৈনিক", + "dashboard_retention_weekly": "{count}টি সাপ্তাহিক", + "dashboard_retention_monthly": "{count}টি মাসিক", + "dashboard_retention_yearly": "{count}টি বার্ষিক", + "dashboard_repo_dest_local": "লোকাল" } \ No newline at end of file diff --git a/webui/messages/de.json b/webui/messages/de.json index 945d974c..fa346f93 100644 --- a/webui/messages/de.json +++ b/webui/messages/de.json @@ -5,7 +5,7 @@ "add_plan_modal_error_plan_delete_not_found": "Konfiguration konnte nicht aktualisiert werden, der zu löschende Plan wurde nicht gefunden", "add_plan_modal_success_plan_deleted": "Der Plan wurde aus der Konfiguration gelöscht, jedoch nicht aus dem Restic-Repository. Snapshots bleiben im Speicher erhalten und Operationen werden protokolliert, bis sie manuell gelöscht werden. Die Wiederverwendung einer gelöschten Plan-ID wird nicht empfohlen, wenn bereits Backups erstellt wurden.", "add_plan_modal_error_destroy_prefix": "Fehler beim Löschen: ", - "add_plan_modal_error_operation_prefix": "Betriebsfehler: ", + "add_plan_modal_error_operation_prefix": "Operationsfehler: ", "add_plan_modal_title_update": "Plan aktualisieren", "add_plan_modal_title_add": "Plan hinzufügen", "add_plan_modal_button_cancel": "Abbrechen", @@ -38,12 +38,12 @@ "add_plan_modal_field_backup_flags_add": "Flag hinzufügen", "add_plan_modal_validation_flag_pattern": "Der Wert sollte ein CLI-Flag sein, z. B. siehe restic backup --help", "add_plan_modal_preview_json": "Plankonfiguration als JSON", - "add_plan_modal_see_guide_prefix": "Siehe die ", + "add_plan_modal_see_guide_prefix": "Siehe den ", "add_plan_modal_see_guide_link": "backrest-Leitfaden für den Einstieg", "add_plan_modal_see_guide_suffix": " für Anleitungen zur Plankonfiguration.", "add_plan_modal_field_hooks": "Hooks", "settings_success_updated": "Einstellungen aktualisiert", - "settings_error_operation": "Betriebsfehler: ", + "settings_error_operation": "Fehler beim Vorgang: ", "button_cancel": "Abbrechen", "button_close": "Schließen", "button_save": "Speichern", @@ -52,8 +52,8 @@ "settings_initial_setup_hint": "Sie können später weitere Benutzer hinzufügen oder, falls Sie Ihr Passwort vergessen haben, die Benutzer zurücksetzen, indem Sie die Konfigurationsdatei bearbeiten (normalerweise unter $HOME/.backrest/config.json).", "settings_field_instance_id": "Instanz-ID", "settings_validation_instance_id_required": "Die Instanz-ID ist erforderlich.", - "settings_validation_instance_id_pattern": "Die Instanz-ID muss alphanumerisch sein, wobei '_-.' als Trennzeichen zulässig ist.", - "settings_field_instance_id_tooltip": "Der Instanzname dient zur Identifizierung dieser backrest Installation. Wählen Sie den Namen sorgfältig, da dieser später nicht mehr geändert werden kann.", + "settings_validation_instance_id_pattern": "Die Instanz-ID muss alphanumerisch sein, wobei '_-.' als Trennzeichen zulässig sind.", + "settings_field_instance_id_tooltip": "Der Instanzname dient zur Identifizierung dieser Backrest-Installation. Wählen Sie den Namen sorgfältig, da dieser später nicht mehr geändert werden kann.", "settings_field_instance_id_placeholder": "Eindeutige Instanz-ID für diese Instanz (z. B. mein-backrest-server)", "settings_section_authentication": "Authentifizierung", "settings_section_multihost": "Multihost-Identität und -Freigabe", @@ -71,11 +71,11 @@ "settings_multihost_identity": "Multihost-Identität", "settings_multihost_identity_required": "Multihost-Identität erforderlich", "settings_multihost_identity_tooltip": "Die Multihost-Identität dient zur Identifizierung dieser Instanz in einer Multihost-Umgebung. Sie wird kryptografisch vom öffentlichen Schlüssel dieser Instanz abgeleitet.", - "settings_multihost_identity_placeholder": "Einzigartige Multihost-Identität", + "settings_multihost_identity_placeholder": "Eindeutige Multihost-Identität", "button_copy": "Kopieren", - "settings_multihost_authorized_clients": "Autorisierte Clients", - "settings_multihost_authorized_clients_tooltip": "Autorisierte Clients sind andere Backrest-Instanzen, die auf Repositories dieser Instanz zugreifen dürfen.", - "settings_multihost_authorized_client_item": "Autorisierter Client", + "settings_multihost_authorized_clients": "Vertrauenswürdige Peers", + "settings_multihost_authorized_clients_tooltip": "Vertrauenswürdige Peers sind andere Backrest-Instanzen, die eine Verbindung herstellen und auf Repositories dieser Instanz zugreifen dürfen. Peers werden automatisch über Pairing-Token hinzugefügt.", + "settings_multihost_authorized_client_item": "Vertrauenswürdiger Peer", "settings_multihost_known_hosts": "Bekannte Hosts", "settings_multihost_known_hosts_tooltip": "Bekannte Hosts sind andere Backrest-Instanzen, mit denen diese Instanz eine Verbindung herstellen kann.", "settings_multihost_known_host_item": "Bekannter Host", @@ -84,7 +84,7 @@ "settings_peer_key_id": "Schlüssel-ID", "settings_peer_key_id_required": "Schlüssel-ID erforderlich", "settings_peer_key_id_placeholder": "Öffentlicher Schlüsselbezeichner", - "settings_peer_verified": "Bestätigt", + "settings_peer_verified": "Verifiziert", "settings_peer_instance_url": "Instanz-URL", "settings_peer_instance_url_required": "Für bekannte Hosts ist eine Instanz-URL erforderlich.", "settings_peer_instance_url_pattern": "Bitte geben Sie eine gültige URL ein.", @@ -159,7 +159,7 @@ "add_repo_modal_title_add": "Restic-Repository hinzufügen", "add_repo_modal_success_deleted": "Das Repository {id} wurde aus der Konfiguration entfernt, die Dateien sind jedoch weiterhin vorhanden. Um Speicherplatz freizugeben, löschen Sie die Dateien manuell. URI: {uri}", "add_repo_modal_success_updated": "Aktualisierte Repository-Konfiguration {uri}", - "add_repo_modal_success_added": "Repository hinzugefügt {uri}", + "add_repo_modal_success_added": "Repository {uri} hinzugefügt", "add_repo_modal_error_list_snapshots": "Fehler beim Auflisten der Snapshots für das aktualisierte/hinzugefügte Repository: ", "add_repo_modal_delete_tooltip": "Entfernt das Repository aus der Konfiguration, löscht aber nicht das restic-Repository.", "add_repo_modal_test_config": "Testkonfiguration", @@ -168,13 +168,13 @@ "add_repo_modal_test_error": "Prüffehler: ", "add_repo_modal_guide_text_p1": "Siehe ", "add_repo_modal_guide_link_text": "Erste Schritte mit backrest", - "add_repo_modal_guide_text_p2": " für Anleitungen zur Repository-Konfiguration oder lies die ", + "add_repo_modal_guide_text_p2": " für Anleitungen zur Repository-Konfiguration oder prüfen Sie die ", "add_repo_modal_guide_restic_link_text": "restic-Dokumentation", "add_repo_modal_guide_text_p3": " für weitere Details zu Repositories.", "add_repo_modal_field_repo_name": "Repo-Name", "add_repo_modal_field_repo_name_tooltip": "Eine eindeutige ID, die dieses Repository in der Backrest-Benutzeroberfläche identifiziert (z. B. s3-mybucket). Diese kann nach der Erstellung nicht mehr geändert werden.", "add_repo_modal_error_repo_name_required": "Bitte geben Sie den Repository-Namen ein.", - "add_repo_modal_error_repo_exists": "Repository mit dem Namen existiert bereits", + "add_repo_modal_error_repo_exists": "Ein Repository mit diesem Namen existiert bereits", "add_repo_modal_field_uri": "Repository-URI", "add_repo_modal_field_uri_tooltip_title": "Gültige Repo-URIs sind:", "add_repo_modal_field_uri_tooltip_local": "Lokaler Dateisystempfad", @@ -182,21 +182,21 @@ "add_repo_modal_field_uri_tooltip_sftp": "SFTP, z. B. sftp:user@host:/repo-path", "add_repo_modal_field_uri_tooltip_see": "Siehe ", "add_repo_modal_field_uri_tooltip_restic_docs": "restic-Dokumentation", - "add_repo_modal_field_uri_tooltip_info": " Für weitere Informationen.", + "add_repo_modal_field_uri_tooltip_info": " für weitere Informationen.", "add_repo_modal_error_uri_required": "Bitte geben Sie die Repository-URI ein.", "add_repo_modal_field_password": "Passwort", "add_repo_modal_field_password_tooltip_intro": "Dieses Passwort verschlüsselt die Daten in Ihrem Repository.", "add_repo_modal_field_password_tooltip_entropy": "Es wird empfohlen, einen Wert mit 128 Bit Entropie (20 Zeichen oder länger) zu wählen.", "add_repo_modal_field_password_tooltip_env": "Alternativ können Sie auch Umgebungsvariablen als Zugangsdaten angeben, z. B. RESTIC_PASSWORD, RESTIC_PASSWORD_FILE oder RESTIC_PASSWORD_COMMAND.", "add_repo_modal_field_password_tooltip_generate": "Klicken Sie auf [Generieren], um ein zufälliges Passwort über die Krypto-Zufalls-API Ihres Browsers zu erzeugen.", - "add_repo_modal_button_generate": "[Erzeugen]", + "add_repo_modal_button_generate": "[Generieren]", "add_repo_modal_field_env_vars": "Umgebungsvariablen", "add_repo_modal_field_env_vars_tooltip": "Umgebungsvariablen, die an restic übergeben werden (z. B. zur Bereitstellung von S3- oder B2-Anmeldeinformationen). Verweise auf Umgebungsvariablen des übergeordneten Prozesses werden als FOO=$\\{MY_FOO_VAR\\} unterstützt.", "add_repo_modal_error_env_format": "Umgebungsvariable muss das Format SCHLÜSSEL=WERT haben.", "add_repo_modal_button_set_env": "Umgebungsvariable setzen", - "add_repo_modal_field_flags": "Optionen", + "add_repo_modal_field_flags": "Flags", "add_repo_modal_error_flag_format": "Der Wert sollte ein CLI-Flag sein, z. B. siehe restic --help", - "add_repo_modal_button_set_flag": "Option festlegen", + "add_repo_modal_button_set_flag": "Flag setzen", "add_repo_modal_field_prune_policy": "Bereinigungsrichtlinie", "add_repo_modal_field_prune_policy_tooltip_p1": "Der Zeitplan, nach dem die Bereinigungsvorgänge für dieses Repository ausgeführt werden. Weiterlesen ", "add_repo_modal_field_prune_policy_tooltip_link": "die restic-Dokumentation zum Anpassen von Bereinigungsvorgängen", @@ -233,9 +233,9 @@ "dashboard_config_path": "Konfigurationspfad", "dashboard_data_dir": "Datenverzeichnis", "dashboard_config_json": "Konfiguration als JSON", - "dashboard_backup_tooltip_time": "Sicherung um {time}", + "dashboard_backup_tooltip_time": "Backup um {time}", "dashboard_backup_tooltip_pending": "Geplant, wartet.", - "dashboard_backup_tooltip_finished": "Dauerte {duration}, hinzugefügt {bytes}", + "dashboard_backup_tooltip_finished": "Dauerte {duration}, {bytes} hinzugefügt", "dashboard_card_backups_30d": "Backups (30 Tage)", "dashboard_card_backups_ok": "OK", "dashboard_card_backups_failed": "fehlgeschlagen", @@ -288,17 +288,17 @@ "op_subtitle_cancelled_system": "Vom System abgebrochen", "op_subtitle_took": "Dauer: {duration}", "op_row_deleted_success": "Vorgang erfolgreich gelöscht", - "op_row_deleted_error": "Löschvorgang fehlgeschlagen: ", + "op_row_deleted_error": "Vorgang konnte nicht gelöscht werden: ", "op_row_cancel_success": "Abbruch des Vorgangs angefordert", "op_row_cancel_error": "Vorgang konnte nicht abgebrochen werden: ", - "op_row_logs_title": "Protokolle für die Operation {name} um {time}", + "op_row_logs_title": "Protokolle für den Vorgang {name} um {time}", "op_row_view_logs": "Protokolle anzeigen", "op_row_backup_details": "Sicherungsdetails", "op_row_item_errors": "Elementfehler", "op_row_error_on_item": "Fehler beim Element: {item}", "op_row_details": "Details", "op_row_snapshot_browser": "Snapshot-Browser", - "op_row_removed_snapshots": "Entfernt {count} Snapshots", + "op_row_removed_snapshots": "{count} Snapshots entfernt", "op_row_prune_output": "Prune-Ausgabe", "op_row_check_output": "Check-Ausgabe", "op_row_command_output": "Befehlsausgabe", @@ -308,10 +308,10 @@ "op_row_snapshot_id": "Snapshot-ID: ", "op_row_user_host": "Benutzer und Host", "op_row_tags": "Tags", - "op_row_files_added": "Hinzugefügte Dateien", + "op_row_files_added": "Dateien hinzugefügt", "op_row_files_changed": "Dateien geändert", "op_row_files_unmodified": "Dateien unverändert", - "op_row_bytes_added": "Hinzugefügte Bytes", + "op_row_bytes_added": "Bytes hinzugefügt", "op_row_total_bytes": "Insgesamt verarbeitete Bytes", "op_row_total_files": "Insgesamt verarbeitete Dateien", "op_row_restore_desc": "Wiederherstellen von {path} nach {target}", @@ -377,7 +377,7 @@ "add_plan_modal_field_repository_select": "Repository auswählen", "add_plan_modal_field_add": "Hinzufügen", "add_plan_modal_field_add_hook": "Hook hinzufügen", - "add_plan_modal_field_paths_tooltip": "Pfade, die in den von diesem Plan erstellten snapshots enthalten sein sollen", + "add_plan_modal_field_paths_tooltip": "Pfade, die in den von diesem Plan erstellten Snapshots enthalten sein sollen", "hooks_from_list_a": "Hooks ermöglichen es Ihnen, Aktionen wie Benachrichtigungen und Skripte zu konfigurieren, die als Reaktion auf den Backup-Lebenszyklus ausgeführt werden. Siehe ", "hooks_from_list_b": "die Hook-Dokumentation", "hooks_from_list_c": " für verfügbare Optionen, oder ", @@ -413,23 +413,23 @@ "repo_hooks_command_runs_info_success": "CONDITION_SNAPSHOT_SUCCESS - Ende eines erfolgreichen Backups", "repo_hooks_command_runs_info_error": "CONDITION_SNAPSHOT_ERROR - Ende eines fehlgeschlagenen Backups", "repo_hooks_command_runs_info_warning": "CONDITION_SNAPSHOT_WARNING - Ende eines partiellen Backups", - "repo_hooks_command_runs_info_prune_start": "CONDITION_PRUNE_START - Start eines prune-Vorgangs", + "repo_hooks_command_runs_info_prune_start": "CONDITION_PRUNE_START - Start eines Prune-Vorgangs", "repo_hooks_command_runs_info_docs": "... siehe Dokumentation für weitere Informationen", - "repo_hooks_command_runs_condition_snapshot_start": "Wird ausgelöst, wenn ein Backup-Vorgang beginnt und erfolgreich abgeschlossen werden muss, bevor der snapshot beginnt.", + "repo_hooks_command_runs_condition_snapshot_start": "Wird ausgelöst, wenn ein Backup-Vorgang beginnt und erfolgreich abgeschlossen werden muss, bevor der Snapshot beginnt.", "repo_hooks_command_runs_condition_snapshot_end": "Wird ausgelöst, wenn ein Backup-Vorgang abgeschlossen ist (unabhängig von Erfolg/Fehler)", "repo_hooks_command_runs_condition_snapshot_success": "Wird ausgelöst, wenn ein Backup-Vorgang erfolgreich abgeschlossen wird", "repo_hooks_command_runs_condition_snapshot_error": "Wird ausgelöst, wenn ein Backup-Vorgang fehlschlägt", "repo_hooks_command_runs_condition_snapshot_warning": "Wird ausgelöst, wenn ein Backup-Vorgang nicht-fatale Probleme aufweist", "repo_hooks_command_runs_condition_snapshot_skipped": "Wird ausgelöst, wenn ein Backup-Vorgang übersprungen wird", - "repo_hooks_command_runs_condition_prune_start": "Wird ausgelöst, wenn ein prune-Vorgang beginnt", - "repo_hooks_command_runs_condition_prune_success": "Wird ausgelöst, wenn ein prune-Vorgang erfolgreich abgeschlossen wird", - "repo_hooks_command_runs_condition_prune_error": "Wird ausgelöst, wenn ein prune-Vorgang fehlschlägt", - "repo_hooks_command_runs_condition_check_start": "Wird ausgelöst, wenn ein check-Vorgang beginnt", - "repo_hooks_command_runs_condition_check_success": "Wird ausgelöst, wenn ein check-Vorgang erfolgreich abgeschlossen wird", - "repo_hooks_command_runs_condition_check_error": "Wird ausgelöst, wenn ein check-Vorgang fehlschlägt", - "repo_hooks_command_runs_condition_forget_start": "Wird ausgelöst, wenn ein forget-Vorgang beginnt", - "repo_hooks_command_runs_condition_forget_success": "Wird ausgelöst, wenn ein forget-Vorgang erfolgreich abgeschlossen wird", - "repo_hooks_command_runs_condition_forget_error": "Wird ausgelöst, wenn ein forget-Vorgang fehlschlägt", + "repo_hooks_command_runs_condition_prune_start": "Wird ausgelöst, wenn ein Prune-Vorgang beginnt", + "repo_hooks_command_runs_condition_prune_success": "Wird ausgelöst, wenn ein Prune-Vorgang erfolgreich abgeschlossen wird", + "repo_hooks_command_runs_condition_prune_error": "Wird ausgelöst, wenn ein Prune-Vorgang fehlschlägt", + "repo_hooks_command_runs_condition_check_start": "Wird ausgelöst, wenn ein Check-Vorgang beginnt", + "repo_hooks_command_runs_condition_check_success": "Wird ausgelöst, wenn ein Check-Vorgang erfolgreich abgeschlossen wird", + "repo_hooks_command_runs_condition_check_error": "Wird ausgelöst, wenn ein Check-Vorgang fehlschlägt", + "repo_hooks_command_runs_condition_forget_start": "Wird ausgelöst, wenn ein Forget-Vorgang beginnt", + "repo_hooks_command_runs_condition_forget_success": "Wird ausgelöst, wenn ein Forget-Vorgang erfolgreich abgeschlossen wird", + "repo_hooks_command_runs_condition_forget_error": "Wird ausgelöst, wenn ein Forget-Vorgang fehlschlägt", "repo_hooks_command_runs_condition_any_error": "Wird ausgelöst, wenn ein beliebiger Vorgang fehlschlägt", "repo_hooks_command_runs_condition_unknown": "Wird ausgelöst bei unbekanntem Status", "app_menu_menu": "Menü", @@ -440,7 +440,7 @@ "dashboard_getting_started_check": "Auf neue Backrest-Versionen auf GitHub prüfen", "dashboard_getting_started_overview": "Übersicht", "dashboard_getting_started_overview_a": "Repos bilden direkt restic-Repositories ab. Beginnen Sie mit der Konfiguration Ihrer Backup-Speicherorte.", - "dashboard_getting_started_overview_b": "In Plänen konfigurieren Sie die zu sichernden Verzeichnisse und die Backup-Planung. Mehrere Pläne können in einem einzigen restic Repository gesichert werden.", + "dashboard_getting_started_overview_b": "In Plänen konfigurieren Sie die zu sichernden Verzeichnisse und die Backup-Planung. Mehrere Pläne können in ein einziges restic-Repository sichern.", "dashboard_getting_started_overview_c_a": "Siehe ", "dashboard_getting_started_overview_c_b": "die restic-Dokumentation zur Vorbereitung eines neuen Repositorys", "dashboard_getting_started_overview_c_c": " für Details zu verfügbaren Repository-Typen und deren Konfiguration.", @@ -456,7 +456,7 @@ "add_plan_modal_advanced_label": "Erweitert", "add_plan_modal_schedule_type_label": "Zeitplan-Typ", "add_plan_modal_schedule_disabled_label": "Deaktiviert", - "add_plan_modal_schedule_disabled_description": "Automatische Snapshots sind für diesen Plan deaktiviert. Sie können Backups weiterhin manuell ausführen.", + "add_plan_modal_schedule_disabled_description": "Die automatische Ausführung ist für diesen Zeitplan deaktiviert. Sie können diesen Zeitplan weiterhin manuell auslösen.", "add_plan_modal_schedule_interval_hours": "Intervall (Stunden)", "add_plan_modal_schedule_interval_days": "Intervall (Tage)", "add_plan_modal_schedule_interval_in_hours": "Intervall in Stunden", @@ -470,43 +470,80 @@ "add_plan_modal_schedule_time_utc": "UTC", "add_plan_modal_schedule_time_last": "Letzte Ausführungszeit", "add_repo_modal_field_forget_policy": "Forget-Richtlinie", - "add_repo_modal_field_forget_policy_help": "Optional ein Repository-weites Forget planen, das eine einzelne Retention-Richtlinie auf alle Pläne anwendet. Wenn aktiviert, werden die Retention-Richtlinien pro Plan deaktiviert.", + "add_repo_modal_field_forget_policy_help": "Optional ein Repository-weites Forget planen, das eine einzelne Retention-Richtlinie auf alle Pläne anwendet. Wenn aktiviert, werden die Retention-Richtlinien pro Plan deaktiviert. Dies ist eine erweiterte Funktion. Bevorzugen Sie Retention-Richtlinien pro Plan, es sei denn, das Repository wird mit mehreren Geräten geteilt.", "add_repo_modal_retention_policy_label": "Retention-Richtlinie (Repo-Ebene)", "add_repo_modal_retention_policy_help": "Retention-Richtlinie, die auf nach Plan gruppierte Backups angewendet wird, ausgeführt nach dem obigen Zeitplan auf Repo-Ebene. Deaktivieren Sie den Zeitplan, um stattdessen eine Retention-Richtlinie pro Plan nach jedem Backup-Vorgang anzuwenden.", "add_plan_modal_retention_managed_by_repo": "Die Retention wird auf Repository-Ebene über die Forget-Richtlinie des Repos verwaltet. Bearbeiten Sie das Repository, um die Retention-Einstellungen zu ändern.", - "dashboard_activity_no_backups": "No backups recorded yet.", - "dashboard_activity_row_completed": "Completed", - "dashboard_activity_row_completed_warnings": "Completed with warnings", - "dashboard_activity_row_failed": "Failed", + "dashboard_activity_no_backups": "Bisher wurden keine Backups aufgezeichnet.", + "dashboard_activity_row_completed": "Abgeschlossen", + "dashboard_activity_row_completed_warnings": "Mit Warnungen abgeschlossen", + "dashboard_activity_row_failed": "Fehlgeschlagen", "dashboard_activity_row_label": "{plan} · {status}", - "dashboard_activity_row_ran": "Ran", - "dashboard_activity_title": "Recent activity", - "dashboard_card_destination": "Destination", - "dashboard_card_last_upload": "Last upload", - "dashboard_card_next_run": "Next run", - "dashboard_card_protected": "Protected", - "dashboard_card_retention": "Keeps {parts}", - "dashboard_hero_err": "A backup needs attention", - "dashboard_hero_idle": "Waiting for first backup", - "dashboard_hero_last_backup": "Last backup {ago}", - "dashboard_hero_next": "next {when}", - "dashboard_hero_no_backups": "No backups recorded yet", - "dashboard_hero_ok": "Everything's backed up", - "dashboard_hero_run": "Backing up now", - "dashboard_hero_warn": "Backed up, with warnings", - "dashboard_history_all_backed_up": "Backed up every day since you started", - "dashboard_history_issues": "{count} with issues", - "dashboard_history_legend_backed_up": "Backed up", - "dashboard_history_legend_issue": "Issue", - "dashboard_history_legend_missed": "Missed", - "dashboard_history_missed": "{count} days missed", - "dashboard_history_no_data": "Backup history will fill in as it runs", - "dashboard_history_summary": "{details} in the last 30 days", - "dashboard_history_tooltip_before_start": "Before you started", - "dashboard_history_tooltip_no_backup": "No backup", - "dashboard_state_label_err": "Backup failed", - "dashboard_state_label_idle": "No backups yet", - "dashboard_state_label_ok": "Backed up", - "dashboard_state_label_run": "Backing up", - "dashboard_state_label_warn": "Backed up, with warnings" + "dashboard_activity_row_ran": "Ausgeführt", + "dashboard_activity_title": "Letzte Aktivitäten", + "dashboard_card_destination": "Ziel", + "dashboard_card_last_upload": "Letzter Upload", + "dashboard_card_next_run": "Nächste Ausführung", + "dashboard_card_protected": "Geschützt", + "dashboard_card_retention": "Behält {parts}", + "dashboard_hero_err": "Ein Backup erfordert Aufmerksamkeit", + "dashboard_hero_idle": "Warten auf das erste Backup", + "dashboard_hero_last_backup": "Letztes Backup {ago}", + "dashboard_hero_next": "nächstes {when}", + "dashboard_hero_no_backups": "Noch keine Backups erfasst", + "dashboard_hero_ok": "Alles gesichert", + "dashboard_hero_run": "Backup läuft jetzt", + "dashboard_hero_warn": "Gesichert, mit Warnungen", + "dashboard_history_all_backed_up": "Seit dem Start jeden Tag gesichert", + "dashboard_history_issues": "{count} mit Problemen", + "dashboard_history_legend_backed_up": "Gesichert", + "dashboard_history_legend_issue": "Problem", + "dashboard_history_legend_missed": "Verpasst", + "dashboard_history_missed": "{count} Tage verpasst", + "dashboard_history_no_data": "Der Backup-Verlauf füllt sich, sobald Backups ausgeführt werden", + "dashboard_history_summary": "{details} in den letzten 30 Tagen", + "dashboard_history_tooltip_before_start": "Vor dem Start", + "dashboard_history_tooltip_no_backup": "Kein Backup", + "dashboard_state_label_err": "Backup fehlgeschlagen", + "dashboard_state_label_idle": "Noch keine Backups", + "dashboard_state_label_ok": "Gesichert", + "dashboard_state_label_run": "Backup läuft", + "dashboard_state_label_warn": "Gesichert, mit Warnungen", + "repo_error_forget": "Forget fehlgeschlagen: ", + "repo_button_forget": "Jetzt Forget ausführen", + "repo_tooltip_forget": "Führt eine Forget-Operation auf dem Repository aus und wendet die Retention-Policy auf Repository-Ebene an", + "add_repo_modal_shared_forget_hint": "Tipp: Wenn ein Repository von mehreren Geräten geteilt wird, sollte auch eine geplante Forget-Richtlinie auf Repository-Ebene konfiguriert werden (unter Zeitplanung), damit die Retention konsistent auf Snapshots aller Peers angewendet wird.", + "dashboard_time_never": "nie", + "dashboard_time_just_now": "gerade eben", + "dashboard_time_a_minute_ago": "vor einer Minute", + "dashboard_time_minutes_ago": "vor {count} Min.", + "dashboard_time_an_hour_ago": "vor einer Stunde", + "dashboard_time_hour_ago": "vor {count} Stunde", + "dashboard_time_hours_ago": "vor {count} Stunden", + "dashboard_time_yesterday": "gestern", + "dashboard_time_days_ago": "vor {count} Tagen", + "dashboard_time_due_now": "jetzt fällig", + "dashboard_time_in_minutes": "in {count} Min.", + "dashboard_time_in_hours": "in {count} Stunden", + "dashboard_time_in_days": "in {count} Tagen", + "dashboard_time_soon": "bald", + "dashboard_schedule_every_minutes": "Läuft alle {count} Min.", + "dashboard_schedule_hourly": "Läuft stündlich", + "dashboard_schedule_daily": "Läuft täglich", + "dashboard_schedule_every_hours": "Läuft alle {count} Std.", + "dashboard_card_progress_detail": "{pct}% · {done} von {total}", + "dashboard_card_progress_pct": "{pct}% abgeschlossen", + "dashboard_card_progress_scanning": "Scannen…", + "dashboard_repo_window_30d": "30 Tg.", + "dashboard_repo_ok": "{count} ok", + "dashboard_repo_failed": "{count} fehlgeschlagen", + "dashboard_repo_added": "Hinzugefügt", + "dashboard_activity_took": "dauerte {duration}", + "dashboard_peer_shared_repos": "Geteilte Repos", + "dashboard_retention_hourly": "{count} stündlich", + "dashboard_retention_daily": "{count} täglich", + "dashboard_retention_weekly": "{count} wöchentlich", + "dashboard_retention_monthly": "{count} monatlich", + "dashboard_retention_yearly": "{count} jährlich", + "dashboard_repo_dest_local": "Lokal" } diff --git a/webui/messages/es.json b/webui/messages/es.json index 91879a4e..ff43061b 100644 --- a/webui/messages/es.json +++ b/webui/messages/es.json @@ -30,9 +30,9 @@ "add_plan_modal_field_excludes_add": "Añadir patrón de exclusión (Glob)", "add_plan_modal_field_iexcludes": "Exclusiones (sin distinción entre mayúsculas y minúsculas)", "add_plan_modal_field_iexcludes_tooltip_prefix": "Rutas para excluir de las copias de seguridad sin distinguir mayúsculas y minúsculas. Consulta ", - "add_plan_modal_field_iexcludes_add": "Añadir patrón de exclusión insensible a mayúsculas y minúsculas", - "add_plan_modal_field_schedule": "Horario de copias de seguridad", - "add_plan_modal_field_backup_flags": "Opciones de respaldo", + "add_plan_modal_field_iexcludes_add": "Añadir patrón de exclusión sin distinguir mayúsculas y minúsculas", + "add_plan_modal_field_schedule": "Programación de copias de seguridad", + "add_plan_modal_field_backup_flags": "Parámetros de copia de seguridad", "add_plan_modal_field_backup_flags_tooltip": "Parámetros adicionales para añadir al comando 'restic backup'", "add_plan_modal_field_backup_flags_add": "Establecer parámetro", "add_plan_modal_validation_flag_pattern": "El valor debe ser una opción de línea de comandos válida. Consulta: restic backup --help", @@ -40,7 +40,7 @@ "add_plan_modal_see_guide_prefix": "Ver ", "add_plan_modal_see_guide_link": "guía de inicio de Backrest", "add_plan_modal_see_guide_suffix": " para obtener instrucciones de configuración del plan.", - "add_plan_modal_field_hooks": "Ganchos", + "add_plan_modal_field_hooks": "Hooks", "settings_success_updated": "Configuración actualizada", "settings_error_operation": "Error en la operación: ", "button_cancel": "Cancelar", @@ -50,7 +50,7 @@ "settings_initial_setup_message": "Backrest ha detectado que no tienes ningún usuario configurado. Por favor, agrega al menos un usuario para proteger la interfaz web.", "settings_initial_setup_hint": "Puedes añadir más usuarios más adelante o, si olvidas tu contraseña, puedes restablecer los usuarios editando el archivo de configuración (normalmente en $HOME/.backrest/config.json)", "settings_field_instance_id": "ID de la instancia", - "settings_validation_instance_id_required": "Se requiere la ID de la instancia", + "settings_validation_instance_id_required": "Se requiere el ID de la instancia", "settings_validation_instance_id_pattern": "El ID de instancia debe ser alfanumérico, permitiendo los siguientes separadores: '_-.'", "settings_field_instance_id_tooltip": "El nombre de la instancia se usará para identificar esta instalación de Backrest. Elige un valor con cuidado, ya que no se puede cambiar posteriormente.", "settings_field_instance_id_placeholder": "ID único para la instancia (ej. mi-servidor-backrest)", @@ -74,20 +74,20 @@ "settings_multihost_identity_tooltip": "La identidad multihost se utiliza para identificar esta instancia en una configuración de múltiples equipos. Se deriva criptográficamente de la clave pública de esta instancia.", "settings_multihost_identity_placeholder": "Identidad multihost única", "button_copy": "Copiar", - "settings_multihost_authorized_clients": "Clientes autorizados", - "settings_multihost_authorized_clients_tooltip": "Los clientes autorizados son otras instancias de Backrest que tienen permiso para acceder a los repositorios de esta instancia.", - "settings_multihost_authorized_client_item": "Cliente autorizado", + "settings_multihost_authorized_clients": "Pares de confianza", + "settings_multihost_authorized_clients_tooltip": "Los pares de confianza son otras instancias de Backrest que tienen permitido conectarse y acceder a los repositorios en esta instancia. Los pares se agregan automáticamente mediante tokens de emparejamiento.", + "settings_multihost_authorized_client_item": "Par de confianza", "settings_multihost_known_hosts": "Equipos (hosts) conocidos", "settings_multihost_known_hosts_tooltip": "Los equipos (hosts) conocidos son otras instancias de Backrest a las que esta instancia puede conectarse.", "settings_multihost_known_host_item": "Equipo (host) conocido", "settings_peer_instance_id": "ID de la instancia", "settings_peer_instance_id_placeholder": "p. ej. mi-servidor-de-respaldos", - "settings_peer_key_id": "Identificador de la clave (Key ID)", - "settings_peer_key_id_required": "Se requiere un identificador de la clave (Key ID)", - "settings_peer_key_id_placeholder": "Identificador de clave pública (Public Key ID)", + "settings_peer_key_id": "ID de clave", + "settings_peer_key_id_required": "Se requiere el ID de clave", + "settings_peer_key_id_placeholder": "Identificador de clave pública", "settings_peer_verified": "Verificado", "settings_peer_instance_url": "URL de instancia", - "settings_peer_instance_url_required": "La URL de la instancia es necesaria para los equipos (hosts) conocidos", + "settings_peer_instance_url_required": "La URL de la instancia es obligatoria para los hosts conocidos", "settings_peer_instance_url_pattern": "Por favor, introduce una URL válida", "settings_peer_instance_url_placeholder": "https://ejemplo.com:9898", "settings_peer_permissions": "Permisos", @@ -96,19 +96,19 @@ "settings_permission_edit_repo": "Editar la configuración del repositorio", "settings_permission_read_ops": "Operaciones de lectura", "settings_permission_type_placeholder": "Seleccionar el tipo de permiso", - "settings_peer_permission_scopes": "Ámbitos (Scopes)", - "settings_peer_permission_scopes_required": "Se requiere al menos un ámbito (scope)", + "settings_peer_permission_scopes": "Ámbitos", + "settings_peer_permission_scopes_required": "Se requiere al menos un ámbito", "settings_permission_scope_all": "Todos los repositorios (*)", "settings_permission_scope_placeholder": "Selecciona los repositorios o utiliza * para todos", "settings_peer_add_permission": "Añadir permiso", "settings_peer_add_button": "Añadir {itemTypeName}", - "peer_default_name": "Nodo (peer)", + "peer_default_name": "Par", "repo_error_index": "Error al indexar las instantáneas: ", "repo_info_unlocking": "Desbloqueando repositorio...", "repo_success_unlocked": "Repositorio desbloqueado.", "repo_error_unlock": "No se pudo desbloquear el repositorio: ", "repo_error_stats": "No se pudieron calcular las estadísticas: ", - "repo_error_prune": "Error al limpiar (prune): ", + "repo_error_prune": "Error al ejecutar 'prune': ", "repo_error_check": "No se pudo comprobar: ", "repo_deleted_message": "El repositorio fue eliminado", "repo_tab_tree": "Vista de árbol", @@ -133,11 +133,11 @@ "app_breadcrumb_peer": "Nodo (peer)", "app_breadcrumb_plan": "Plan", "app_breadcrumb_summary": "Resumen", - "app_breadcrumb_getting_started": "Primeros pasos para empezar", + "app_breadcrumb_getting_started": "Primeros pasos", "app_page_not_found": "Página no encontrada", "app_repo_not_found": "No se encontró el repositorio {repoId}", "app_plan_not_found": "No se encontró el plan {planId}", - "app_unknown_peer": "Nodo (peer) desconocido", + "app_unknown_peer": "Instancia desconocida", "app_unknown_repo": "Repositorio desconocido", "app_remote_repo_title": "Repositorio remoto: {id}", "app_logout": "Cerrar sesión", @@ -181,7 +181,7 @@ "add_repo_modal_field_uri_tooltip_title": "Los URIs válidos del repositorio son:", "add_repo_modal_field_uri_tooltip_local": "Ruta del sistema de archivos local", "add_repo_modal_field_uri_tooltip_s3": "S3. Por ejemplo, s3:// ...", - "add_repo_modal_field_uri_tooltip_sftp": "SFTP. Por ejemplo, sftp:usuario@dispositivo:/ruta-del-repositorio", + "add_repo_modal_field_uri_tooltip_sftp": "SFTP. Por ejemplo, sftp:usuario@host:/ruta-del-repositorio", "add_repo_modal_field_uri_tooltip_see": "Ver ", "add_repo_modal_field_uri_tooltip_restic_docs": "documentos de Restic", "add_repo_modal_field_uri_tooltip_info": " para más información.", @@ -193,7 +193,7 @@ "add_repo_modal_field_password_tooltip_generate": "Haz clic en [Generar] para crear una contraseña aleatoria usando la API criptográfica de tu navegador.", "add_repo_modal_button_generate": "[Generar]", "add_repo_modal_field_env_vars": "Variables de entorno", - "add_repo_modal_field_env_vars_tooltip": "Variables de entorno que se pasan a restic (p. ej., para proporcionar credenciales S3 o B2). Se admiten referencias a variables de entorno del proceso padre, como FOO=$\\{MI_VAR_FOO\\}.", + "add_repo_modal_field_env_vars_tooltip": "Variables de entorno que se pasan a restic (p. ej., para proporcionar credenciales S3 o B2). Se admiten referencias a variables de entorno del proceso padre, como FOO=$\\{MY_FOO_VAR\\}.", "op_row_deleted_success": "Operación eliminada", "op_row_deleted_error": "No se pudo eliminar la operación: ", "op_row_cancel_success": "Se ha solicitado cancelar la operación", @@ -224,13 +224,13 @@ "op_row_restore_desc": "Restaurar {path} en {target}", "op_row_download_files": "Descargar archivo(s)", "op_row_restored_snapshot_id": "ID de la instantánea restaurada: {id}", - "op_row_bytes_done_total": "Bytes listos/totales", - "op_row_files_done_total": "Archivos listos/totales", + "op_row_bytes_done_total": "Bytes completados/totales", + "op_row_files_done_total": "Archivos completados/totales", "op_row_no_status": "Aún no hay estado.", "op_row_current_files": "Archivos actuales:", "op_row_no_snapshot": "No se ha creado ninguna instantánea", "op_row_unexpected_status": "SE OBTUVO UN ESTADO INESPERADO: ", - "op_row_removed_snapshot_desc": "instantánea eliminada {id} realizada a las {time}", + "op_row_removed_snapshot_desc": "se eliminó la instantánea {id} tomada el {time}", "op_row_policy_header": "Política:", "op_row_fetch_download_error": "No se pudo obtener la URL de descarga: ", "plan_backup_scheduled": "Copia de seguridad programada.", @@ -281,7 +281,7 @@ "add_repo_modal_field_max_unused_tooltip": "El porcentaje máximo del tamaño del repositorio que puede quedar sin usar tras una operación de limpieza (prune). Usar valores altos reduce copiar a costa de almacenamiento.", "add_repo_modal_field_check_policy": "Política de comprobación (Check)", "add_repo_modal_field_check_policy_tooltip": "El horario en el que se ejecutan las operaciones de comprobación (check) para este repositorio. Las operaciones de \"check\" de restic verifican la integridad del repositorio mediante el análisis de las estructuras en disco que componen los datos de respaldo. Opcionalmente, la comprobación puede configurarse para volver a leer y recalcular los hashes de los datos; esto es lento y puede consumir mucho ancho de banda, pero permitirá detectar bitrot o corrupción silenciosa en el medio de almacenamiento.", - "add_repo_modal_field_read_data": "Leer % de datos", + "add_repo_modal_field_read_data": "% de datos a leer", "add_repo_modal_field_read_data_tooltip": "El porcentaje de paquetes de datos en este repositorio que se leerá y verificará. Valores más altos consumirán más ancho de banda (por ejemplo, el 100% releerá todo el repositorio en cada verificación).", "add_repo_modal_field_command_modifiers": "Modificadores de comandos", "add_repo_modal_field_command_modifiers_tooltip": "Modificadores para la operación de copia de seguridad, por ejemplo, establecer la prioridad de la CPU o E/S.", @@ -331,7 +331,7 @@ "op_row_removed_header": "Instantáneas eliminadas", "op_row_removed_none": "No se eliminaron instantáneas.", "op_row_removed_id_col": "ID de la instantánea", - "op_row_removed_time_col": "Tiempo", + "op_row_removed_time_col": "Fecha y hora", "op_row_restore_source": "Ruta de origen", "op_row_restore_target": "Ruta de destino", "add_plan_modal_retention_policy_label": "Política de retención", @@ -356,28 +356,28 @@ "app_menu_edit_plan": "Editar plan", "add_repo_modal_field_auto_unlock_tooltip": "El desbloqueo automático eliminará los archivos de bloqueo al inicio de la mayoría de las operaciones. Esto puede ser potencialmente inseguro si el repositorio se comparte entre varios dispositivos (clientes); en caso contrario, se recomienda para configuraciones de un solo cliente.", "op_row_cancel_op": "Cancelar operación", - "op_row_confirm_cancel": "¿Confirmar Cancelar?", + "op_row_confirm_cancel": "¿Confirmar cancelación?", "add_repo_modal_field_prune_policy_heading": "Política de poda", "add_repo_modal_field_prune_policy_help": "Las operaciones de poda eliminan datos no referenciados de su repositorio de restic, como instantáneas olvidadas, etc. Este es el único caso en el que restic elimina datos del almacenamiento. La poda debe ejecutarse con poca frecuencia; aproximadamente una vez al mes es un buen punto de partida.", - "add_repo_modal_field_check_policy_heading": "Consultar política", + "add_repo_modal_field_check_policy_heading": "Política de comprobación (check)", "add_repo_modal_field_check_policy_help": "Las operaciones de verificación verifican la integridad de su repositorio restic. Deben ejecutarse con poca frecuencia; aproximadamente una vez al mes es un buen punto de partida. Verificará, como mínimo, la estructura de su repositorio. Opcionalmente, también puede volver a descargar y verificar las sumas de comprobación de los datos del paquete. Esto resulta útil si su almacenamiento es propenso a la inversión de bits o a la pérdida silenciosa de datos.", - "op_type_dry_run_backup": "Simulación de respaldo", - "plan_dry_run_scheduled": "Simulación de respaldo programada", + "op_type_dry_run_backup": "Simulación de copia de seguridad", + "plan_dry_run_scheduled": "Simulación de copia de seguridad programada", "plan_dry_run_error": "La simulación falló: ", "add_plan_modal_field_repository_select": "Seleccionar repositorio", "add_plan_modal_field_add": "Añadir", "add_plan_modal_field_add_hook": "Añadir Hook", - "add_plan_modal_field_paths_tooltip": "Rutas a incluir en los snapshots creados por este plan", - "hooks_from_list_a": "Los Hooks le permiten configurar acciones, por ejemplo, notificaciones y scripts que se ejecutan en respuesta al ciclo de vida de la copia de seguridad. Consulte ", + "add_plan_modal_field_paths_tooltip": "Rutas a incluir en las instantáneas creadas por este plan", + "hooks_from_list_a": "Los Hooks te permiten configurar acciones, por ejemplo, notificaciones y scripts que se ejecutan en respuesta al ciclo de vida de la copia de seguridad. Consulta ", "hooks_from_list_b": "la documentación de los hooks", "hooks_from_list_c": " para ver las opciones disponibles, o ", "hooks_from_list_d": "el libro de recetas", "hooks_from_list_e": " para ejemplos de scripting.", "repo_tab_stats_no": "No hay estadísticas disponibles", - "repo_tab_stats_yet": "¿Ha ejecutado una operación de estadísticas todavía?", + "repo_tab_stats_yet": "¿Ya has ejecutado una operación de estadísticas?", "repo_tab_stats_size": "Tamaño total", "repo_tab_stats_ratio": "Relación de compresión", - "repo_tab_stats_count": "Cantidad de snapshots", + "repo_tab_stats_count": "Cantidad de instantáneas", "repo_tab_stats_blob": "Cantidad total de blobs", "repo_command_run": "Ejecutar comando en el repositorio", "repo_command_tooltip": "Ejecutar un comando restic, p. ej. 'help' para imprimir el texto de ayuda", @@ -446,7 +446,7 @@ "add_plan_modal_advanced_label": "Avanzado", "add_plan_modal_schedule_type_label": "Tipo de programación", "add_plan_modal_schedule_disabled_label": "Deshabilitado", - "add_plan_modal_schedule_disabled_description": "Las snapshots automáticas están deshabilitadas para este plan. Aún puedes ejecutar copias de seguridad manualmente.", + "add_plan_modal_schedule_disabled_description": "La ejecución automática está deshabilitada para esta programación. Aún puedes iniciar esta programación manualmente.", "add_plan_modal_schedule_interval_hours": "Intervalo (horas)", "add_plan_modal_schedule_interval_days": "Intervalo (días)", "add_plan_modal_schedule_interval_in_hours": "Intervalo en horas", @@ -460,43 +460,80 @@ "add_plan_modal_schedule_time_utc": "UTC", "add_plan_modal_schedule_time_last": "Última hora de ejecución", "add_repo_modal_field_forget_policy": "Política de Forget", - "add_repo_modal_field_forget_policy_help": "Opcionalmente, programa un forget a nivel de repositorio que aplique una única política de retención en todos los planes. Cuando está habilitado, se desactivan las políticas de retención por plan.", + "add_repo_modal_field_forget_policy_help": "Opcionalmente, programa un forget a nivel de repositorio que aplique una única política de retención en todos los planes. Cuando está habilitado, se desactivan las políticas de retención por plan. Esta es una función avanzada. Es preferible usar políticas de retención por plan a menos que se comparta el repositorio con varias máquinas.", "add_repo_modal_retention_policy_label": "Política de retención (nivel de repositorio)", "add_repo_modal_retention_policy_help": "Política de retención aplicada a los backups agrupados por plan, ejecutada según el cronograma anterior a nivel de repositorio. Desactiva el cronograma para aplicar una política de retención por cada plan después de cada operación de backup.", "add_plan_modal_retention_managed_by_repo": "La retención se gestiona a nivel de repositorio a través de la Política de Forget del repositorio. Edita el repositorio para cambiar la configuración de retención.", - "dashboard_activity_no_backups": "No backups recorded yet.", - "dashboard_activity_row_completed": "Completed", - "dashboard_activity_row_completed_warnings": "Completed with warnings", - "dashboard_activity_row_failed": "Failed", + "dashboard_activity_no_backups": "Aún no se han registrado copias de seguridad.", + "dashboard_activity_row_completed": "Completado", + "dashboard_activity_row_completed_warnings": "Completado con advertencias", + "dashboard_activity_row_failed": "Fallido", "dashboard_activity_row_label": "{plan} · {status}", - "dashboard_activity_row_ran": "Ran", - "dashboard_activity_title": "Recent activity", - "dashboard_card_destination": "Destination", - "dashboard_card_last_upload": "Last upload", - "dashboard_card_next_run": "Next run", - "dashboard_card_protected": "Protected", - "dashboard_card_retention": "Keeps {parts}", - "dashboard_hero_err": "A backup needs attention", - "dashboard_hero_idle": "Waiting for first backup", - "dashboard_hero_last_backup": "Last backup {ago}", - "dashboard_hero_next": "next {when}", - "dashboard_hero_no_backups": "No backups recorded yet", - "dashboard_hero_ok": "Everything's backed up", - "dashboard_hero_run": "Backing up now", - "dashboard_hero_warn": "Backed up, with warnings", - "dashboard_history_all_backed_up": "Backed up every day since you started", - "dashboard_history_issues": "{count} with issues", - "dashboard_history_legend_backed_up": "Backed up", - "dashboard_history_legend_issue": "Issue", - "dashboard_history_legend_missed": "Missed", - "dashboard_history_missed": "{count} days missed", - "dashboard_history_no_data": "Backup history will fill in as it runs", - "dashboard_history_summary": "{details} in the last 30 days", - "dashboard_history_tooltip_before_start": "Before you started", - "dashboard_history_tooltip_no_backup": "No backup", - "dashboard_state_label_err": "Backup failed", - "dashboard_state_label_idle": "No backups yet", - "dashboard_state_label_ok": "Backed up", - "dashboard_state_label_run": "Backing up", - "dashboard_state_label_warn": "Backed up, with warnings" + "dashboard_activity_row_ran": "Ejecutado", + "dashboard_activity_title": "Actividad reciente", + "dashboard_card_destination": "Destino", + "dashboard_card_last_upload": "Última subida", + "dashboard_card_next_run": "Siguiente ejecución", + "dashboard_card_protected": "Protegido", + "dashboard_card_retention": "Conserva {parts}", + "dashboard_hero_err": "Una copia de seguridad necesita atención", + "dashboard_hero_idle": "Esperando la primera copia de seguridad", + "dashboard_hero_last_backup": "Última copia de seguridad {ago}", + "dashboard_hero_next": "siguiente {when}", + "dashboard_hero_no_backups": "Aún no se han registrado copias de seguridad", + "dashboard_hero_ok": "Todo está respaldado", + "dashboard_hero_run": "Realizando copia de seguridad ahora", + "dashboard_hero_warn": "Respaldado, con advertencias", + "dashboard_history_all_backed_up": "Respaldado todos los días desde que empezaste", + "dashboard_history_issues": "{count} con problemas", + "dashboard_history_legend_backed_up": "Respaldado", + "dashboard_history_legend_issue": "Problema", + "dashboard_history_legend_missed": "Omitido", + "dashboard_history_missed": "{count} días omitidos", + "dashboard_history_no_data": "El historial de copias de seguridad se completará a medida que se ejecuten", + "dashboard_history_summary": "{details} en los últimos 30 días", + "dashboard_history_tooltip_before_start": "Antes de empezar", + "dashboard_history_tooltip_no_backup": "Sin copia de seguridad", + "dashboard_state_label_err": "Copia de seguridad fallida", + "dashboard_state_label_idle": "Aún sin copias de seguridad", + "dashboard_state_label_ok": "Respaldado", + "dashboard_state_label_run": "Respaldando", + "dashboard_state_label_warn": "Respaldado, con advertencias", + "repo_error_forget": "Error al ejecutar 'forget': ", + "repo_button_forget": "Ejecutar Forget ahora", + "repo_tooltip_forget": "Ejecuta una operación forget en el repositorio aplicando la política de retención a nivel de repositorio", + "add_repo_modal_shared_forget_hint": "Sugerencia: cuando comparta un repositorio entre varias máquinas, configure también una política de Forget programada a nivel de repositorio (en Planificación) para que la retención se aplique uniformemente a los snapshots de todos los pares.", + "dashboard_time_never": "nunca", + "dashboard_time_just_now": "ahora mismo", + "dashboard_time_a_minute_ago": "hace un minuto", + "dashboard_time_minutes_ago": "hace {count} min", + "dashboard_time_an_hour_ago": "hace una hora", + "dashboard_time_hour_ago": "hace {count} hora", + "dashboard_time_hours_ago": "hace {count} horas", + "dashboard_time_yesterday": "ayer", + "dashboard_time_days_ago": "hace {count} días", + "dashboard_time_due_now": "vence ahora", + "dashboard_time_in_minutes": "en {count} min", + "dashboard_time_in_hours": "en {count} horas", + "dashboard_time_in_days": "en {count} días", + "dashboard_time_soon": "pronto", + "dashboard_schedule_every_minutes": "Se ejecuta cada {count} min", + "dashboard_schedule_hourly": "Se ejecuta cada hora", + "dashboard_schedule_daily": "Se ejecuta a diario", + "dashboard_schedule_every_hours": "Se ejecuta cada {count}h", + "dashboard_card_progress_detail": "{pct}% · {done} de {total}", + "dashboard_card_progress_pct": "{pct}% completado", + "dashboard_card_progress_scanning": "Escaneando…", + "dashboard_repo_window_30d": "30d", + "dashboard_repo_ok": "{count} ok", + "dashboard_repo_failed": "{count} fallidos", + "dashboard_repo_added": "Añadido", + "dashboard_activity_took": "tardó {duration}", + "dashboard_peer_shared_repos": "Repositorios compartidos", + "dashboard_retention_hourly": "{count} horarias", + "dashboard_retention_daily": "{count} diarias", + "dashboard_retention_weekly": "{count} semanales", + "dashboard_retention_monthly": "{count} mensuales", + "dashboard_retention_yearly": "{count} anuales", + "dashboard_repo_dest_local": "Local" } diff --git a/webui/messages/fr.json b/webui/messages/fr.json index 692589c0..bde0a09b 100644 --- a/webui/messages/fr.json +++ b/webui/messages/fr.json @@ -74,9 +74,9 @@ "settings_multihost_identity_tooltip": "L'identité multi-hôte est utilisée pour identifier cette instance dans une configuration multi-hôte. Elle est dérivée cryptographiquement de la clé publique de cette instance.", "settings_multihost_identity_placeholder": "Identité multi-hôte unique", "button_copy": "copier", - "settings_multihost_authorized_clients": "Clients autorisés", - "settings_multihost_authorized_clients_tooltip": "Les clients autorisés sont d'autres instances Backrest qui sont autorisées à accéder aux dépôts sur cette instance.", - "settings_multihost_authorized_client_item": "Client autorisé", + "settings_multihost_authorized_clients": "Pairs de confiance", + "settings_multihost_authorized_clients_tooltip": "Les pairs de confiance sont d'autres instances Backrest autorisées à se connecter et à accéder aux dépôts sur cette instance. Les pairs sont ajoutés automatiquement via des jetons d'appairage.", + "settings_multihost_authorized_client_item": "Pair de confiance", "settings_multihost_known_hosts": "Hôtes connus", "settings_multihost_known_hosts_tooltip": "Les hôtes connus sont d'autres instances Backrest auxquelles cette instance peut se connecter.", "settings_multihost_known_host_item": "Hôte connu", @@ -117,17 +117,17 @@ "repo_tab_stats": "Statistiques", "loading": "Chargement...", "repo_button_run_command": "Exécuter une commande", - "repo_tooltip_run_command": "Utilisateurs avancés : ouvrez un shell restic pour exécuter des commandes sur le dépôt. Réindexez les instantanés pour refléter les modifications dans Backrest.", - "repo_button_index": "Indexer les instantanés", - "repo_tooltip_index": "Indexe les instantanés dans le dépôt. Les instantanés sont également indexés automatiquement après chaque sauvegarde.", + "repo_tooltip_run_command": "Utilisateurs avancés : ouvrez un shell restic pour exécuter des commandes sur le dépôt. Réindexez les snapshots pour refléter les modifications dans Backrest.", + "repo_button_index": "Indexer les snapshots", + "repo_tooltip_index": "Indexe les snapshots dans le dépôt. Les snapshots sont également indexés automatiquement après chaque sauvegarde.", "repo_button_unlock": "Déverrouiller le dépôt", - "repo_tooltip_unlock": "Supprime les fichiers de verrouillage et vérifie les erreurs dans le dépôt. N'exécutez cette opération que si vous êtes sûr que le dépôt n'est pas accédé par un autre système.", - "repo_button_prune": "Élaguer maintenant", - "repo_tooltip_prune": "Exécute une opération d'élagage sur le dépôt qui supprimera les anciens instantanés et libérera de l'espace.", + "repo_tooltip_unlock": "Supprime les fichiers de verrouillage et vérifie les erreurs dans le dépôt. N'exécutez cette opération que si vous êtes sûr qu'aucun autre système n'accède au dépôt.", + "repo_button_prune": "Lancer le prune", + "repo_tooltip_prune": "Exécute une opération prune sur le dépôt qui supprimera les anciens snapshots et libérera de l'espace.", "repo_button_check": "Vérifier maintenant", "repo_tooltip_check": "Exécute une opération de vérification sur le dépôt qui vérifiera son intégrité.", "repo_button_stats": "Calculer les statistiques", - "repo_tooltip_stats": "Exécute les statistiques restic sur le dépôt, ce qui peut être une opération lente.", + "repo_tooltip_stats": "Exécute 'restic stats' sur le dépôt, ce qui peut être une opération lente.", "settings_modal_title": "Paramètres", "app_breadcrumb_repo": "Dépôt", "app_breadcrumb_peer": "Instance", @@ -187,7 +187,7 @@ "add_repo_modal_field_uri_tooltip_info": " pour plus d'infos.", "add_repo_modal_error_uri_required": "Veuillez saisir l'URI du dépôt", "add_repo_modal_field_password": "Mot de passe", - "add_repo_modal_field_password_tooltip_intro": "Ce mot de passe crypte les données de votre dépôt.", + "add_repo_modal_field_password_tooltip_intro": "Ce mot de passe chiffre les données de votre dépôt.", "add_repo_modal_field_password_tooltip_entropy": "Il est recommandé de choisir une valeur de 128 bits d'entropie (20 caractères ou plus)", "add_repo_modal_field_password_tooltip_env": "Vous pouvez également fournir des identifiants via des variables d'environnement, par exemple RESTIC_PASSWORD, RESTIC_PASSWORD_FILE ou RESTIC_PASSWORD_COMMAND.", "add_repo_modal_field_password_tooltip_generate": "Cliquez sur [Générer] pour créer un mot de passe aléatoire à partir de l'API de cryptographie aléatoire de votre navigateur.", @@ -202,7 +202,7 @@ "op_row_view_logs": "Voir les journaux", "op_row_backup_details": "Détails de la sauvegarde", "op_row_item_errors": "Erreurs liées aux éléments", - "op_row_error_on_item": "Erreur pour l'élément : {item}", + "op_row_error_on_item": "Erreur sur l'élément : {item}", "op_row_details": "Détails", "op_row_snapshot_browser": "Navigateur de snapshots", "op_row_removed_snapshots": "{count} snapshots supprimés", @@ -367,7 +367,7 @@ "add_plan_modal_field_repository_select": "Sélectionner le dépôt", "add_plan_modal_field_add": "Ajouter", "add_plan_modal_field_add_hook": "Ajouter un hook", - "add_plan_modal_field_paths_tooltip": "Chemins à inclure dans les snapshots créés par ce plan", + "add_plan_modal_field_paths_tooltip": "Chemins à inclure dans les instantanés créés par ce plan", "hooks_from_list_a": "Les hooks vous permettent de configurer des actions telles que des notifications et des scripts qui s'exécutent en réponse au cycle de vie de la sauvegarde. Voir ", "hooks_from_list_b": "la documentation des hooks", "hooks_from_list_c": " pour les options disponibles, ou ", @@ -385,14 +385,14 @@ "repo_command_no": "Aucune opération pour le moment", "repo_command_no_op": "Les opérations apparaîtront ici une fois qu'elles auront démarré.", "repo_hooks_command_label": "Commande", - "repo_hooks_healthchecks_label": "Vérifications de santé", + "repo_hooks_healthchecks_label": "Healthchecks", "repo_hooks_command_runs_when": "S'exécute lorsque...", "repo_hooks_command_script_label": "Script :", "repo_hooks_command_error_label": "Comportement en cas d'erreur :", "repo_hooks_command_error_tooltip": "Comportement en cas d'erreur...", "repo_hooks_command_template_label": "Modèle de texte :", "repo_hooks_command_error_info_what": "Ce qui se passe lorsque le hook échoue", - "repo_hooks_command_error_info_only": "(uniquement efficace sur les hooks de démarrage, par ex. démarrage de la sauvegarde)", + "repo_hooks_command_error_info_only": "(s'applique uniquement aux hooks de démarrage, par ex. début de sauvegarde)", "repo_hooks_command_error_info_ignore": "IGNORER - l'échec est ignoré", "repo_hooks_command_error_info_fatal": "FATAL - arrête l'opération avec une erreur", "repo_hooks_command_error_info_cancel": "ANNULER - arrête l'opération (annulée)", @@ -424,11 +424,11 @@ "repo_hooks_command_runs_condition_unknown": "Déclenché en cas d'inconnu", "app_menu_menu": "Menu", "login_password_invalid": "Le mot de passe est invalide", - "add_repo_modal_repo_details": "Détails du Repo", + "add_repo_modal_repo_details": "Détails du dépôt", "add_repo_modal_env_and_flags": "Environnement et Flags", - "dashboard_getting_started_title": "Démarrer", + "dashboard_getting_started_title": "Prise en main", "dashboard_getting_started_check": "Vérifier les nouvelles versions de Backrest sur GitHub", - "dashboard_getting_started_overview": "Aperçu", + "dashboard_getting_started_overview": "Vue d'ensemble", "dashboard_getting_started_overview_a": "Les repos correspondent directement aux dépôts restic, commencez par configurer vos emplacements de sauvegarde.", "dashboard_getting_started_overview_b": "Les plans sont l'endroit où vous configurez les répertoires à sauvegarder et la planification des sauvegardes. Plusieurs plans peuvent sauvegarder vers un seul dépôt restic.", "dashboard_getting_started_overview_c_a": "Voir ", @@ -446,7 +446,7 @@ "add_plan_modal_advanced_label": "Avancé", "add_plan_modal_schedule_type_label": "Type de planification", "add_plan_modal_schedule_disabled_label": "Désactivé", - "add_plan_modal_schedule_disabled_description": "Les snapshots automatiques sont désactivés pour ce plan. Vous pouvez toujours exécuter des sauvegardes manuellement.", + "add_plan_modal_schedule_disabled_description": "L'exécution automatique est désactivée pour cette planification. Vous pouvez toujours déclencher cette planification manuellement.", "add_plan_modal_schedule_interval_hours": "Intervalle (Heures)", "add_plan_modal_schedule_interval_days": "Intervalle (Jours)", "add_plan_modal_schedule_interval_in_hours": "Intervalle en heures", @@ -456,47 +456,84 @@ "add_plan_modal_schedule_invalid_cron": "Expression cron invalide", "add_plan_modal_schedule_reference_clock": "Horloge de référence", "add_plan_modal_schedule_time_zone": "Fuseau horaire ou point de référence pour la planification.", - "add_plan_modal_schedule_time_local": "Locale", + "add_plan_modal_schedule_time_local": "Local", "add_plan_modal_schedule_time_utc": "UTC", "add_plan_modal_schedule_time_last": "Heure de la dernière exécution", "add_repo_modal_field_forget_policy": "Politique de forget", - "add_repo_modal_field_forget_policy_help": "Planifiez facultativement un forget à l'échelle du dépôt qui applique une seule politique de rétention à tous les plans. Lorsqu'elle est activée, les politiques de rétention par plan sont désactivées.", + "add_repo_modal_field_forget_policy_help": "Planifiez facultativement un forget à l'échelle du dépôt qui applique une seule politique de rétention à tous les plans. Lorsqu'elle est activée, les politiques de rétention par plan sont désactivées. Il s'agit d'une fonctionnalité avancée. Privilégiez les politiques de rétention par plan, sauf si vous partagez le dépôt avec plusieurs machines.", "add_repo_modal_retention_policy_label": "Politique de rétention (niveau dépôt)", "add_repo_modal_retention_policy_help": "Politique de rétention appliquée aux sauvegardes groupées par plan, exécutée selon la planification ci-dessus au niveau du dépôt. Désactivez la planification pour appliquer à la place une politique de rétention par plan après chaque opération de sauvegarde.", "add_plan_modal_retention_managed_by_repo": "La rétention est gérée au niveau du dépôt via la politique de forget du dépôt. Modifiez le dépôt pour changer les paramètres de rétention.", - "dashboard_activity_no_backups": "No backups recorded yet.", - "dashboard_activity_row_completed": "Completed", - "dashboard_activity_row_completed_warnings": "Completed with warnings", - "dashboard_activity_row_failed": "Failed", + "dashboard_activity_no_backups": "Aucune sauvegarde enregistrée pour le moment.", + "dashboard_activity_row_completed": "Terminé", + "dashboard_activity_row_completed_warnings": "Terminé avec des avertissements", + "dashboard_activity_row_failed": "Échoué", "dashboard_activity_row_label": "{plan} · {status}", - "dashboard_activity_row_ran": "Ran", - "dashboard_activity_title": "Recent activity", + "dashboard_activity_row_ran": "Exécuté", + "dashboard_activity_title": "Activité récente", "dashboard_card_destination": "Destination", - "dashboard_card_last_upload": "Last upload", - "dashboard_card_next_run": "Next run", - "dashboard_card_protected": "Protected", - "dashboard_card_retention": "Keeps {parts}", - "dashboard_hero_err": "A backup needs attention", - "dashboard_hero_idle": "Waiting for first backup", - "dashboard_hero_last_backup": "Last backup {ago}", - "dashboard_hero_next": "next {when}", - "dashboard_hero_no_backups": "No backups recorded yet", - "dashboard_hero_ok": "Everything's backed up", - "dashboard_hero_run": "Backing up now", - "dashboard_hero_warn": "Backed up, with warnings", - "dashboard_history_all_backed_up": "Backed up every day since you started", - "dashboard_history_issues": "{count} with issues", - "dashboard_history_legend_backed_up": "Backed up", - "dashboard_history_legend_issue": "Issue", - "dashboard_history_legend_missed": "Missed", - "dashboard_history_missed": "{count} days missed", - "dashboard_history_no_data": "Backup history will fill in as it runs", - "dashboard_history_summary": "{details} in the last 30 days", - "dashboard_history_tooltip_before_start": "Before you started", - "dashboard_history_tooltip_no_backup": "No backup", - "dashboard_state_label_err": "Backup failed", - "dashboard_state_label_idle": "No backups yet", - "dashboard_state_label_ok": "Backed up", - "dashboard_state_label_run": "Backing up", - "dashboard_state_label_warn": "Backed up, with warnings" + "dashboard_card_last_upload": "Dernier transfert", + "dashboard_card_next_run": "Prochaine exécution", + "dashboard_card_protected": "Protégé", + "dashboard_card_retention": "Conserve {parts}", + "dashboard_hero_err": "Une sauvegarde requiert votre attention", + "dashboard_hero_idle": "En attente de la première sauvegarde", + "dashboard_hero_last_backup": "Dernière sauvegarde {ago}", + "dashboard_hero_next": "prochaine {when}", + "dashboard_hero_no_backups": "Aucune sauvegarde enregistrée pour le moment", + "dashboard_hero_ok": "Tout est sauvegardé", + "dashboard_hero_run": "Sauvegarde en cours", + "dashboard_hero_warn": "Sauvegardé, avec des avertissements", + "dashboard_history_all_backed_up": "Sauvegardé tous les jours depuis que vous avez commencé", + "dashboard_history_issues": "{count} avec des anomalies", + "dashboard_history_legend_backed_up": "Sauvegardé", + "dashboard_history_legend_issue": "Problème", + "dashboard_history_legend_missed": "Manqué", + "dashboard_history_missed": "{count} jours manqués", + "dashboard_history_no_data": "L'historique des sauvegardes se remplira au fur et à mesure des exécutions", + "dashboard_history_summary": "{details} au cours des 30 derniers jours", + "dashboard_history_tooltip_before_start": "Avant de commencer", + "dashboard_history_tooltip_no_backup": "Pas de sauvegarde", + "dashboard_state_label_err": "Échec de la sauvegarde", + "dashboard_state_label_idle": "Aucune sauvegarde pour le moment", + "dashboard_state_label_ok": "Sauvegardé", + "dashboard_state_label_run": "Sauvegarde en cours", + "dashboard_state_label_warn": "Sauvegardé, avec des avertissements", + "repo_error_forget": "Échec du forget : ", + "repo_button_forget": "Lancer le Forget", + "repo_tooltip_forget": "Exécute une opération forget sur le dépôt en appliquant la politique de rétention au niveau du dépôt.", + "add_repo_modal_shared_forget_hint": "Astuce : lors du partage d'un dépôt entre plusieurs machines, configurez également une politique de forget planifiée au niveau du dépôt (sous Planification) afin que la rétention s'applique de manière cohérente aux snapshots de tous les pairs.", + "dashboard_time_never": "jamais", + "dashboard_time_just_now": "à l'instant", + "dashboard_time_a_minute_ago": "il y a une minute", + "dashboard_time_minutes_ago": "il y a {count} min", + "dashboard_time_an_hour_ago": "il y a une heure", + "dashboard_time_hour_ago": "il y a {count} heure", + "dashboard_time_hours_ago": "il y a {count} heures", + "dashboard_time_yesterday": "hier", + "dashboard_time_days_ago": "il y a {count} jours", + "dashboard_time_due_now": "prévu maintenant", + "dashboard_time_in_minutes": "dans {count} min", + "dashboard_time_in_hours": "dans {count} heures", + "dashboard_time_in_days": "dans {count} jours", + "dashboard_time_soon": "bientôt", + "dashboard_schedule_every_minutes": "S'exécute toutes les {count} min", + "dashboard_schedule_hourly": "S'exécute toutes les heures", + "dashboard_schedule_daily": "S'exécute tous les jours", + "dashboard_schedule_every_hours": "S'exécute toutes les {count}h", + "dashboard_card_progress_detail": "{pct}% · {done} sur {total}", + "dashboard_card_progress_pct": "{pct}% terminé", + "dashboard_card_progress_scanning": "Analyse en cours…", + "dashboard_repo_window_30d": "30j", + "dashboard_repo_ok": "{count} ok", + "dashboard_repo_failed": "{count} en échec", + "dashboard_repo_added": "Ajouté", + "dashboard_activity_took": "a duré {duration}", + "dashboard_peer_shared_repos": "Dépôts partagés", + "dashboard_retention_hourly": "{count} horaires", + "dashboard_retention_daily": "{count} journaliers", + "dashboard_retention_weekly": "{count} hebdomadaires", + "dashboard_retention_monthly": "{count} mensuels", + "dashboard_retention_yearly": "{count} annuels", + "dashboard_repo_dest_local": "Local" } \ No newline at end of file diff --git a/webui/messages/hi.json b/webui/messages/hi.json index 68fcc38f..0d0cb25c 100644 --- a/webui/messages/hi.json +++ b/webui/messages/hi.json @@ -9,7 +9,7 @@ "add_plan_modal_title_update": "प्लान अपडेट करें", "add_plan_modal_title_add": "प्लान जोड़ें", "add_plan_modal_button_cancel": "रद्द करें", - "add_plan_modal_button_delete": "मिटाएँ", + "add_plan_modal_button_delete": "हटाएँ", "add_plan_modal_button_confirm_delete": "हटाने की पुष्टि करें", "add_plan_modal_button_submit": "सबमिट करें", "add_plan_modal_field_plan_name": "प्लान का नाम", @@ -45,8 +45,8 @@ "settings_error_operation": "ऑपरेशन त्रुटि: ", "button_cancel": "रद्द करें", "button_close": "बंद करें", - "button_save": "सेव करें", - "settings_initial_setup_title": "प्रारंभिक बैकरेस्ट सेटअप!", + "button_save": "सहेजें", + "settings_initial_setup_title": "प्रारंभिक बैकरेस्ट सेटअप! ", "settings_initial_setup_message": "बैकरेस्ट ने पता लगाया है कि आपने कोई उपयोगकर्ता कॉन्फ़िगर नहीं किया है, कृपया वेब इंटरफ़ेस को सुरक्षित करने के लिए कम से कम एक उपयोगकर्ता जोड़ें।", "settings_initial_setup_hint": "आप बाद में और उपयोगकर्ता जोड़ सकते हैं या, यदि आप अपना पासवर्ड भूल जाते हैं, तो कॉन्फ़िगरेशन फ़ाइल (आमतौर पर $HOME/.backrest/config.json में) को संपादित करके उपयोगकर्ताओं को रीसेट कर सकते हैं।", "settings_field_instance_id": "इंस्टैंस आईडी", @@ -74,9 +74,9 @@ "settings_multihost_identity_tooltip": "मल्टीहोस्ट पहचान का उपयोग मल्टीहोस्ट सेटअप में इस इंस्टेंस की पहचान करने के लिए किया जाता है। यह इस इंस्टेंस की सार्वजनिक कुंजी से क्रिप्टोग्राफिक रूप से व्युत्पन्न होती है।", "settings_multihost_identity_placeholder": "अद्वितीय मल्टीहोस्ट पहचान", "button_copy": "कॉपी करें", - "settings_multihost_authorized_clients": "अधिकृत क्लाइंट", - "settings_multihost_authorized_clients_tooltip": "अधिकृत क्लाइंट अन्य बैकरेस्ट इंस्टेंस हैं जिन्हें इस इंस्टेंस पर रिपॉजिटरी तक पहुंचने की अनुमति है।", - "settings_multihost_authorized_client_item": "अधिकृत क्लाइंट", + "settings_multihost_authorized_clients": "विश्वसनीय पीयर", + "settings_multihost_authorized_clients_tooltip": "विश्वसनीय पीयर अन्य बैकरेस्ट इंस्टेंस हैं जिन्हें इस इंस्टेंस से कनेक्ट करने और रिपॉजिटरी तक पहुंचने की अनुमति है। पीयर को पेयरिंग टोकन के माध्यम से स्वचालित रूप से जोड़ा जाता है।", + "settings_multihost_authorized_client_item": "विश्वसनीय पीयर", "settings_multihost_known_hosts": "ज्ञात होस्ट", "settings_multihost_known_hosts_tooltip": "ज्ञात होस्ट अन्य बैकरेस्ट इंस्टेंस हैं जिनसे यह इंस्टेंस कनेक्ट हो सकता है।", "settings_multihost_known_host_item": "ज्ञात होस्ट", @@ -104,13 +104,13 @@ "settings_peer_add_button": "{itemTypeName} जोड़ें", "peer_default_name": "पीयर", "repo_error_index": "स्नैपशॉट को इंडेक्स करने में विफल: ", - "repo_info_unlocking": "रेपो अनलॉक कर रहा है...", + "repo_info_unlocking": "रेपो अनलॉक किया जा रहा है...", "repo_success_unlocked": "रेपो अनलॉक किया गया।", "repo_error_unlock": "रेपो को अनलॉक करने में विफल: ", - "repo_error_stats": "आँकड़े गणना करने में विफल: ", + "repo_error_stats": "आँकड़ों की गणना करने में विफल: ", "repo_error_prune": "प्रून करने में विफल: ", "repo_error_check": "जांच करने में विफल: ", - "repo_deleted_message": "रेपो हटा दिया गया था", + "repo_deleted_message": "रेपो हटा दिया गया", "repo_tab_tree": "ट्री दृश्य", "repo_tab_list": "सूची दृश्य", "repo_history_title": "बैकअप कार्रवाई इतिहास", @@ -235,9 +235,9 @@ "op_row_fetch_download_error": "डाउनलोड यूआरएल प्राप्त करने में विफल: ", "plan_backup_scheduled": "बैकअप निर्धारित किया गया।", "plan_error_backup": "बैकअप शेड्यूल करने में विफल: ", - "plan_clearing_history": "त्रुटि इतिहास साफ कर रहा है...", - "plan_history_cleared": "त्रुटि इतिहास साफ किया गया।", - "plan_error_clear_history": "त्रुटि इतिहास साफ करने में विफल: ", + "plan_clearing_history": "त्रुटि इतिहास साफ़ किया जा रहा है...", + "plan_history_cleared": "त्रुटि इतिहास साफ़ किया गया।", + "plan_error_clear_history": "त्रुटि इतिहास साफ़ करने में विफल: ", "plan_repo_not_found": "योजना {planId} के लिए रेपो {repo} नहीं मिला", "plan_button_backup": "अभी बैकअप लें", "plan_button_clear_history": "त्रुटि इतिहास साफ़ करें", @@ -267,7 +267,7 @@ "op_subtitle_running": "चल रहा है", "op_subtitle_cancelled_user": "उपयोगकर्ता द्वारा रद्द किया गया", "op_subtitle_cancelled_system": "सिस्टम द्वारा रद्द किया गया", - "op_subtitle_took": "लगा {duration}", + "op_subtitle_took": "{duration} लगा", "add_repo_modal_error_env_format": "पर्यावरण चर KEY=VALUE प्रारूप में होना चाहिए", "add_repo_modal_button_set_env": "पर्यावरण चर सेट करें", "add_repo_modal_field_flags": "फ्लैग्स", @@ -332,7 +332,7 @@ "dashboard_peer_public_key_id": "सार्वजनिक कुंजी आईडी", "dashboard_peer_last_state_update": "अंतिम स्थिति अपडेट", "dashboard_peer_ago": "पहले", - "op_row_removed_header": "हटाई गई स्नैपशॉट", + "op_row_removed_header": "हटाए गए स्नैपशॉट", "op_row_removed_none": "कोई स्नैपशॉट नहीं हटाए गए।", "op_row_removed_id_col": "स्नैपशॉट आईडी", "op_row_removed_time_col": "समय", @@ -342,8 +342,8 @@ "add_plan_modal_retention_policy_mode_count_label": "संख्या के अनुसार", "add_plan_modal_retention_policy_mode_time_label": "समय अवधि के अनुसार", "add_plan_modal_retention_policy_mode_none_label": "कोई नहीं", - "add_plan_modal_retention_policy_keep_last_n_tooltip": "अंतिम N स्नैपशॉट restic द्वारा रखे जाएंगे। प्रत्येक बैकअप रन के बाद पुरानी स्नैपशॉट हटाने के लिए प्रतिधारण नीति लागू की जाती है।", - "add_plan_modal_retention_policy_time_bucketed_tooltip": "प्रत्येक समय अवधि के लिए अंतिम N स्नैपशॉट restic द्वारा रखे जाएंगे। प्रत्येक बैकअप रन के बाद पुरानी स्नैपशॉट हटाने के लिए प्रतिधारण नीति लागू की जाती है।", + "add_plan_modal_retention_policy_keep_last_n_tooltip": "अंतिम N स्नैपशॉट restic द्वारा रखे जाएंगे। प्रत्येक बैकअप रन के बाद पुराने स्नैपशॉट हटाने के लिए प्रतिधारण नीति लागू की जाती है।", + "add_plan_modal_retention_policy_time_bucketed_tooltip": "प्रत्येक समय अवधि के लिए अंतिम N स्नैपशॉट restic द्वारा रखे जाएंगे। प्रत्येक बैकअप रन के बाद पुराने स्नैपशॉट हटाने के लिए प्रतिधारण नीति लागू की जाती है।", "add_plan_modal_retention_policy_keep_all_tooltip": "सभी बैकअप बनाए रखे जाएंगे। ध्यान दें कि यदि स्नैपशॉट का सेट बहुत बड़ा हो जाता है तो इससे बैकअप धीमा हो सकता है।", "add_plan_modal_retention_policy_keep_all_warning": "सभी बैकअप बनाए रखे जाते हैं। चेतावनी: यदि रिपॉजिटरी बहुत बड़ी हो जाती है तो इससे बैकअप धीमा हो सकता है।", "add_plan_modal_retention_policy_keep_last_n_snapshots_label": "अंतिम N स्नैपशॉट रखें", @@ -367,7 +367,7 @@ "add_plan_modal_field_repository_select": "रिपॉजिटरी चुनें", "add_plan_modal_field_add": "जोड़ें", "add_plan_modal_field_add_hook": "हुक जोड़ें", - "add_plan_modal_field_paths_tooltip": "इस प्लान द्वारा बनाए गए स्नैपशॉट में शामिल करने के लिए पथ", + "add_plan_modal_field_paths_tooltip": "इस प्लान द्वारा बनाए गए स्नैपशॉट में शामिल करने के लिए पाथ", "hooks_from_list_a": "हुक आपको बैकअप जीवनचक्र के जवाब में चलने वाली कार्रवाइयों जैसे सूचनाओं और स्क्रिप्ट को कॉन्फ़िगर करने देते हैं। देखें ", "hooks_from_list_b": "हुक दस्तावेज़", "hooks_from_list_c": " उपलब्ध विकल्पों के लिए, या ", @@ -378,8 +378,8 @@ "repo_tab_stats_size": "कुल आकार", "repo_tab_stats_ratio": "संपीड़न अनुपात", "repo_tab_stats_count": "स्नैपशॉट गणना", - "repo_tab_stats_blob": "कुल ब्लब गणना", - "repo_command_run": "repo में कमांड चलाएँ", + "repo_tab_stats_blob": "कुल ब्लॉब गणना", + "repo_command_run": "रेपो में कमांड चलाएँ", "repo_command_tooltip": "एक restic कमांड चलाएँ, जैसे 'help' मदद टेक्स्ट प्रिंट करने के लिए", "repo_command_button_execute": "निष्पादित करें", "repo_command_no": "अभी तक कोई ऑपरेशन नहीं", @@ -424,12 +424,12 @@ "repo_hooks_command_runs_condition_unknown": "जब अज्ञात हो तब ट्रिगर होता है।", "app_menu_menu": "मेनू", "login_password_invalid": "पासवर्ड अमान्य है", - "add_repo_modal_repo_details": "Repo विवरण", + "add_repo_modal_repo_details": "रिपॉजिटरी विवरण", "add_repo_modal_env_and_flags": "पर्यावरण और फ़्लैग", "dashboard_getting_started_title": "शुरू करें", "dashboard_getting_started_check": "GitHub पर नए Backrest रिलीज़ के लिए जाँच करें", "dashboard_getting_started_overview": "अवलोकन", - "dashboard_getting_started_overview_a": "Repo सीधे restic repository से मैप होते हैं, अपनी बैकअप स्थानों को कॉन्फ़िगर करके शुरू करें।", + "dashboard_getting_started_overview_a": "Repo सीधे restic repository से मैप होते हैं, अपने बैकअप स्थानों को कॉन्फ़िगर करके शुरू करें।", "dashboard_getting_started_overview_b": "Plans वह स्थान हैं जहाँ आप बैकअप करने के लिए निर्देशिकाओं और बैकअप शेड्यूलिंग को कॉन्फ़िगर करते हैं। कई plans एक ही restic repository में बैकअप कर सकते हैं।", "dashboard_getting_started_overview_c_a": "देखें ", "dashboard_getting_started_overview_c_b": "एक नया repository तैयार करने पर restic docs", @@ -446,7 +446,7 @@ "add_plan_modal_advanced_label": "उन्नत", "add_plan_modal_schedule_type_label": "शेड्यूल प्रकार", "add_plan_modal_schedule_disabled_label": "अक्षम", - "add_plan_modal_schedule_disabled_description": "इस plan के लिए स्वचालित snapshots अक्षम हैं। आप अभी भी मैन्युअल रूप से बैकअप चला सकते हैं।", + "add_plan_modal_schedule_disabled_description": "इस शेड्यूल के लिए स्वचालित निष्पादन अक्षम है। आप अभी भी इस शेड्यूल को मैन्युअल रूप से ट्रिगर कर सकते हैं।", "add_plan_modal_schedule_interval_hours": "अंतराल (घंटे)", "add_plan_modal_schedule_interval_days": "अंतराल (दिन)", "add_plan_modal_schedule_interval_in_hours": "घंटों में अंतराल", @@ -460,43 +460,80 @@ "add_plan_modal_schedule_time_utc": "UTC", "add_plan_modal_schedule_time_last": "पिछली रनिंग का समय", "add_repo_modal_field_forget_policy": "Forget पॉलिसी", - "add_repo_modal_field_forget_policy_help": "वैकल्पिक रूप से एक repo-व्यापी forget शेड्यूल करें जो सभी प्लान्स पर एक एकल retention पॉलिसी लागू करता है। सक्षम होने पर, प्रति-प्लान retention नीतियां अक्षम हो जाती हैं।", + "add_repo_modal_field_forget_policy_help": "वैकल्पिक रूप से एक repo-व्यापी forget शेड्यूल करें जो सभी प्लान्स पर एक एकल retention पॉलिसी लागू करता है। सक्षम होने पर, प्रति-प्लान retention नीतियां अक्षम हो जाती हैं। यह एक उन्नत सुविधा है। प्रति-प्लान retention नीतियों को प्राथमिकता दें जब तक कि repo को कई मशीनों के साथ साझा न किया जा रहा हो।", "add_repo_modal_retention_policy_label": "Retention पॉलिसी (Repo-स्तर)", "add_repo_modal_retention_policy_help": "प्लान द्वारा समूहीकृत बैकअप पर लागू retention पॉलिसी, जो repo स्तर पर ऊपर दिए गए शेड्यूल पर चलती है। प्रत्येक बैकअप ऑपरेशन के बाद प्रति-प्लान retention पॉलिसी लागू करने के लिए शेड्यूल को अक्षम करें।", "add_plan_modal_retention_managed_by_repo": "Retention को रिपॉजिटरी स्तर पर repo की Forget पॉलिसी के माध्यम से प्रबंधित किया जाता है। retention सेटिंग्स बदलने के लिए रिपॉजिटरी को संपादित करें।", - "dashboard_activity_no_backups": "No backups recorded yet.", - "dashboard_activity_row_completed": "Completed", - "dashboard_activity_row_completed_warnings": "Completed with warnings", - "dashboard_activity_row_failed": "Failed", + "dashboard_activity_no_backups": "अभी तक कोई बैकअप रिकॉर्ड नहीं किया गया है।", + "dashboard_activity_row_completed": "पूरा हुआ", + "dashboard_activity_row_completed_warnings": "चेतावनी के साथ पूरा हुआ", + "dashboard_activity_row_failed": "विफल", "dashboard_activity_row_label": "{plan} · {status}", - "dashboard_activity_row_ran": "Ran", - "dashboard_activity_title": "Recent activity", - "dashboard_card_destination": "Destination", - "dashboard_card_last_upload": "Last upload", - "dashboard_card_next_run": "Next run", - "dashboard_card_protected": "Protected", - "dashboard_card_retention": "Keeps {parts}", - "dashboard_hero_err": "A backup needs attention", - "dashboard_hero_idle": "Waiting for first backup", - "dashboard_hero_last_backup": "Last backup {ago}", - "dashboard_hero_next": "next {when}", - "dashboard_hero_no_backups": "No backups recorded yet", - "dashboard_hero_ok": "Everything's backed up", - "dashboard_hero_run": "Backing up now", - "dashboard_hero_warn": "Backed up, with warnings", - "dashboard_history_all_backed_up": "Backed up every day since you started", - "dashboard_history_issues": "{count} with issues", - "dashboard_history_legend_backed_up": "Backed up", - "dashboard_history_legend_issue": "Issue", - "dashboard_history_legend_missed": "Missed", - "dashboard_history_missed": "{count} days missed", - "dashboard_history_no_data": "Backup history will fill in as it runs", - "dashboard_history_summary": "{details} in the last 30 days", - "dashboard_history_tooltip_before_start": "Before you started", - "dashboard_history_tooltip_no_backup": "No backup", - "dashboard_state_label_err": "Backup failed", - "dashboard_state_label_idle": "No backups yet", - "dashboard_state_label_ok": "Backed up", - "dashboard_state_label_run": "Backing up", - "dashboard_state_label_warn": "Backed up, with warnings" + "dashboard_activity_row_ran": "चलाया गया", + "dashboard_activity_title": "हाल की गतिविधि", + "dashboard_card_destination": "गंतव्य", + "dashboard_card_last_upload": "अंतिम अपलोड", + "dashboard_card_next_run": "अगला रन", + "dashboard_card_protected": "सुरक्षित", + "dashboard_card_retention": "{parts} रखता है", + "dashboard_hero_err": "एक बैकअप पर ध्यान देने की आवश्यकता है", + "dashboard_hero_idle": "पहले बैकअप की प्रतीक्षा की जा रही है", + "dashboard_hero_last_backup": "पिछला बैकअप {ago}", + "dashboard_hero_next": "अगला {when}", + "dashboard_hero_no_backups": "अभी तक कोई बैकअप रिकॉर्ड नहीं किया गया है", + "dashboard_hero_ok": "सब कुछ बैकअप कर लिया गया है", + "dashboard_hero_run": "अभी बैकअप लिया जा रहा है", + "dashboard_hero_warn": "चेतावनी के साथ बैकअप लिया गया", + "dashboard_history_all_backed_up": "आपके शुरू करने के बाद से हर दिन बैकअप लिया गया", + "dashboard_history_issues": "{count} समस्याओं के साथ", + "dashboard_history_legend_backed_up": "बैकअप लिया गया", + "dashboard_history_legend_issue": "समस्या", + "dashboard_history_legend_missed": "छूट गया", + "dashboard_history_missed": "{count} दिन छूट गए", + "dashboard_history_no_data": "जैसे-जैसे बैकअप चलेगा, बैकअप इतिहास भरता जाएगा", + "dashboard_history_summary": "पिछले 30 दिनों में {details}", + "dashboard_history_tooltip_before_start": "आपके शुरू करने से पहले", + "dashboard_history_tooltip_no_backup": "कोई बैकअप नहीं", + "dashboard_state_label_err": "बैकअप विफल रहा", + "dashboard_state_label_idle": "अभी तक कोई बैकअप नहीं", + "dashboard_state_label_ok": "बैकअप लिया गया", + "dashboard_state_label_run": "बैकअप लिया जा रहा है", + "dashboard_state_label_warn": "चेतावनी के साथ बैकअप लिया गया", + "repo_error_forget": "Forget करने में विफल: ", + "repo_button_forget": "अभी Forget करें", + "repo_tooltip_forget": "रिपॉजिटरी-स्तर की रिटेंशन पॉलिसी को लागू करते हुए रिपॉजिटरी पर forget ऑपरेशन चलाता है", + "add_repo_modal_shared_forget_hint": "सुझाव: कई मशीनों के बीच repo साझा करते समय, एक repo-स्तर की निर्धारित Forget Policy (Scheduling के तहत) भी कॉन्फ़िगर करें ताकि सभी peers के snapshots पर retention समान रूप से लागू हो।", + "dashboard_time_never": "कभी नहीं", + "dashboard_time_just_now": "अभी-अभी", + "dashboard_time_a_minute_ago": "एक मिनट पहले", + "dashboard_time_minutes_ago": "{count} मिनट पहले", + "dashboard_time_an_hour_ago": "एक घंटे पहले", + "dashboard_time_hour_ago": "{count} घंटा पहले", + "dashboard_time_hours_ago": "{count} घंटे पहले", + "dashboard_time_yesterday": "कल", + "dashboard_time_days_ago": "{count} दिन पहले", + "dashboard_time_due_now": "अभी होने वाला", + "dashboard_time_in_minutes": "{count} मिनट में", + "dashboard_time_in_hours": "{count} घंटों में", + "dashboard_time_in_days": "{count} दिनों में", + "dashboard_time_soon": "जल्द ही", + "dashboard_schedule_every_minutes": "हर {count} मिनट में चलता है", + "dashboard_schedule_hourly": "हर घंटे चलता है", + "dashboard_schedule_daily": "रोजाना चलता है", + "dashboard_schedule_every_hours": "हर {count} घंटे में चलता है", + "dashboard_card_progress_detail": "{pct}% · {total} में से {done}", + "dashboard_card_progress_pct": "{pct}% पूरा हुआ", + "dashboard_card_progress_scanning": "स्कैन हो रहा है…", + "dashboard_repo_window_30d": "30 दिन", + "dashboard_repo_ok": "{count} सही", + "dashboard_repo_failed": "{count} विफल", + "dashboard_repo_added": "जोड़ा गया", + "dashboard_activity_took": "{duration} लगा", + "dashboard_peer_shared_repos": "साझा Repos", + "dashboard_retention_hourly": "{count} प्रति घंटा", + "dashboard_retention_daily": "{count} दैनिक", + "dashboard_retention_weekly": "{count} साप्ताहिक", + "dashboard_retention_monthly": "{count} मासिक", + "dashboard_retention_yearly": "{count} वार्षिक", + "dashboard_repo_dest_local": "स्थानीय" } \ No newline at end of file diff --git a/webui/messages/id.json b/webui/messages/id.json index 88c574ff..a8bff050 100644 --- a/webui/messages/id.json +++ b/webui/messages/id.json @@ -32,15 +32,15 @@ "add_plan_modal_field_iexcludes_tooltip_prefix": "Jalur tidak peka huruf besar-kecil untuk dikecualikan dari cadangan Anda. Lihat ", "add_plan_modal_field_iexcludes_add": "Tambah Glob Pengecualian Tidak Peka Huruf Besar-Kecil", "add_plan_modal_field_schedule": "Jadwal Pencadangan", - "add_plan_modal_field_backup_flags": "Bendera Pencadangan", - "add_plan_modal_field_backup_flags_tooltip": "Bendera tambahan untuk ditambahkan ke perintah 'restic backup'", - "add_plan_modal_field_backup_flags_add": "Atur Bendera", - "add_plan_modal_validation_flag_pattern": "Nilai harus berupa bendera CLI, contohnya lihat restic backup --help", + "add_plan_modal_field_backup_flags": "Flag Pencadangan", + "add_plan_modal_field_backup_flags_tooltip": "Flag tambahan untuk ditambahkan ke perintah 'restic backup'", + "add_plan_modal_field_backup_flags_add": "Atur Flag", + "add_plan_modal_validation_flag_pattern": "Nilai harus berupa flag CLI, contohnya lihat restic backup --help", "add_plan_modal_preview_json": "Konfigurasi Rencana sebagai JSON", "add_plan_modal_see_guide_prefix": "Lihat ", "add_plan_modal_see_guide_link": "panduan memulai backrest", "add_plan_modal_see_guide_suffix": " untuk instruksi konfigurasi rencana.", - "add_plan_modal_field_hooks": "Pengait", + "add_plan_modal_field_hooks": "Hook", "settings_success_updated": "Pengaturan diperbarui", "settings_error_operation": "Galat operasi: ", "button_cancel": "Batal", @@ -74,9 +74,9 @@ "settings_multihost_identity_tooltip": "Identitas multihost digunakan untuk mengidentifikasi instans ini dalam pengaturan multihost. Ini diturunkan secara kriptografi dari kunci publik instans ini.", "settings_multihost_identity_placeholder": "Identitas multihost unik", "button_copy": "salin", - "settings_multihost_authorized_clients": "Klien Resmi", - "settings_multihost_authorized_clients_tooltip": "Klien resmi adalah instans Backrest lain yang diizinkan untuk mengakses repositori di instans ini.", - "settings_multihost_authorized_client_item": "Klien Resmi", + "settings_multihost_authorized_clients": "Rekan Terpercaya", + "settings_multihost_authorized_clients_tooltip": "Rekan terpercaya adalah instans Backrest lain yang diizinkan untuk terhubung dan mengakses repositori di instans ini. Rekan ditambahkan secara otomatis melalui token penyandingan.", + "settings_multihost_authorized_client_item": "Rekan Terpercaya", "settings_multihost_known_hosts": "Host yang Dikenal", "settings_multihost_known_hosts_tooltip": "Host yang dikenal adalah instans Backrest lain yang dapat dihubungkan oleh instans ini.", "settings_multihost_known_host_item": "Host yang Dikenal", @@ -105,25 +105,25 @@ "peer_default_name": "Rekan", "repo_error_index": "Gagal mengindeks snapshot: ", "repo_info_unlocking": "Membuka kunci repo...", - "repo_success_unlocked": "Repo tidak terkunci.", + "repo_success_unlocked": "Repo berhasil dibuka kuncinya.", "repo_error_unlock": "Gagal membuka kunci repo: ", "repo_error_stats": "Gagal menghitung statistik: ", - "repo_error_prune": "Gagal memangkas: ", + "repo_error_prune": "Gagal melakukan prune: ", "repo_error_check": "Gagal memeriksa: ", "repo_deleted_message": "Repo telah dihapus", "repo_tab_tree": "Tampilan Pohon", "repo_tab_list": "Tampilan Daftar", - "repo_history_title": "Riwayat Aksi Cadangan", + "repo_history_title": "Riwayat Aktivitas Pencadangan", "repo_tab_stats": "Statistik", "loading": "Memuat...", "repo_button_run_command": "Jalankan Perintah", "repo_tooltip_run_command": "Pengguna tingkat lanjut: buka shell restic untuk menjalankan perintah pada repositori. Indeks ulang snapshot untuk mencerminkan perubahan apa pun di Backrest.", "repo_button_index": "Indeks Snapshot", - "repo_tooltip_index": "Mengindeks snapshot dalam repositori. Snapshot juga diindeks secara otomatis setelah setiap cadangan.", + "repo_tooltip_index": "Mengindeks snapshot dalam repositori. Snapshot juga diindeks secara otomatis setelah setiap pencadangan.", "repo_button_unlock": "Buka Kunci Repo", "repo_tooltip_unlock": "Menghapus berkas kunci dan memeriksa repositori untuk kesalahan. Jalankan hanya jika Anda yakin repo tidak sedang diakses oleh sistem lain", - "repo_button_prune": "Pangkas Sekarang", - "repo_tooltip_prune": "Menjalankan operasi pangkas pada repositori yang akan menghapus snapshot lama dan membebaskan ruang", + "repo_button_prune": "Prune Sekarang", + "repo_tooltip_prune": "Menjalankan operasi prune pada repositori yang akan menghapus snapshot lama dan membebaskan ruang", "repo_button_check": "Periksa Sekarang", "repo_tooltip_check": "Menjalankan operasi pemeriksaan pada repositori yang akan memverifikasi integritas repositori", "repo_button_stats": "Hitung Statistik", @@ -233,8 +233,8 @@ "op_row_removed_snapshot_desc": "snapshot {id} yang diambil pada {time} dihapus", "op_row_policy_header": "Kebijakan:", "op_row_fetch_download_error": "Gagal mengambil URL unduhan: ", - "plan_backup_scheduled": "Cadangan dijadwalkan.", - "plan_error_backup": "Gagal menjadwalkan cadangan: ", + "plan_backup_scheduled": "Pencadangan dijadwalkan.", + "plan_error_backup": "Gagal menjadwalkan pencadangan: ", "plan_clearing_history": "Membersihkan riwayat kesalahan...", "plan_history_cleared": "Riwayat kesalahan dibersihkan.", "plan_error_clear_history": "Gagal membersihkan riwayat kesalahan: ", @@ -242,7 +242,7 @@ "plan_button_backup": "Cadangkan Sekarang", "plan_button_clear_history": "Bersihkan Riwayat Kesalahan", "plan_tooltip_clear_history": "Menghapus operasi yang gagal dari daftar", - "op_type_backup": "Cadangan", + "op_type_backup": "Pencadangan", "op_type_snapshot": "Snapshot", "op_type_forget": "Forget", "op_type_prune": "Prune", @@ -268,7 +268,7 @@ "op_subtitle_cancelled_user": "dibatalkan oleh pengguna", "op_subtitle_cancelled_system": "dibatalkan oleh sistem", "op_subtitle_took": "memakan waktu {duration}", - "add_repo_modal_error_env_format": "Variabel lingkungan harus dalam format KUNCI=NILAI", + "add_repo_modal_error_env_format": "Variabel lingkungan harus dalam format KEY=VALUE", "add_repo_modal_button_set_env": "Atur Variabel Lingkungan", "add_repo_modal_field_flags": "Flag", "add_repo_modal_error_flag_format": "Nilai harus berupa Flag CLI, contohnya lihat restic --help", @@ -284,9 +284,9 @@ "add_repo_modal_field_check_policy": "Kebijakan Periksa (Check)", "add_repo_modal_field_check_policy_heading": "Kebijakan Periksa (Check)", "add_repo_modal_field_check_policy_help": "Operasi periksa (check) memverifikasi integritas repositori restic Anda. Operasi ini sebaiknya tidak sering dijalankan, sekitar sebulan sekali adalah titik awal yang baik. Periksa akan, minimal, memverifikasi struktur repositori Anda. Secara opsional, periksa juga dapat mengunduh ulang dan memverifikasi checksum untuk data paket, ini berguna jika penyimpanan Anda rentan terhadap bit yang terbalik atau kehilangan data secara diam-diam.", - "add_repo_modal_field_check_policy_tooltip": "Jadwal di mana operasi periksa dijalankan untuk repositori ini. Operasi periksa restic memverifikasi integritas repositori Anda dengan memindai struktur pada disk yang membentuk data cadangan Anda. Periksa secara opsional dapat dikonfigurasi untuk membaca ulang dan menghitung ulang hash data, ini lambat dan dapat memakan bandwidth tetapi akan menangkap setiap bitrot atau korupsi diam-diam di media penyimpanan.", + "add_repo_modal_field_check_policy_tooltip": "Jadwal dijalankannya operasi check untuk repositori ini. Operasi check restic memverifikasi integritas repositori Anda dengan memindai struktur pada disk yang membentuk data backup Anda. Check secara opsional dapat dikonfigurasi untuk membaca ulang dan menghitung ulang hash data; ini lambat dan dapat memakan bandwidth, tetapi akan mendeteksi adanya bitrot atau kerusakan tersembunyi (silent corruption) pada media penyimpanan.", "add_repo_modal_field_read_data": "Baca Data %", - "add_repo_modal_field_read_data_tooltip": "Persentase data paket di repositori ini yang akan dibaca dan diverifikasi. Nilai yang lebih tinggi akan menggunakan lebih banyak bandwidth (misalnya 100% akan membaca ulang seluruh repositori pada setiap pemeriksaan).", + "add_repo_modal_field_read_data_tooltip": "Persentase data paket di repositori ini yang akan dibaca dan diverifikasi. Nilai yang lebih tinggi akan menggunakan lebih banyak bandwidth (misalnya 100% akan membaca ulang seluruh repositori pada setiap check).", "add_repo_modal_field_command_modifiers": "Pengubah Perintah", "add_repo_modal_field_command_modifiers_tooltip": "Pengubah untuk operasi pencadangan, contohnya mengatur prioritas CPU atau IO.", "add_repo_modal_field_io_priority": "Prioritas IO:", @@ -307,8 +307,8 @@ "dashboard_error_fetch": "Gagal mengambil data ringkasan: ", "dashboard_repos_title": "Repositori", "dashboard_repos_empty": "Tidak ada repositori ditemukan", - "dashboard_plans_title": "Rencana", - "dashboard_plans_empty": "Tidak ada rencana ditemukan", + "dashboard_plans_title": "Plan", + "dashboard_plans_empty": "Tidak ada plan ditemukan", "dashboard_system_info_title": "Informasi Sistem", "dashboard_config_path": "Jalur Konfigurasi", "dashboard_data_dir": "Direktori Data", @@ -357,14 +357,14 @@ "op_row_error_path": "Jalur", "op_row_error_message": "Pesan", "add_repo_modal_env_vars_placeholder": "KEY=VALUE (Satu per baris)", - "app_menu_edit_plan": "Edit Rencana", + "app_menu_edit_plan": "Edit Plan", "add_repo_modal_field_auto_unlock_tooltip": "Pembuka kunci otomatis akan menghapus lockfile di awal sebagian besar operasi. Ini berpotensi tidak aman jika repositori dibagikan oleh beberapa perangkat klien, jika tidak, direkomendasikan untuk pengaturan klien tunggal.", "op_row_cancel_op": "Batalkan Operasi", "op_row_confirm_cancel": "Konfirmasi Pembatalan?", - "op_type_dry_run_backup": "Backup Uji Coba", - "plan_dry_run_scheduled": "Backup uji coba dijadwalkan", + "op_type_dry_run_backup": "Uji Coba Pencadangan", + "plan_dry_run_scheduled": "Uji coba pencadangan dijadwalkan", "plan_dry_run_error": "Uji coba gagal: ", - "add_plan_modal_field_repository_select": "Pilih repository", + "add_plan_modal_field_repository_select": "Pilih repositori", "add_plan_modal_field_add": "Tambah", "add_plan_modal_field_add_hook": "Tambah Hook", "add_plan_modal_field_paths_tooltip": "Jalur yang akan disertakan dalam snapshot yang dibuat oleh rencana ini", @@ -429,11 +429,11 @@ "dashboard_getting_started_title": "Memulai", "dashboard_getting_started_check": "Periksa rilis Backrest baru di GitHub", "dashboard_getting_started_overview": "Gambaran Umum", - "dashboard_getting_started_overview_a": "Repositori memetakan langsung ke restic repository, mulailah dengan mengkonfigurasi lokasi backup Anda.", - "dashboard_getting_started_overview_b": "Plan adalah tempat Anda mengkonfigurasi direktori untuk backup, dan penjadwalan backup. Beberapa plan dapat melakukan backup ke satu restic repository.", + "dashboard_getting_started_overview_a": "Repo memetakan langsung ke repositori restic, mulailah dengan mengonfigurasi lokasi pencadangan Anda.", + "dashboard_getting_started_overview_b": "Plan adalah tempat Anda mengonfigurasi direktori untuk dicadangkan, dan penjadwalan pencadangan. Beberapa plan dapat melakukan pencadangan ke satu repositori restic.", "dashboard_getting_started_overview_c_a": "Lihat ", - "dashboard_getting_started_overview_c_b": "dokumentasi restic tentang menyiapkan repository baru", - "dashboard_getting_started_overview_c_c": " untuk detail tentang jenis repository yang tersedia dan cara konfigurasinya.", + "dashboard_getting_started_overview_c_b": "dokumentasi restic tentang menyiapkan repositori baru", + "dashboard_getting_started_overview_c_c": " untuk detail tentang jenis repositori yang tersedia dan cara konfigurasinya.", "dashboard_getting_started_overview_d_a": "Lihat ", "dashboard_getting_started_overview_d_b": "wiki Backrest", "dashboard_getting_started_overview_d_c": " untuk instruksi tentang cara mengkonfigurasi Backrest.", @@ -446,7 +446,7 @@ "add_plan_modal_advanced_label": "Lanjutan", "add_plan_modal_schedule_type_label": "Jenis Jadwal", "add_plan_modal_schedule_disabled_label": "Dinonaktifkan", - "add_plan_modal_schedule_disabled_description": "snapshot otomatis dinonaktifkan untuk plan ini. Anda masih dapat menjalankan backup secara manual.", + "add_plan_modal_schedule_disabled_description": "Eksekusi otomatis dinonaktifkan untuk jadwal ini. Anda masih dapat memicu jadwal ini secara manual.", "add_plan_modal_schedule_interval_hours": "Interval (Jam)", "add_plan_modal_schedule_interval_days": "Interval (Hari)", "add_plan_modal_schedule_interval_in_hours": "Interval dalam Jam", @@ -460,43 +460,80 @@ "add_plan_modal_schedule_time_utc": "UTC", "add_plan_modal_schedule_time_last": "Waktu Eksekusi Terakhir", "add_repo_modal_field_forget_policy": "Kebijakan Forget", - "add_repo_modal_field_forget_policy_help": "Opsional menjadwalkan forget di seluruh repositori yang menerapkan satu kebijakan retensi tunggal di semua plan. Saat diaktifkan, kebijakan retensi per-plan akan dinonaktifkan.", + "add_repo_modal_field_forget_policy_help": "Opsional menjadwalkan forget di seluruh repositori yang menerapkan satu kebijakan retensi tunggal di semua plan. Saat diaktifkan, kebijakan retensi per-plan akan dinonaktifkan. Ini adalah fitur lanjutan. Lebih disarankan menggunakan kebijakan retensi per-plan kecuali jika repositori dibagikan ke beberapa mesin.", "add_repo_modal_retention_policy_label": "Kebijakan Retensi (Tingkat Repo)", "add_repo_modal_retention_policy_help": "Kebijakan retensi yang diterapkan pada backup yang dikelompokkan berdasarkan plan, dijalankan sesuai jadwal di atas pada tingkat repo. Nonaktifkan jadwal untuk menerapkan kebijakan retensi per-plan setelah setiap operasi backup.", "add_plan_modal_retention_managed_by_repo": "Retensi dikelola pada tingkat repositori melalui Kebijakan Forget repo. Edit repositori untuk mengubah pengaturan retensi.", - "dashboard_activity_no_backups": "No backups recorded yet.", - "dashboard_activity_row_completed": "Completed", - "dashboard_activity_row_completed_warnings": "Completed with warnings", - "dashboard_activity_row_failed": "Failed", + "dashboard_activity_no_backups": "Belum ada backup yang tercatat.", + "dashboard_activity_row_completed": "Selesai", + "dashboard_activity_row_completed_warnings": "Selesai dengan peringatan", + "dashboard_activity_row_failed": "Gagal", "dashboard_activity_row_label": "{plan} · {status}", - "dashboard_activity_row_ran": "Ran", - "dashboard_activity_title": "Recent activity", - "dashboard_card_destination": "Destination", - "dashboard_card_last_upload": "Last upload", - "dashboard_card_next_run": "Next run", - "dashboard_card_protected": "Protected", - "dashboard_card_retention": "Keeps {parts}", - "dashboard_hero_err": "A backup needs attention", - "dashboard_hero_idle": "Waiting for first backup", - "dashboard_hero_last_backup": "Last backup {ago}", - "dashboard_hero_next": "next {when}", - "dashboard_hero_no_backups": "No backups recorded yet", - "dashboard_hero_ok": "Everything's backed up", - "dashboard_hero_run": "Backing up now", - "dashboard_hero_warn": "Backed up, with warnings", - "dashboard_history_all_backed_up": "Backed up every day since you started", - "dashboard_history_issues": "{count} with issues", - "dashboard_history_legend_backed_up": "Backed up", - "dashboard_history_legend_issue": "Issue", - "dashboard_history_legend_missed": "Missed", - "dashboard_history_missed": "{count} days missed", - "dashboard_history_no_data": "Backup history will fill in as it runs", - "dashboard_history_summary": "{details} in the last 30 days", - "dashboard_history_tooltip_before_start": "Before you started", - "dashboard_history_tooltip_no_backup": "No backup", - "dashboard_state_label_err": "Backup failed", - "dashboard_state_label_idle": "No backups yet", - "dashboard_state_label_ok": "Backed up", - "dashboard_state_label_run": "Backing up", - "dashboard_state_label_warn": "Backed up, with warnings" + "dashboard_activity_row_ran": "Dijalankan", + "dashboard_activity_title": "Aktivitas terbaru", + "dashboard_card_destination": "Tujuan", + "dashboard_card_last_upload": "Unggahan terakhir", + "dashboard_card_next_run": "Eksekusi berikutnya", + "dashboard_card_protected": "Terproteksi", + "dashboard_card_retention": "Menyimpan {parts}", + "dashboard_hero_err": "Pencadangan memerlukan perhatian", + "dashboard_hero_idle": "Menunggu pencadangan pertama", + "dashboard_hero_last_backup": "Pencadangan terakhir {ago}", + "dashboard_hero_next": "berikutnya {when}", + "dashboard_hero_no_backups": "Belum ada pencadangan yang tercatat", + "dashboard_hero_ok": "Semua telah dicadangkan", + "dashboard_hero_run": "Sedang mencadangkan sekarang", + "dashboard_hero_warn": "Dicadangkan, dengan peringatan", + "dashboard_history_all_backed_up": "Dicadangkan setiap hari sejak Anda memulai", + "dashboard_history_issues": "{count} dengan masalah", + "dashboard_history_legend_backed_up": "Dicadangkan", + "dashboard_history_legend_issue": "Masalah", + "dashboard_history_legend_missed": "Terlewat", + "dashboard_history_missed": "{count} hari terlewat", + "dashboard_history_no_data": "Riwayat pencadangan akan terisi seiring berjalannya proses", + "dashboard_history_summary": "{details} dalam 30 hari terakhir", + "dashboard_history_tooltip_before_start": "Sebelum Anda memulai", + "dashboard_history_tooltip_no_backup": "Tidak ada pencadangan", + "dashboard_state_label_err": "Pencadangan gagal", + "dashboard_state_label_idle": "Belum ada pencadangan", + "dashboard_state_label_ok": "Dicadangkan", + "dashboard_state_label_run": "Sedang mencadangkan", + "dashboard_state_label_warn": "Dicadangkan, dengan peringatan", + "repo_error_forget": "Gagal melakukan forget: ", + "repo_button_forget": "Forget Sekarang", + "repo_tooltip_forget": "Menjalankan operasi forget pada repositori dengan menerapkan kebijakan retensi tingkat repo", + "add_repo_modal_shared_forget_hint": "Tip: saat berbagi repositori di beberapa mesin, konfigurasikan juga Kebijakan Forget terjadwal tingkat repo (di bawah Penjadwalan) agar retensi diterapkan secara konsisten ke snapshot dari semua peer.", + "dashboard_time_never": "tidak pernah", + "dashboard_time_just_now": "baru saja", + "dashboard_time_a_minute_ago": "semenit yang lalu", + "dashboard_time_minutes_ago": "{count} menit yang lalu", + "dashboard_time_an_hour_ago": "sejam yang lalu", + "dashboard_time_hour_ago": "{count} jam yang lalu", + "dashboard_time_hours_ago": "{count} jam yang lalu", + "dashboard_time_yesterday": "kemarin", + "dashboard_time_days_ago": "{count} hari yang lalu", + "dashboard_time_due_now": "saatnya sekarang", + "dashboard_time_in_minutes": "dalam {count} menit", + "dashboard_time_in_hours": "dalam {count} jam", + "dashboard_time_in_days": "dalam {count} hari", + "dashboard_time_soon": "segera", + "dashboard_schedule_every_minutes": "Berjalan setiap {count} menit", + "dashboard_schedule_hourly": "Berjalan setiap jam", + "dashboard_schedule_daily": "Berjalan setiap hari", + "dashboard_schedule_every_hours": "Berjalan setiap {count} jam", + "dashboard_card_progress_detail": "{pct}% · {done} dari {total}", + "dashboard_card_progress_pct": "{pct}% selesai", + "dashboard_card_progress_scanning": "Memindai…", + "dashboard_repo_window_30d": "30 hari", + "dashboard_repo_ok": "{count} berhasil", + "dashboard_repo_failed": "{count} gagal", + "dashboard_repo_added": "Ditambahkan", + "dashboard_activity_took": "memakan waktu {duration}", + "dashboard_peer_shared_repos": "Repositori Bersama", + "dashboard_retention_hourly": "{count} per jam", + "dashboard_retention_daily": "{count} harian", + "dashboard_retention_weekly": "{count} mingguan", + "dashboard_retention_monthly": "{count} bulanan", + "dashboard_retention_yearly": "{count} tahunan", + "dashboard_repo_dest_local": "Lokal" } \ No newline at end of file diff --git a/webui/messages/it.json b/webui/messages/it.json index a25d96de..6ac7db7d 100644 --- a/webui/messages/it.json +++ b/webui/messages/it.json @@ -10,7 +10,7 @@ "add_plan_modal_title_add": "Aggiungi piano", "add_plan_modal_button_cancel": "Annulla", "add_plan_modal_button_delete": "Elimina", - "add_plan_modal_button_confirm_delete": "Conferma Elimina", + "add_plan_modal_button_confirm_delete": "Conferma eliminazione", "add_plan_modal_button_submit": "Invia", "add_plan_modal_field_plan_name": "Nome del piano", "add_plan_modal_field_plan_name_tooltip": "ID univoco che identifica questo piano nell'interfaccia utente del backrest (ad esempio s3-myplan). Non può essere modificato dopo la creazione.", @@ -26,7 +26,7 @@ "add_plan_modal_field_paths_placeholder": "Inserisci i percorsi, uno per riga\nper esempio\n/home/utente/documenti\n/home/utente/foto", "add_plan_modal_field_excludes": "Esclusioni", "add_plan_modal_field_excludes_tooltip_prefix": "Percorsi da escludere dai backup. Vedi ", - "add_plan_modal_field_excludes_tooltip_link": "documenti restic", + "add_plan_modal_field_excludes_tooltip_link": "documentazione di restic", "add_plan_modal_field_excludes_tooltip_suffix": " per maggiori informazioni.", "add_plan_modal_field_excludes_add": "Aggiungi esclusione (Glob)", "add_plan_modal_field_iexcludes": "Esclusioni (senza distinzione tra maiuscole e minuscole)", @@ -73,14 +73,14 @@ "settings_multihost_identity_tooltip": "L'identità multihost viene utilizzata per identificare questa istanza in una configurazione multihost. Viene ricavata crittograficamente dalla chiave pubblica di questa istanza.", "settings_multihost_identity_placeholder": "Identità multihost unica", "button_copy": "copia", - "settings_multihost_authorized_clients": "Client autorizzati", - "settings_multihost_authorized_clients_tooltip": "I client autorizzati sono altre istanze di Backrest a cui è consentito accedere ai repository su questa istanza.", - "settings_multihost_authorized_client_item": "Client autorizzato", + "settings_multihost_authorized_clients": "Peer attendibili", + "settings_multihost_authorized_clients_tooltip": "I peer attendibili sono altre istanze di Backrest a cui è consentito connettersi e accedere ai repository su questa istanza. I peer vengono aggiunti automaticamente tramite token di associazione.", + "settings_multihost_authorized_client_item": "Peer attendibile", "settings_multihost_known_hosts": "Host noti", "settings_multihost_known_hosts_tooltip": "Gli host noti sono altre istanze di Backrest a cui questa istanza può connettersi.", "settings_multihost_known_host_item": "Host noto", "settings_peer_instance_id": "ID istanza", - "settings_peer_instance_id_placeholder": "ad esempio il mio server di backup", + "settings_peer_instance_id_placeholder": "ad es. mio-server-di-backup", "settings_peer_key_id": "ID chiave", "settings_peer_key_id_required": "È richiesto l'ID chiave", "settings_peer_key_id_placeholder": "Identificatore della chiave pubblica", @@ -107,7 +107,7 @@ "repo_success_unlocked": "Repository sbloccato.", "repo_error_unlock": "Impossibile sbloccare il repository: ", "repo_error_stats": "Impossibile calcolare le statistiche: ", - "repo_error_prune": "Impossibile eseguire pulizia: ", + "repo_error_prune": "Impossibile eseguire il prune: ", "repo_error_check": "Impossibile verificare: ", "repo_deleted_message": "Il repository è stato eliminato", "repo_tab_tree": "Vista ad albero", @@ -121,8 +121,8 @@ "repo_tooltip_index": "Indicizza gli snapshot nel repository. Gli snapshot vengono inoltre indicizzati automaticamente dopo ogni backup.", "repo_button_unlock": "Sblocca repository", "repo_tooltip_unlock": "Rimuove i file di blocco e controlla il repository per eventuali errori. Eseguilo solo se sei sicuro che il repository non sia in uso da un altro sistema.", - "repo_button_prune": "Esegui pulizia", - "repo_tooltip_prune": "Esegue un'operazione di pulizia sul repository che rimuoverà i vecchi snapshot e libererà spazio", + "repo_button_prune": "Esegui prune ora", + "repo_tooltip_prune": "Esegue un'operazione di prune sul repository che rimuoverà i vecchi snapshot e libererà spazio", "repo_button_check": "Verifica ora", "repo_tooltip_check": "Esegue un'operazione di verifica sul repository che verificherà l'integrità del repository", "repo_button_stats": "Calcola statistiche", @@ -166,10 +166,10 @@ "add_repo_modal_test_success_existing": "Connessione riuscita a {uri} e trovato un repository esistente.", "add_repo_modal_test_success_new": "Connessione riuscita a {uri}. Nessun repository esistente trovato in questa posizione, ne verrà inizializzato uno nuovo.", "add_repo_modal_test_error": "Errore nel test: ", - "add_repo_modal_guide_text_p1": "Consultare ", + "add_repo_modal_guide_text_p1": "Consultare la ", "add_repo_modal_guide_link_text": "guida introduttiva a backrest", "add_repo_modal_guide_text_p2": " per le istruzioni di configurazione del repository o controllare la ", - "add_repo_modal_guide_restic_link_text": "la documentazione restic", + "add_repo_modal_guide_restic_link_text": "documentazione di restic", "add_repo_modal_guide_text_p3": " per maggiori dettagli sui repository.", "add_repo_modal_field_repo_name": "Nome del repository", "add_repo_modal_field_repo_name_tooltip": "ID univoco che identifica questo repository nell'interfaccia utente di Backrest (ad esempio s3-mybucket). Non può essere modificato dopo la creazione.", @@ -187,7 +187,7 @@ "add_repo_modal_field_password": "Password", "add_repo_modal_field_password_tooltip_intro": "Questa password crittografa i dati nel tuo repository.", "add_repo_modal_field_password_tooltip_entropy": "Si consiglia di scegliere un valore pari a 128 bit di entropia (20 caratteri o più)", - "add_repo_modal_field_password_tooltip_env": "In alternativa, è possibile fornire credenziali variabili di ambiente, ad esempio RESTIC_PASSWORD, RESTIC_PASSWORD_FILE o RESTIC_PASSWORD_COMMAND.", + "add_repo_modal_field_password_tooltip_env": "In alternativa, è possibile fornire credenziali tramite variabili di ambiente, ad esempio RESTIC_PASSWORD, RESTIC_PASSWORD_FILE o RESTIC_PASSWORD_COMMAND.", "add_repo_modal_field_password_tooltip_generate": "Fai clic su [Genera] per generare una password casuale dall'API crittografica casuale del tuo browser.", "add_repo_modal_button_generate": "[Genera]", "add_repo_modal_field_env_vars": "Env Vars", @@ -203,10 +203,10 @@ "add_repo_modal_field_prune_policy_tooltip_p2": " per maggiori dettagli.", "add_repo_modal_field_max_unused": "Max inutilizzato dopo il Pruning", "add_repo_modal_field_max_unused_tooltip": "Percentuale massima della dimensione del repository che può rimanere inutilizzata dopo il completamento di un'operazione di pruning. Valori elevati riducono la copia a scapito dello spazio di archiviazione.", - "add_repo_modal_field_check_policy": "Politica di Verifica", - "add_repo_modal_field_check_policy_tooltip": "La pianificazione in base alla quale vengono eseguite le operazioni di controllo per questo repository. Le operazioni di controllo di restic verificano l'integrità del repository analizzando le strutture su disco che compongono i dati di backup. Il controllo può essere opzionalmente configurato per rileggere e rieseguire l'hash dei dati. Questa operazione è lenta e può richiedere un dispendio di banda, ma rileverà eventuali bitrot o danneggiamenti silenti nel supporto di archiviazione.", - "add_repo_modal_field_read_data": "Percentuale dati letti", - "add_repo_modal_field_read_data_tooltip": "La percentuale di dati del pacchetto in questo repository che verrà letta e verificata. Valori più alti utilizzeranno più larghezza di banda (ad esempio, il 100% rileggerà l'intero repository a ogni controllo).", + "add_repo_modal_field_check_policy": "Politica di controllo", + "add_repo_modal_field_check_policy_tooltip": "La pianificazione in base alla quale vengono eseguite le operazioni di check per questo repository. Le operazioni di check di restic verificano l'integrità del repository analizzando le strutture su disco che compongono i dati di backup. Il check può essere opzionalmente configurato per rileggere e rieseguire l'hash dei dati. Questa operazione è lenta e può richiedere un dispendio di banda, ma rileverà eventuali bitrot o danneggiamenti silenti nel supporto di archiviazione.", + "add_repo_modal_field_read_data": "Dati da leggere (%)", + "add_repo_modal_field_read_data_tooltip": "La percentuale di dati dei pack in questo repository che verrà letta e verificata. Valori più alti utilizzeranno più larghezza di banda (ad esempio, il 100% rileggerà l'intero repository a ogni check).", "add_repo_modal_field_command_modifiers": "Modificatori dei comandi", "add_repo_modal_field_command_modifiers_tooltip": "Modificatori per l'operazione di backup, ad esempio per impostare la priorità della CPU o dell'IO.", "add_repo_modal_field_io_priority": "Priorità IO:", @@ -233,19 +233,19 @@ "dashboard_config_path": "Percorso di configurazione", "dashboard_data_dir": "Directory dei dati", "dashboard_config_json": "Configurazione in formato JSON", - "dashboard_backup_tooltip_time": "Backup a {time}", + "dashboard_backup_tooltip_time": "Backup alle {time}", "dashboard_backup_tooltip_pending": "Programmato, in attesa.", "dashboard_backup_tooltip_finished": "Ha impiegato {duration}, ha aggiunto {bytes}", - "dashboard_card_backups_30d": "Backup (30gg)", + "dashboard_card_backups_30d": "Backup (30g)", "dashboard_card_backups_ok": "OK", "dashboard_card_backups_failed": "fallito", - "dashboard_card_backups_warning": "avvertimento", - "dashboard_card_bytes_scanned_30d": "Byte scansionati (30d)", - "dashboard_card_bytes_added_30d": "Byte aggiunti (30d)", + "dashboard_card_backups_warning": "avviso", + "dashboard_card_bytes_scanned_30d": "Byte scansionati (30g)", + "dashboard_card_bytes_added_30d": "Byte aggiunti (30g)", "dashboard_card_next_backup": "Prossimo backup pianificato", "dashboard_card_none_scheduled": "Nessuno pianificato", - "dashboard_card_bytes_scanned_avg": "Byte scansionati in media", - "dashboard_card_bytes_added_avg": "Byte aggiunti in media", + "dashboard_card_bytes_scanned_avg": "Media byte scansionati", + "dashboard_card_bytes_added_avg": "Media byte aggiunti", "dashboard_remote_hosts_title": "Host remoti", "dashboard_remote_clients_title": "Client remoti", "dashboard_peer_instance_id": "ID istanza", @@ -279,7 +279,7 @@ "op_status_cancelled": "annullato", "op_status_unknown": "Sconosciuto", "op_subtitle_scheduled": "programmato, in attesa", - "op_subtitle_processed": "{percentage}% elaborati", + "op_subtitle_processed": "{percentage}% elaborato", "op_subtitle_bytes_total": "{bytes}/{total}", "op_subtitle_summary": "{bytes} in {duration}", "op_subtitle_id": "ID: {id}", @@ -289,16 +289,16 @@ "op_subtitle_took": "ha impiegato {duration}", "op_row_deleted_success": "Operazione eliminata", "op_row_deleted_error": "Impossibile eliminare l'operazione: ", - "op_row_cancel_success": "Richiesto di annullare l'operazione", + "op_row_cancel_success": "Richiesto l'annullamento dell'operazione", "op_row_cancel_error": "Impossibile annullare l'operazione: ", - "op_row_logs_title": "Registri per l'operazione {name} a {time}", - "op_row_view_logs": "Visualizza registri", + "op_row_logs_title": "Log dell'operazione {name} del {time}", + "op_row_view_logs": "Visualizza log", "op_row_backup_details": "Dettagli del backup", "op_row_item_errors": "Errori dell'elemento", "op_row_error_on_item": "Errore sull'elemento: {item}", "op_row_details": "Dettagli", "op_row_snapshot_browser": "Browser di istantanee", - "op_row_removed_snapshots": "Rimossi {count} istantanee", + "op_row_removed_snapshots": "Rimosse {count} istantanee", "op_row_prune_output": "Output di Prune", "op_row_check_output": "Output di Check", "op_row_command_output": "Output del comando", @@ -307,7 +307,7 @@ "op_row_hooks_triggered": "Hook attivati", "op_row_snapshot_id": "ID istantanea: ", "op_row_user_host": "Utente e host", - "op_row_tags": "Etichette", + "op_row_tags": "Tag", "op_row_files_added": "File aggiunti", "op_row_files_changed": "File modificati", "op_row_files_unmodified": "File non modificati", @@ -316,12 +316,12 @@ "op_row_total_files": "Totale file elaborati", "op_row_restore_desc": "Ripristina {path} in {target}", "op_row_download_files": "Scarica file", - "op_row_restored_snapshot_id": "ID istantanea ripristinata: {id}", - "op_row_bytes_done_total": "Byte eseguiti/totale", + "op_row_restored_snapshot_id": "ID snapshot ripristinato: {id}", + "op_row_bytes_done_total": "Byte completati/totale", "op_row_files_done_total": "File completati/totale", "op_row_no_status": "Ancora nessuno stato.", "op_row_current_files": "File correnti:", - "op_row_no_snapshot": "Nessuna istantanea creata", + "op_row_no_snapshot": "Nessun snapshot creato", "op_row_unexpected_status": "STATO INASPETTATO: ", "op_row_no_fields": "Nessun campo impostato. Questo non dovrebbe accadere.", "op_row_policy_keep_all": "Conserva tutto.", @@ -332,7 +332,7 @@ "op_row_policy_monthly": "Conserva {count} snapshot mensili", "op_row_policy_yearly": "Conserva {count} snapshot annuali", "op_row_policy_keep_latest": "Conserva gli ultimi {count} snapshot indipendentemente dall'età", - "op_row_removed_snapshot_desc": "rimosso snapshot {id} eseguito alle {time}", + "op_row_removed_snapshot_desc": "rimosso snapshot {id} creato alle {time}", "op_row_policy_header": "Politica:", "op_row_fetch_download_error": "Impossibile recuperare l'URL per il download: ", "op_row_removed_header": "Istantanee rimosse", @@ -365,150 +365,187 @@ "op_row_cancel_op": "Annulla operazione", "op_row_confirm_cancel": "Confermare l'annullamento?", "app_menu_dashboard": "Pannello di controllo", - "add_plan_modal_field_paths_tooltip": "Inserisci i percorsi dei file da sottoporre a backup, uno per riga. Il completamento automatico è disponibile durante la digitazione.", + "add_plan_modal_field_paths_tooltip": "Percorsi da includere negli snapshot creati da questo piano", "op_row_confirm_delete": "[Confermare l'eliminazione?]", "op_row_delete": "[Eliminare]", "settings_section_user_settings": "Impostazioni utente", "settings_field_language": "Lingua di visualizzazione", "add_repo_modal_field_prune_policy_heading": "Politica di Pruning", "add_repo_modal_field_prune_policy_help": "Le operazioni di pruning rimuovono i dati non referenziati dal repository restic, ad esempio snapshot dimenticati, ecc. Questa è l'unica volta in cui restic elimina dati dall'archivio. Il pruning dovrebbe essere eseguito raramente: circa una volta al mese è un buon punto di partenza.", - "add_repo_modal_field_check_policy_heading": "Politica di Verifica", + "add_repo_modal_field_check_policy_heading": "Politica di controllo", "add_repo_modal_field_check_policy_help": "Le operazioni di controllo verificano l'integrità del tuo repository restic. Dovrebbero essere eseguite raramente, circa una volta al mese è un buon punto di partenza. Il controllo verificherà, come minimo, la struttura del tuo repository. Facoltativamente, il controllo può anche riscaricare e verificare i checksum per i dati dei pacchetti, il che è utile se il tuo storage potrebbe essere soggetto a bit invertiti o perdite di dati silenziose.", "op_type_dry_run_backup": "Dry Run Backup", "plan_dry_run_scheduled": "Dry run backup pianificato", "plan_dry_run_error": "Dry run non riuscito: ", - "add_plan_modal_field_repository_select": "Select repository", - "add_plan_modal_field_add": "Add", - "add_plan_modal_field_add_hook": "Add Hook", - "hooks_from_list_a": "Hooks let you configure actions e.g. notifications and scripts that run in response to the backup lifecycle. See ", - "hooks_from_list_b": "the hook documentation", - "hooks_from_list_c": " for available options, or ", - "hooks_from_list_d": "the cookbook", - "hooks_from_list_e": " for scripting examples.", - "repo_tab_stats_no": "No stats available", - "repo_tab_stats_yet": "Have you run a stats operation yet?", - "repo_tab_stats_size": "Total Size", - "repo_tab_stats_ratio": "Compression Ratio", - "repo_tab_stats_count": "Snapshot Count", - "repo_tab_stats_blob": "Total Blob Count", - "repo_command_run": "Run Command in repo", - "repo_command_tooltip": "Run a restic command e.g. 'help' to print help text", - "repo_command_button_execute": "Execute", - "repo_command_no": "No operations yet", - "repo_command_no_op": "Operations will appear here once they start.", - "repo_hooks_command_label": "Command", + "add_plan_modal_field_repository_select": "Seleziona repository", + "add_plan_modal_field_add": "Aggiungi", + "add_plan_modal_field_add_hook": "Aggiungi hook", + "hooks_from_list_a": "Gli hook consentono di configurare azioni, ad esempio notifiche e script, da eseguire in risposta al ciclo di vita del backup. Vedi ", + "hooks_from_list_b": "la documentazione degli hook", + "hooks_from_list_c": " per le opzioni disponibili, oppure ", + "hooks_from_list_d": "il cookbook", + "hooks_from_list_e": " per esempi di scripting.", + "repo_tab_stats_no": "Nessuna statistica disponibile", + "repo_tab_stats_yet": "Hai già eseguito un'operazione sulle statistiche?", + "repo_tab_stats_size": "Dimensione totale", + "repo_tab_stats_ratio": "Rapporto di compressione", + "repo_tab_stats_count": "Numero di snapshot", + "repo_tab_stats_blob": "Numero totale di blob", + "repo_command_run": "Esegui comando nel repository", + "repo_command_tooltip": "Esegui un comando restic, ad es. 'help' per visualizzare la guida", + "repo_command_button_execute": "Esegui", + "repo_command_no": "Nessuna operazione ancora", + "repo_command_no_op": "Le operazioni appariranno qui una volta avviate.", + "repo_hooks_command_label": "Comando", "repo_hooks_healthchecks_label": "Healthchecks", - "repo_hooks_command_runs_when": "Runs when...", + "repo_hooks_command_runs_when": "Eseguito quando...", "repo_hooks_command_script_label": "Script:", - "repo_hooks_command_error_label": "Error Behavior:", - "repo_hooks_command_error_tooltip": "Error behavior...", - "repo_hooks_command_template_label": "Text Template:", - "repo_hooks_command_error_info_what": "What happens when the hook fails", - "repo_hooks_command_error_info_only": "(only effective on start hooks e.g. backup start)", - "repo_hooks_command_error_info_ignore": "IGNORE - failure is ignored", - "repo_hooks_command_error_info_fatal": "FATAL - stops operation with error", - "repo_hooks_command_error_info_cancel": "CANCEL - stops operation (cancelled)", - "repo_hooks_command_runs_info_available": "Available conditions", - "repo_hooks_command_runs_info_any_error": "CONDITION_ANY_ERROR - error executing any task", - "repo_hooks_command_runs_info_start": "CONDITION_SNAPSHOT_START - start of a backup operation", - "repo_hooks_command_runs_info_end": "CONDITION_SNAPSHOT_END - end of backup operation", - "repo_hooks_command_runs_info_success": "CONDITION_SNAPSHOT_SUCCESS - end of successful backup", - "repo_hooks_command_runs_info_error": "CONDITION_SNAPSHOT_ERROR - end of failed backup", - "repo_hooks_command_runs_info_warning": "CONDITION_SNAPSHOT_WARNING - end of partial backup", - "repo_hooks_command_runs_info_prune_start": "CONDITION_PRUNE_START - start of prune operation", - "repo_hooks_command_runs_info_docs": "... see docs for more", - "repo_hooks_command_runs_condition_snapshot_start": "Triggered when a backup operation begins and must complete successfully before the snapshot will begin.", - "repo_hooks_command_runs_condition_snapshot_end": "Triggered when a backup operation completes (regardless of success/failure)", - "repo_hooks_command_runs_condition_snapshot_success": "Triggered when a backup operation completes successfully", - "repo_hooks_command_runs_condition_snapshot_error": "Triggered when a backup operation fails", - "repo_hooks_command_runs_condition_snapshot_warning": "Triggered when a backup operation encounters non-fatal issues", - "repo_hooks_command_runs_condition_snapshot_skipped": "Triggered when a backup operation skips", - "repo_hooks_command_runs_condition_prune_start": "Triggered when a prune operation begins", - "repo_hooks_command_runs_condition_prune_success": "Triggered when a prune operation completes successfully", - "repo_hooks_command_runs_condition_prune_error": "Triggered when a prune operation fails", - "repo_hooks_command_runs_condition_check_start": "Triggered when a check operation begins", - "repo_hooks_command_runs_condition_check_success": "Triggered when a check operation completes successfully", - "repo_hooks_command_runs_condition_check_error": "Triggered when a check operation fails", - "repo_hooks_command_runs_condition_forget_start": "Triggered when a forget operation begins", - "repo_hooks_command_runs_condition_forget_success": "Triggered when a forget operation completes successfully", - "repo_hooks_command_runs_condition_forget_error": "Triggered when a forget operation fails", - "repo_hooks_command_runs_condition_any_error": "Triggered when any operation fails", - "repo_hooks_command_runs_condition_unknown": "Triggered when unknown", + "repo_hooks_command_error_label": "Comportamento in caso di errore:", + "repo_hooks_command_error_tooltip": "Comportamento in caso di errore...", + "repo_hooks_command_template_label": "Template di testo:", + "repo_hooks_command_error_info_what": "Cosa succede quando l'hook fallisce", + "repo_hooks_command_error_info_only": "(ha effetto solo sugli hook di avvio, ad es. avvio del backup)", + "repo_hooks_command_error_info_ignore": "IGNORE - l'errore viene ignorato", + "repo_hooks_command_error_info_fatal": "FATAL - interrompe l'operazione con un errore", + "repo_hooks_command_error_info_cancel": "CANCEL - interrompe l'operazione (annullata)", + "repo_hooks_command_runs_info_available": "Condizioni disponibili", + "repo_hooks_command_runs_info_any_error": "CONDITION_ANY_ERROR - errore durante l'esecuzione di qualsiasi attività", + "repo_hooks_command_runs_info_start": "CONDITION_SNAPSHOT_START - avvio di un'operazione di backup", + "repo_hooks_command_runs_info_end": "CONDITION_SNAPSHOT_END - fine dell'operazione di backup", + "repo_hooks_command_runs_info_success": "CONDITION_SNAPSHOT_SUCCESS - fine di un backup completato con successo", + "repo_hooks_command_runs_info_error": "CONDITION_SNAPSHOT_ERROR - fine di un backup fallito", + "repo_hooks_command_runs_info_warning": "CONDITION_SNAPSHOT_WARNING - fine di un backup parziale", + "repo_hooks_command_runs_info_prune_start": "CONDITION_PRUNE_START - avvio dell'operazione di prune", + "repo_hooks_command_runs_info_docs": "... vedi la documentazione per maggiori dettagli", + "repo_hooks_command_runs_condition_snapshot_start": "Attivato all'avvio di un'operazione di backup; deve completarsi con successo prima che lo snapshot abbia inizio.", + "repo_hooks_command_runs_condition_snapshot_end": "Attivato al completamento di un'operazione di backup (indipendentemente dall'esito)", + "repo_hooks_command_runs_condition_snapshot_success": "Attivato quando un'operazione di backup viene completata con successo", + "repo_hooks_command_runs_condition_snapshot_error": "Attivato quando un'operazione di backup fallisce", + "repo_hooks_command_runs_condition_snapshot_warning": "Attivato quando un'operazione di backup riscontra problemi non fatali", + "repo_hooks_command_runs_condition_snapshot_skipped": "Attivato quando un'operazione di backup viene saltata", + "repo_hooks_command_runs_condition_prune_start": "Attivato all'avvio di un'operazione di prune", + "repo_hooks_command_runs_condition_prune_success": "Attivato quando un'operazione di prune viene completata con successo", + "repo_hooks_command_runs_condition_prune_error": "Attivato quando un'operazione di prune fallisce", + "repo_hooks_command_runs_condition_check_start": "Attivato all'avvio di un'operazione di check", + "repo_hooks_command_runs_condition_check_success": "Attivato quando un'operazione di check viene completata con successo", + "repo_hooks_command_runs_condition_check_error": "Attivato quando un'operazione di check fallisce", + "repo_hooks_command_runs_condition_forget_start": "Attivato all'avvio di un'operazione di forget", + "repo_hooks_command_runs_condition_forget_success": "Attivato quando un'operazione di forget viene completata con successo", + "repo_hooks_command_runs_condition_forget_error": "Attivato quando un'operazione di forget fallisce", + "repo_hooks_command_runs_condition_any_error": "Attivato quando una qualsiasi operazione fallisce", + "repo_hooks_command_runs_condition_unknown": "Attivato quando sconosciuto", "app_menu_menu": "Menu", - "login_password_invalid": "Password is invalid", - "add_repo_modal_repo_details": "Repo Details", - "add_repo_modal_env_and_flags": "Environment & Flags", - "dashboard_getting_started_title": "Getting Started", - "dashboard_getting_started_check": "Check for new Backrest releases on GitHub", - "dashboard_getting_started_overview": "Overview", - "dashboard_getting_started_overview_a": "Repositories correspond directly to restic repositories; begin by configuring your backup locations.", - "dashboard_getting_started_overview_b": "Plans are used to configure directories for backup and to define backup scheduling. Multiple plans can backup to a single restic repository.", - "dashboard_getting_started_overview_c_a": "Refer to ", - "dashboard_getting_started_overview_c_b": "the restic documentation on preparing a new repository", - "dashboard_getting_started_overview_c_c": " for details on available repository types and their configuration.", - "dashboard_getting_started_overview_d_a": "Refer to ", - "dashboard_getting_started_overview_d_b": "the Backrest wiki", - "dashboard_getting_started_overview_d_c": " for instructions on configuring Backrest.", - "dashboard_getting_started_tips": "Tips", - "dashboard_getting_started_tips_a": "Back up your Backrest configuration: your Backrest configuration stores all your repositories, plans, and the passwords required to decrypt them. Once Backrest is configured as desired, ensure you keep a copy of your configuration (or at least your passwords) in a safe location, such as a secure note in your password manager.", - "dashboard_getting_started_tips_b": "Configure hooks: Backrest can send notifications regarding backup events. It is strongly recommended to configure an 'on error' hook to notify you if backups begin to fail (e.g., due to storage or network connectivity issues). Hooks can be configured at either the plan or repository level.", - "dashboard_getting_started_config_view": "Configuration View", - "dashboard_getting_started_config_json": "Configuration JSON hidden for security", - "add_plan_modal_retention_policy_latest_label": "Latest (Count)", - "add_plan_modal_advanced_label": "Advanced", - "add_plan_modal_schedule_type_label": "Schedule Type", - "add_plan_modal_schedule_disabled_label": "Disabled", - "add_plan_modal_schedule_disabled_description": "Automatic snapshots are disabled for this plan. Manual backups can still be initiated.", - "add_plan_modal_schedule_interval_hours": "Interval (Hours)", - "add_plan_modal_schedule_interval_days": "Interval (Days)", - "add_plan_modal_schedule_interval_in_hours": "Interval in Hours", - "add_plan_modal_schedule_interval_in_days": "Interval in Days", + "login_password_invalid": "La password non è valida", + "add_repo_modal_repo_details": "Dettagli repository", + "add_repo_modal_env_and_flags": "Ambiente e opzioni", + "dashboard_getting_started_title": "Primi passi", + "dashboard_getting_started_check": "Verifica la presenza di nuove versioni di Backrest su GitHub", + "dashboard_getting_started_overview": "Panoramica", + "dashboard_getting_started_overview_a": "I repo corrispondono direttamente ai repository restic; inizia configurando le tue destinazioni di backup.", + "dashboard_getting_started_overview_b": "Nei piani configuri le cartelle di cui eseguire il backup e la pianificazione dei backup. Più piani possono eseguire il backup in un singolo repository restic.", + "dashboard_getting_started_overview_c_a": "Consulta ", + "dashboard_getting_started_overview_c_b": "la documentazione di restic sulla preparazione di un nuovo repository", + "dashboard_getting_started_overview_c_c": " per dettagli sui tipi di repository disponibili e su come configurarli.", + "dashboard_getting_started_overview_d_a": "Consulta ", + "dashboard_getting_started_overview_d_b": "il wiki di Backrest", + "dashboard_getting_started_overview_d_c": " per istruzioni su come configurare Backrest.", + "dashboard_getting_started_tips": "Suggerimenti", + "dashboard_getting_started_tips_a": "Esegui il backup della configurazione di Backrest: la configurazione di Backrest contiene tutti i repository, i piani e le password per decifrarli. Una volta configurato Backrest a tuo piacimento, assicurati di conservare una copia della configurazione (o almeno delle password) in un luogo sicuro, ad esempio in una nota sicura nel gestore delle password.", + "dashboard_getting_started_tips_b": "Configura gli hook: Backrest può inviare notifiche relative agli eventi di backup. Si consiglia vivamente di configurare un hook \"in caso di errore\" (on error) che ti avviserà qualora i backup inizino a fallire (ad esempio per problemi di archiviazione o di connettività di rete). Gli hook possono essere configurati a livello di piano o di repository.", + "dashboard_getting_started_config_view": "Vista configurazione", + "dashboard_getting_started_config_json": "JSON di configurazione nascosto per motivi di sicurezza", + "add_plan_modal_retention_policy_latest_label": "Ultimi (conteggio)", + "add_plan_modal_advanced_label": "Avanzate", + "add_plan_modal_schedule_type_label": "Tipo di pianificazione", + "add_plan_modal_schedule_disabled_label": "Disabilitato", + "add_plan_modal_schedule_disabled_description": "L'esecuzione automatica è disabilitata per questa pianificazione. È comunque possibile avviare questa pianificazione manualmente.", + "add_plan_modal_schedule_interval_hours": "Intervallo (ore)", + "add_plan_modal_schedule_interval_days": "Intervallo (giorni)", + "add_plan_modal_schedule_interval_in_hours": "Intervallo in ore", + "add_plan_modal_schedule_interval_in_days": "Intervallo in giorni", "add_plan_modal_schedule_cron": "Cron", - "add_plan_modal_schedule_cron_expression": "Cron Expression", - "add_plan_modal_schedule_invalid_cron": "Invalid Cron Expression", - "add_plan_modal_schedule_reference_clock": "Reference Clock", - "add_plan_modal_schedule_time_zone": "Time zone or reference point for the schedule.", - "add_plan_modal_schedule_time_local": "Local Time", + "add_plan_modal_schedule_cron_expression": "Espressione cron", + "add_plan_modal_schedule_invalid_cron": "Espressione cron non valida", + "add_plan_modal_schedule_reference_clock": "Orologio di riferimento", + "add_plan_modal_schedule_time_zone": "Fuso orario o punto di riferimento per la pianificazione.", + "add_plan_modal_schedule_time_local": "Locale", "add_plan_modal_schedule_time_utc": "UTC", - "add_plan_modal_schedule_time_last": "Last Run Time", + "add_plan_modal_schedule_time_last": "Ora dell'ultima esecuzione", "add_repo_modal_field_forget_policy": "Politica Forget", - "add_repo_modal_field_forget_policy_help": "Pianifica opzionalmente un forget a livello di repository che applica una singola politica di retention a tutti i piani. Quando abilitato, le politiche di retention per singolo piano sono disabilitate.", + "add_repo_modal_field_forget_policy_help": "Pianifica opzionalmente un forget a livello di repository che applica una singola politica di retention a tutti i piani. Quando abilitato, le politiche di retention per singolo piano sono disabilitate. Questa è una funzionalità avanzata. È preferibile utilizzare le politiche di retention per singolo piano, a meno che il repository non sia condiviso con più macchine.", "add_repo_modal_retention_policy_label": "Politica di Retention (Livello Repo)", "add_repo_modal_retention_policy_help": "Politica di retention applicata ai backup raggruppati per piano, eseguita secondo la pianificazione sopra indicata a livello di repository. Disabilita la pianificazione per applicare invece una politica di retention per piano dopo ogni operazione di backup.", "add_plan_modal_retention_managed_by_repo": "La retention è gestita a livello di repository tramite la Politica Forget del repo. Modifica il repository per cambiare le impostazioni di retention.", - "dashboard_activity_no_backups": "No backups recorded yet.", - "dashboard_activity_row_completed": "Completed", - "dashboard_activity_row_completed_warnings": "Completed with warnings", - "dashboard_activity_row_failed": "Failed", + "dashboard_activity_no_backups": "Nessun backup ancora registrato.", + "dashboard_activity_row_completed": "Completato", + "dashboard_activity_row_completed_warnings": "Completato con avvisi", + "dashboard_activity_row_failed": "Fallito", "dashboard_activity_row_label": "{plan} · {status}", - "dashboard_activity_row_ran": "Ran", - "dashboard_activity_title": "Recent activity", - "dashboard_card_destination": "Destination", - "dashboard_card_last_upload": "Last upload", - "dashboard_card_next_run": "Next run", - "dashboard_card_protected": "Protected", - "dashboard_card_retention": "Keeps {parts}", - "dashboard_hero_err": "A backup needs attention", - "dashboard_hero_idle": "Waiting for first backup", - "dashboard_hero_last_backup": "Last backup {ago}", - "dashboard_hero_next": "next {when}", - "dashboard_hero_no_backups": "No backups recorded yet", - "dashboard_hero_ok": "Everything's backed up", - "dashboard_hero_run": "Backing up now", - "dashboard_hero_warn": "Backed up, with warnings", - "dashboard_history_all_backed_up": "Backed up every day since you started", - "dashboard_history_issues": "{count} with issues", - "dashboard_history_legend_backed_up": "Backed up", - "dashboard_history_legend_issue": "Issue", - "dashboard_history_legend_missed": "Missed", - "dashboard_history_missed": "{count} days missed", - "dashboard_history_no_data": "Backup history will fill in as it runs", - "dashboard_history_summary": "{details} in the last 30 days", - "dashboard_history_tooltip_before_start": "Before you started", - "dashboard_history_tooltip_no_backup": "No backup", - "dashboard_state_label_err": "Backup failed", - "dashboard_state_label_idle": "No backups yet", - "dashboard_state_label_ok": "Backed up", - "dashboard_state_label_run": "Backing up", - "dashboard_state_label_warn": "Backed up, with warnings" + "dashboard_activity_row_ran": "Eseguito", + "dashboard_activity_title": "Attività recente", + "dashboard_card_destination": "Destinazione", + "dashboard_card_last_upload": "Ultimo caricamento", + "dashboard_card_next_run": "Prossima esecuzione", + "dashboard_card_protected": "Protetto", + "dashboard_card_retention": "Conserva {parts}", + "dashboard_hero_err": "Un backup richiede attenzione", + "dashboard_hero_idle": "In attesa del primo backup", + "dashboard_hero_last_backup": "Ultimo backup {ago}", + "dashboard_hero_next": "prossimo {when}", + "dashboard_hero_no_backups": "Nessun backup ancora registrato", + "dashboard_hero_ok": "Tutto è sottoposto a backup", + "dashboard_hero_run": "Backup in corso ora", + "dashboard_hero_warn": "Sottoposto a backup, con avvisi", + "dashboard_history_all_backed_up": "Sottoposto a backup ogni giorno dall'inizio", + "dashboard_history_issues": "{count} con problemi", + "dashboard_history_legend_backed_up": "Sottoposto a backup", + "dashboard_history_legend_issue": "Problema", + "dashboard_history_legend_missed": "Mancato", + "dashboard_history_missed": "{count} giorni mancati", + "dashboard_history_no_data": "La cronologia dei backup si popolerà durante l'esecuzione", + "dashboard_history_summary": "{details} negli ultimi 30 giorni", + "dashboard_history_tooltip_before_start": "Prima dell'inizio", + "dashboard_history_tooltip_no_backup": "Nessun backup", + "dashboard_state_label_err": "Backup fallito", + "dashboard_state_label_idle": "Ancora nessun backup", + "dashboard_state_label_ok": "Backup eseguito", + "dashboard_state_label_run": "Backup in corso", + "dashboard_state_label_warn": "Backup eseguito, con avvisi", + "repo_error_forget": "Impossibile eseguire il forget: ", + "repo_button_forget": "Esegui Forget ora", + "repo_tooltip_forget": "Esegue un'operazione di forget sul repository applicando la policy di retention a livello di repository", + "add_repo_modal_shared_forget_hint": "Suggerimento: quando si condivide un repository tra più macchine, configurare anche una Policy di Forget pianificata a livello di repository (nella sezione Scheduling) in modo che la retention venga applicata in modo coerente agli snapshot di tutti i peer.", + "dashboard_time_never": "mai", + "dashboard_time_just_now": "proprio ora", + "dashboard_time_a_minute_ago": "un minuto fa", + "dashboard_time_minutes_ago": "{count} min fa", + "dashboard_time_an_hour_ago": "un'ora fa", + "dashboard_time_hour_ago": "{count} ora fa", + "dashboard_time_hours_ago": "{count} ore fa", + "dashboard_time_yesterday": "ieri", + "dashboard_time_days_ago": "{count} giorni fa", + "dashboard_time_due_now": "da eseguire ora", + "dashboard_time_in_minutes": "tra {count} min", + "dashboard_time_in_hours": "tra {count} ore", + "dashboard_time_in_days": "tra {count} giorni", + "dashboard_time_soon": "tra poco", + "dashboard_schedule_every_minutes": "Eseguito ogni {count} min", + "dashboard_schedule_hourly": "Eseguito ogni ora", + "dashboard_schedule_daily": "Eseguito ogni giorno", + "dashboard_schedule_every_hours": "Eseguito ogni {count} ore", + "dashboard_card_progress_detail": "{pct}% · {done} di {total}", + "dashboard_card_progress_pct": "{pct}% completato", + "dashboard_card_progress_scanning": "Scansione in corso…", + "dashboard_repo_window_30d": "30g", + "dashboard_repo_ok": "{count} ok", + "dashboard_repo_failed": "{count} falliti", + "dashboard_repo_added": "Aggiunto", + "dashboard_activity_took": "ha impiegato {duration}", + "dashboard_peer_shared_repos": "Repository condivisi", + "dashboard_retention_hourly": "{count} orari", + "dashboard_retention_daily": "{count} giornalieri", + "dashboard_retention_weekly": "{count} settimanali", + "dashboard_retention_monthly": "{count} mensili", + "dashboard_retention_yearly": "{count} annuali", + "dashboard_repo_dest_local": "Locale" } diff --git a/webui/messages/ja.json b/webui/messages/ja.json index d13cc82a..80c4ba88 100644 --- a/webui/messages/ja.json +++ b/webui/messages/ja.json @@ -2,10 +2,10 @@ "$schema": "https://inlang.com/schema/inlang-message-format", "example_message": "こんにちは、{username}", "add_plan_modal_error_template_not_found": "テンプレートは見つかりませんでした", - "add_plan_modal_error_plan_delete_not_found": "構成の更新に失敗し、削除対象は見つかりませんでした", - "add_plan_modal_success_plan_deleted": "プランが構成から削除されましたが、restic リポジトリからは未処理です。スナップショットはストレージに保持され、手動で消去されるまで操作履歴も記録されます。バックアップが既に実施されている場合、破棄された計画 ID の再利用は避けてください。", - "add_plan_modal_error_destroy_prefix": "破壊エラー", - "add_plan_modal_error_operation_prefix": "操作エラー", + "add_plan_modal_error_plan_delete_not_found": "設定の更新に失敗しました。削除対象のプランが見つかりませんでした。", + "add_plan_modal_success_plan_deleted": "プランが設定から削除されましたが、restic リポジトリからは削除されていません。スナップショットはストレージに残り、手動で削除されるまで操作履歴も追跡されます。バックアップがすでに実行されている場合、削除されたプラン ID の再利用は推奨されません。", + "add_plan_modal_error_destroy_prefix": "破棄エラー: ", + "add_plan_modal_error_operation_prefix": "操作エラー: ", "add_plan_modal_title_update": "プランを更新", "add_plan_modal_title_add": "プランを追加", "add_plan_modal_button_cancel": "キャンセル", @@ -15,10 +15,10 @@ "add_plan_modal_field_plan_name": "プラン名", "add_plan_modal_field_plan_name_tooltip": "Backrest UI でこのプランを識別する一意の ID(例:s3-myplan)。作成後は変更できません。", "add_plan_modal_validation_plan_name_required": "プラン名を入力してください", - "add_plan_modal_validation_plan_exists": "名前の重複するプランが既に存在します", + "add_plan_modal_validation_plan_exists": "同名のプランが既に存在します", "add_plan_modal_validation_plan_name_pattern": "名前には英数字と区切り文字としてハイフンまたはアンダースコアを使用する必要があります", "add_plan_modal_field_repository": "リポジトリ", - "add_plan_modal_field_repository_tooltip": "どの Backrest リポジトリにスナップショットを保存するかを選択してください。", + "add_plan_modal_field_repository_tooltip": "Backrestがスナップショットを保存するリポジトリです。", "add_plan_modal_field_repository_select": "リポジトリを選択", "add_plan_modal_validation_repository_required": "リポジトリを選択してください", "add_plan_modal_field_paths": "パス", @@ -33,11 +33,11 @@ "add_plan_modal_field_excludes_tooltip_suffix": "をご覧ください。", "add_plan_modal_field_excludes_add": "除外グロブを追加", "add_plan_modal_field_iexcludes": "除外項目(大文字と小文字の区別をしない)", - "add_plan_modal_field_iexcludes_tooltip_prefix": "バックアップから除外するパス。詳細については", - "add_plan_modal_field_iexcludes_add": "restic のドキュメント(英語)", + "add_plan_modal_field_iexcludes_tooltip_prefix": "大文字と小文字を区別せずにバックアップから除外するパス。詳細については、", + "add_plan_modal_field_iexcludes_add": "大文字・小文字を区別しない除外グロブを追加", "add_plan_modal_field_schedule": "バックアップスケジュール", "add_plan_modal_field_backup_flags": "バックアップフラグ", - "add_plan_modal_field_backup_flags_tooltip": "restic backup コマンドより追加するフラグ", + "add_plan_modal_field_backup_flags_tooltip": "restic backup コマンドに追加する追加フラグ", "add_plan_modal_field_backup_flags_add": "フラグ設定", "add_plan_modal_validation_flag_pattern": "値は「CLI フラグ」である必要があります。詳細は restic backup --help を参照してください", "add_plan_modal_preview_json": "JSON 形式でのプラン構成設定", @@ -48,21 +48,21 @@ "hooks_from_list_a": "フックを使用すると、バックアップのライフサイクルに応じて通知やスクリプトなどのアクションを設定出来ます。利用可能なオプションについては ", "hooks_from_list_b": "フックのドキュメント(英語)", "hooks_from_list_c": " を、スクリプトの例については ", - "hooks_from_list_d": "料理本(英語)", + "hooks_from_list_d": "クックブック(英語)", "hooks_from_list_e": " をご覧ください。", "settings_success_updated": "設定を更新しました", "settings_error_operation": "操作エラー:", "button_cancel": "キャンセル", "button_close": "閉じる", "button_save": "保存", - "settings_initial_setup_title": "Backrest の初期設定が完了しました!", + "settings_initial_setup_title": "Backrest の初期セットアップ!", "settings_initial_setup_message": "ユーザーが1人も設定されてない事を確認しました。Web インターフェースを保護するため、少なくとも1人のユーザーを追加してください。", - "settings_initial_setup_hint": "後からユーザーを追加することや、パスワードを忘れた場合に設定ファイル(通常は $HOME/.config/backrest/config.json にあります)を編集してユーザーをリセットすることも可能です。", - "settings_field_instance_id": "インスタンス名", - "settings_validation_instance_id_required": "インスタンス名が必要です", - "settings_validation_instance_id_pattern": "インスタンス名は英数字と区切り文字として「_-.」を使用する必要があります", - "settings_field_instance_id_tooltip": "インスタンス名は Backrest のインストールを識別するために使用されます。後から変更できないため、慎重に命名をしてください。", - "settings_field_instance_id_placeholder": "このインスタンスの一意な識別子(例えば:my-backrest-server)", + "settings_initial_setup_hint": "後からユーザーを追加することや、パスワードを忘れた場合に設定ファイル(通常は $HOME/.backrest/config.json にあります)を編集してユーザーをリセットすることも可能です。", + "settings_field_instance_id": "インスタンス ID", + "settings_validation_instance_id_required": "インスタンス ID が必要です", + "settings_validation_instance_id_pattern": "インスタンス ID は英数字で、区切り文字として「_-.」を使用できます", + "settings_field_instance_id_tooltip": "インスタンス ID は、この Backrest インストールを識別するために使用されます。後から変更できないため、慎重に決定してください。", + "settings_field_instance_id_placeholder": "このインスタンスの一意なインスタンス ID(例:my-backrest-server)", "settings_section_authentication": "認証方法", "settings_section_user_settings": "ユーザー設定", "settings_section_multihost": "マルチホスト ID と共有機能", @@ -80,12 +80,12 @@ "settings_multihost_warning": "警告:この機能は非常に実験的であり、将来的に破壊的な変更が行われる可能性があります。その場合、すべてのインスタンスを同時に更新する必要があります。", "settings_multihost_identity": "マルチホスト ID", "settings_multihost_identity_required": "マルチホスト ID が必要です", - "settings_multihost_identity_tooltip": "マルチホスト環境において、このインスタンスを識別するために使用されるアイデンティティです。これは、当該システムの公開鍵から暗号技術的に導出された値です。", + "settings_multihost_identity_tooltip": "マルチホスト環境において、このインスタンスを識別するために使用されるIDです。これは、このインスタンスの公開鍵から暗号技術的に導出されます。", "settings_multihost_identity_placeholder": "ユニークなマルチホスト ID", "button_copy": "コピー", - "settings_multihost_authorized_clients": "承認済みクライアント一覧", - "settings_multihost_authorized_clients_tooltip": "許可されたクライアントは、このインスタンス上のリポジトリにアクセスすることが認められている他の Backrest システムです。", - "settings_multihost_authorized_client_item": "承認済みクライアント", + "settings_multihost_authorized_clients": "信頼されたピア一覧", + "settings_multihost_authorized_clients_tooltip": "信頼されたピアとは、このインスタンスに接続してリポジトリにアクセスすることを許可された他の Backrest インスタンスです。ピアはペアリングトークンを介して自動的に追加されます。", + "settings_multihost_authorized_client_item": "信頼されたピア", "settings_multihost_known_hosts": "既知のホスト一覧", "settings_multihost_known_hosts_tooltip": "既知のホストは、このインスタンスが接続可能な他の Backrest サーバーです。", "settings_multihost_known_host_item": "既知のホスト", @@ -101,75 +101,75 @@ "settings_peer_instance_url_placeholder": "https://example.com:9898", "settings_peer_permissions": "権限の設定", "settings_peer_permission_type": "種類", - "settings_peer_permission_type_required": "許可が必要です", + "settings_peer_permission_type_required": "権限の種類が必要です", "settings_permission_edit_repo": "リポジトリの設定を編集", "settings_permission_read_ops": "読み取り操作", - "settings_permission_type_placeholder": "アクセス権限の種類を選択します", + "settings_permission_type_placeholder": "権限の種類を選択してください", "settings_peer_permission_scopes": "バックアップのスコープ", "settings_peer_permission_scopes_required": "少なくとも1つのスコープが必要です", - "settings_permission_scope_all": "すべてのリポジトリー( * )", - "settings_permission_scope_placeholder": "リポジトリを選択または * ですべて使用します:", + "settings_permission_scope_all": "すべてのリポジトリ (*)", + "settings_permission_scope_placeholder": "リポジトリを選択するか、すべてを指定するには * を使用してください", "settings_peer_add_permission": "権限を追加", - "settings_peer_add_button": "{itemTypeName} を追加します", + "settings_peer_add_button": "{itemTypeName} を追加", "peer_default_name": "ピア", - "repo_error_index": "スナップショットの索引作成に失敗しました:", + "repo_error_index": "スナップショットのインデックス作成に失敗しました: ", "repo_info_unlocking": "リポジトリのロックを解除しています...", "repo_success_unlocked": "リポジトリがロック解除されました。", - "repo_error_unlock": "リポジトリのロック解除に失敗しました:", - "repo_error_stats": "統計値の計算に失敗しました:", - "repo_error_prune": "剪定に失敗しました:", - "repo_error_check": "確認に失敗しました:", + "repo_error_unlock": "リポジトリのロック解除に失敗しました: ", + "repo_error_stats": "統計の計算に失敗しました: ", + "repo_error_prune": "Pruneに失敗しました: ", + "repo_error_check": "チェックに失敗しました: ", "repo_deleted_message": "リポジトリが削除されました", - "repo_tab_tree": "ツリービューを表示", - "repo_tab_list": "リストを表示", + "repo_tab_tree": "ツリービュー", + "repo_tab_list": "リストビュー", "repo_history_title": "バックアップの操作履歴", "repo_tab_stats": "統計情報", "repo_tab_stats_no": "まだ統計は利用できません", - "repo_tab_stats_yet": "まだ統計量を計算していませんか?", + "repo_tab_stats_yet": "すでに統計処理を実行しましたか?", "repo_tab_stats_size": "総サイズ", "repo_tab_stats_ratio": "圧縮比率", "repo_tab_stats_count": "スナップショット数", "repo_tab_stats_blob": "総ブロブ数", "loading": "読み込み中...", "repo_button_run_command": "コマンドを実行", - "repo_tooltip_run_command": "上級ユーザー向け:リポジトリ上でコマンドを実行するために制限付きシェルを起動します。Backrest での変更を反映させるためにスナップショットを再索引します。", - "repo_button_index": "スナップショットを索引", - "repo_tooltip_index": "リポジトリ内のスナップショットを索引付けします。バックアップ実行後も、各操作ごとに自動的に索引が更新されます。", + "repo_tooltip_run_command": "上級ユーザー向け:リポジトリ上でコマンドを実行するために restic シェルを開きます。Backrest に変更を反映させるには、スナップショットを再インデックスしてください。", + "repo_button_index": "スナップショットのインデックス作成", + "repo_tooltip_index": "リポジトリ内のスナップショットのインデックスを作成します。スナップショットはバックアップ実行後にも自動的にインデックスが作成されます。", "repo_button_unlock": "リポジトリのロックを解除", "repo_tooltip_unlock": "ロックファイルを削除し、リポジトリにエラーがないか確認します。他のシステムからこのリポジトリがアクセスされていないことを確実に把握している場合にのみ実行してください。", - "repo_button_prune": "今すぐ剪定", - "repo_tooltip_prune": "リポジトリに対して剪定操作を実行し、古いスナップショットを削除して空き容量を確保します", + "repo_button_prune": "今すぐPrune", + "repo_tooltip_prune": "リポジトリに対してPrune操作を実行し、古いスナップショットを削除して空き容量を確保します", "repo_button_check": "今すぐ確認", "repo_tooltip_check": "リポジトリの整合性を検証するチェック操作を実行します", "repo_button_stats": "統計量を計算", "repo_tooltip_stats": "リポジトリに対して統計情報を集計します。この処理は時間がかかる場合があります。", - "repo_command_run": "コマンドを実行", - "repo_command_tooltip": "例えば help と入力して restic のヘルプコマンドを実行する", + "repo_command_run": "リポジトリ内でコマンドを実行", + "repo_command_tooltip": "resticコマンドを実行します(例:ヘルプを表示するには「help」)", "repo_command_button_execute": "実行", "repo_command_no": "まだ操作がありません", "repo_command_no_op": "操作が行われるとここに表示されます。", "repo_hooks_command_label": "コマンド", - "repo_hooks_healthchecks_label": "健康確認", - "repo_hooks_command_runs_when": "いつ走るか...", + "repo_hooks_healthchecks_label": "ヘルスチェック", + "repo_hooks_command_runs_when": "実行条件:", "repo_hooks_command_script_label": "スクリプト:", - "repo_hooks_command_error_label": "エラー時の行動:", - "repo_hooks_command_error_tooltip": "エラー時にすること...", + "repo_hooks_command_error_label": "エラー時の挙動:", + "repo_hooks_command_error_tooltip": "エラー時の挙動...", "repo_hooks_command_template_label": "テキストテンプレート:", - "repo_hooks_command_error_info_what": "フックが失敗した時にすること", - "repo_hooks_command_error_info_only": "(バックアップを始めた等のフックの開始時のみ有効)", + "repo_hooks_command_error_info_what": "フックが失敗した時の動作", + "repo_hooks_command_error_info_only": "(バックアップ開始などの開始フック時のみ有効)", "repo_hooks_command_error_info_ignore": "IGNORE - 失敗を無視する", "repo_hooks_command_error_info_fatal": "FATAL - エラーとして操作を停止する", - "repo_hooks_command_error_info_cancel": "CANCEL - 操作を停止する(やめる)", - "repo_hooks_command_runs_info_available": "利用可能な状態", + "repo_hooks_command_error_info_cancel": "CANCEL - 操作を停止する(キャンセル)", + "repo_hooks_command_runs_info_available": "利用可能な条件", "repo_hooks_command_runs_info_any_error": "CONDITION_ANY_ERROR - 何らかのタスクの実行エラー", "repo_hooks_command_runs_info_start": "CONDITION_SNAPSHOT_START - バックアップの操作の開始", "repo_hooks_command_runs_info_end": "CONDITION_SNAPSHOT_END - バックアップの操作の終了", "repo_hooks_command_runs_info_success": "CONDITION_SNAPSHOT_SUCCESS - バックアップの正常な終了", - "repo_hooks_command_runs_info_error": "CONDITION_SNAPSHOT_ERROR - バックアップの不正な終了", + "repo_hooks_command_runs_info_error": "CONDITION_SNAPSHOT_ERROR - バックアップ失敗時の終了", "repo_hooks_command_runs_info_warning": "CONDITION_SNAPSHOT_WARNING - バックアップの部分的な終了", "repo_hooks_command_runs_info_prune_start": "CONDITION_PRUNE_START - 剪定操作の開始", - "repo_hooks_command_runs_info_docs": "... ドキュメントでもっと見る", - "repo_hooks_command_runs_condition_snapshot_start": "バックアップの操作が開始され、スナップショットの作成前に正常に完了させたい場合", + "repo_hooks_command_runs_info_docs": "... 詳細はドキュメントを参照してください", + "repo_hooks_command_runs_condition_snapshot_start": "バックアップ操作の開始時に実行され、スナップショットが開始される前に正常に完了する必要があります。", "repo_hooks_command_runs_condition_snapshot_end": "バックアップの操作が完了した後(成功・失敗に関係なく)", "repo_hooks_command_runs_condition_snapshot_success": "バックアップの操作が正常に完了した後", "repo_hooks_command_runs_condition_snapshot_error": "バックアップの操作が失敗した後", @@ -194,9 +194,9 @@ "app_breadcrumb_getting_started": "はじめに", "app_page_not_found": "ページが見つかりませんでした", "app_repo_not_found": "リポジトリ {repoId} が見つかりませんでした", - "app_plan_not_found": "計画 {planId} が見つかりませんでした", + "app_plan_not_found": "プラン {planId} が見つかりませんでした", "app_unknown_peer": "不明なピア", - "app_unknown_repo": "不明なリポジトリです", + "app_unknown_repo": "不明なリポジトリ", "app_remote_repo_title": "リモートリポジトリ:{id}", "app_logout": "ログアウト", "app_menu_menu": "メニュー", @@ -209,7 +209,7 @@ "app_menu_dashboard": "ダッシュボード", "app_error_initial_config": "初期構成を取得できませんでした。これは通常 UI がバックエンドに接続できなかったことを示します", "login_success": "ログイン成功", - "login_error": "ログイン失敗", + "login_error": "ログインに失敗しました: ", "login_title": "ログイン", "login_username_required": "ユーザー名を入力してください", "login_username_placeholder": "ユーザー名", @@ -225,20 +225,20 @@ "add_repo_modal_success_updated": "リポジトリ設定 {uri} を更新しました", "add_repo_modal_success_added": "リポジトリ {uri} を追加しました", "add_repo_modal_error_list_snapshots": "更新または追加されたリポジトリのスナップショット一覧取得に失敗しました:", - "add_repo_modal_delete_tooltip": "リポジトリを設定から削除しますが、制限付きレポジトリ自体は消去しません", + "add_repo_modal_delete_tooltip": "リポジトリを設定から削除しますが、restic リポジトリ自体は削除しません", "add_repo_modal_test_config": "この設定でテスト", "add_repo_modal_test_success_existing": "{uri} への接続に成功し、既存のリポジトリが見つかりました。", "add_repo_modal_test_success_new": "{uri} への接続に成功しました。この場所には既存のリポジトリが存在しないため、新規作成されます", - "add_repo_modal_test_error": "エラーを確認", + "add_repo_modal_test_error": "チェックエラー: ", "add_repo_modal_guide_text_p1": "詳しくは", "add_repo_modal_guide_link_text": "Backrest の使い方(英語)", "add_repo_modal_guide_text_p2": "でリポジトリの設定の手順を", "add_repo_modal_guide_restic_link_text": "restic のドキュメント(英語)", "add_repo_modal_guide_text_p3": "で restic の概要をご覧ください。", "add_repo_modal_field_repo_name": "リポジトリ名", - "add_repo_modal_field_repo_name_tooltip": "バックエンド UI でこのリポジトリを一意に識別する ID(例:s3-mybucket)。この値は作成後に変更できません。", + "add_repo_modal_field_repo_name_tooltip": "Backrest UI でこのリポジトリを一意に識別する ID(例:s3-mybucket)。この値は作成後に変更できません。", "add_repo_modal_error_repo_name_required": "リポジトリ名を入力してください", - "add_repo_modal_error_repo_exists": "リポジトリ名は既に存在します", + "add_repo_modal_error_repo_exists": "その名前のリポジトリは既に存在します", "add_repo_modal_field_uri": "リポジトリの URI", "add_repo_modal_field_uri_tooltip_title": "有効なリポジトリの URI は以下の通りです:", "add_repo_modal_field_uri_tooltip_local": "ローカルファイルシステムのパス名", @@ -247,20 +247,20 @@ "add_repo_modal_field_uri_tooltip_see": "詳しくは", "add_repo_modal_field_uri_tooltip_restic_docs": "restic のドキュメント(英語)", "add_repo_modal_field_uri_tooltip_info": "をご覧ください", - "add_repo_modal_error_uri_required": "リポジトリの URI を入力してください。", + "add_repo_modal_error_uri_required": "リポジトリの URI を入力してください", "add_repo_modal_field_password": "パスワード", "add_repo_modal_field_password_tooltip_intro": "リポジトリ内のデータを暗号化するパスワードです。", - "add_repo_modal_field_password_tooltip_entropy": "エントロピーが128ビット(32文字以上)の値を選択することをお勧めします。", + "add_repo_modal_field_password_tooltip_entropy": "エントロピーが128ビット(20文字以上)の値を選択することをお勧めします。", "add_repo_modal_field_password_tooltip_env": "代わりに認証情報の環境変数(RESTIC_PASSWORD、RESTIC_PASSWORD_FILE、または RESTIC_PASSWORD_COMMAND)を指定することも可能です。", "add_repo_modal_field_password_tooltip_generate": "[生成]をクリックして、ブラウザの暗号用乱数ジェネレーター API からランダムなパスワードを生成します。", "add_repo_modal_button_generate": "[生成]", "add_repo_modal_field_env_vars": "環境変数", - "add_repo_modal_field_env_vars_tooltip": "Restic に渡す環境変数(例えば、S3 または B2 の認証情報を提供する場合)ために親プロセスから継承された環境変数は、FOO=$\\{MY_FOO_VAR\\} のように指定できます。", - "op_row_deleted_success": "削除された操作", + "add_repo_modal_field_env_vars_tooltip": "restic に渡される環境変数(例:S3 や B2 の認証情報の提供用)。親プロセスの環境変数への参照は、FOO=$\\{MY_FOO_VAR\\} のようにサポートされています。", + "op_row_deleted_success": "操作を削除しました", "op_row_deleted_error": "操作の削除に失敗しました:", "op_row_cancel_success": "操作のキャンセルを要求しました", "op_row_cancel_error": "操作のキャンセルに失敗しました:", - "op_row_logs_title": "{time} における操作 {name} のログ記録:", + "op_row_logs_title": "{time} の操作 {name} のログ", "op_row_view_logs": "ログを表示", "op_row_backup_details": "バックアップの詳細", "op_row_item_errors": "アイテムエラー一覧", @@ -268,10 +268,10 @@ "op_row_details": "詳細", "op_row_snapshot_browser": "スナップショットブラウザ", "op_row_removed_snapshots": "{count} 個のスナップショットを削除しました", - "op_row_prune_output": "剪定の出力結果", - "op_row_check_output": "確認の出力結果", + "op_row_prune_output": "Prune 出力", + "op_row_check_output": "Check 出力", "op_row_command_output": "コマンド出力結果", - "op_row_restore_details": "詳細を復元する", + "op_row_restore_details": "復元の詳細", "op_row_hook_output": "フック出力", "op_row_hooks_triggered": "トリガーされたフック一覧", "op_row_snapshot_id": "スナップショット ID:", @@ -279,7 +279,7 @@ "op_row_tags": "タグ", "op_row_files_added": "追加したファイル", "op_row_files_changed": "変更されたファイル", - "op_row_files_unmodified": "変更されてないファイル", + "op_row_files_unmodified": "変更されていないファイル", "op_row_bytes_added": "追加したバイト数", "op_row_total_bytes": "処理された総バイト数", "op_row_total_files": "処理されたファイル総数", @@ -287,38 +287,38 @@ "op_row_download_files": "ファイルのダウンロード", "op_row_restored_snapshot_id": "復元されたスナップショット ID:{id}", "op_row_bytes_done_total": "処理済み / 合計バイト数", - "op_row_files_done_total": "完了 / 合計数", + "op_row_files_done_total": "完了 / 合計ファイル数", "op_row_no_status": "まだステータスはありません。", "op_row_current_files": "現在のファイル:", "op_row_no_snapshot": "スナップショットは作成されませんでした", "op_row_unexpected_status": "予期しないステータスが返されました:", - "op_row_removed_snapshot_desc": "スナップショット {id} を {time} に削除しました", - "op_row_policy_header": "方針:", + "op_row_removed_snapshot_desc": "{time} に作成されたスナップショット {id} を削除しました", + "op_row_policy_header": "ポリシー:", "op_row_fetch_download_error": "ダウンロード URL の取得に失敗しました:", "plan_backup_scheduled": "バックアップがスケジュールされました。", "plan_error_backup": "バックアップのスケジュール設定に失敗しました:", - "plan_clearing_history": "エラー履歴を掃除しています...", - "plan_history_cleared": "エラー履歴が消去されました。", + "plan_clearing_history": "エラー履歴をクリアしています...", + "plan_history_cleared": "エラー履歴がクリアされました。", "plan_error_clear_history": "エラー履歴のクリアに失敗しました:", - "plan_repo_not_found": "リポジトリ {repo} のプラン {planId} が見つかりませんでした", + "plan_repo_not_found": "プラン {planId} のリポジトリ {repo} が見つかりませんでした", "plan_button_backup": "今すぐバックアップを作成", "plan_button_clear_history": "エラー履歴をクリア", "plan_tooltip_clear_history": "失敗した操作をリストから削除します", - "op_type_backup": "バックアップ作成中...", + "op_type_backup": "バックアップ", "op_type_snapshot": "スナップショット", - "op_type_forget": "忘却", - "op_type_prune": "剪定", + "op_type_forget": "Forget", + "op_type_prune": "Prune", "op_type_check": "確認", "op_type_restore": "復元", "op_type_stats": "統計情報", - "op_type_run_hook": "フックを実行します", + "op_type_run_hook": "フックの実行", "op_type_run_command": "コマンド実行", - "op_type_dry_run_backup": "バックアップをドライラン", + "op_type_dry_run_backup": "バックアップのドライラン", "plan_dry_run_scheduled": "バックアップのドライランがスケジュールされました", "plan_dry_run_error": "ドライランに失敗しました:", "op_type_unknown": "不明", "op_status_pending": "保留中", - "op_status_in_progress": "進行中です", + "op_status_in_progress": "進行中", "op_status_error": "エラー", "op_status_warning": "警告", "op_status_success": "成功", @@ -328,43 +328,43 @@ "op_subtitle_processed": "{percentage}% 完了しました", "op_subtitle_bytes_total": "{bytes}/{total}", "op_subtitle_summary": "{bytes} を {duration} で処理しました", - "op_subtitle_id": "識別子:{id}", - "op_subtitle_running": "走っている", + "op_subtitle_id": "ID: {id}", + "op_subtitle_running": "実行中", "op_subtitle_cancelled_user": "ユーザーによってキャンセルされました", "op_subtitle_cancelled_system": "システムによってキャンセルされました", "op_subtitle_took": "{duration} かかりました", "add_repo_modal_error_env_format": "環境変数は形式 KEY=VALUE で指定する必要があります", - "add_repo_modal_button_set_env": "環境変数を設定します", + "add_repo_modal_button_set_env": "環境変数を設定", "add_repo_modal_field_flags": "フラグ", "add_repo_modal_error_flag_format": "値は CLI フラグである必要があります。詳細は restic --help をご覧ください", "add_repo_modal_button_set_flag": "フラグの設定", - "add_repo_modal_field_prune_policy": "剪定ポリシー", - "add_repo_modal_field_prune_policy_tooltip_p1": "このリポジトリで剪定作業を実行するスケジュールです。詳しくは", - "add_repo_modal_field_prune_policy_tooltip_link": "剪定操作のカスタマイズについて", + "add_repo_modal_field_prune_policy": "Prune ポリシー", + "add_repo_modal_field_prune_policy_tooltip_p1": "このリポジトリで Prune 処理を実行するスケジュールです。詳しくは", + "add_repo_modal_field_prune_policy_tooltip_link": "Prune 操作のカスタマイズについて", "add_repo_modal_field_prune_policy_tooltip_p2": "をご覧ください。", - "add_repo_modal_field_max_unused": "剪定後の最大未使用容量", - "add_repo_modal_field_max_unused_tooltip": "剪定処理が完了した後に使用可能なリポジトリサイズの最大割合。値を高く設定すると、ストレージ容量は増加しますが、コピー作業が減少します。", - "add_repo_modal_field_check_policy": "ポリシーを確認してください", - "add_repo_modal_field_check_policy_tooltip": "このリポジトリでチェック操作を実行するスケジュールです。restic の検証処理では、バックアップデータを構成するディスク上の構造体をスキャンすることで、ストレージ内のファイルシステムの状態を確認します。オプションで、データを再読み込みしてハッシュを再計算するように設定することも可能です。この方法は時間がかかり、帯域幅を消費しますが、メディア自体に発生しているビットエラーやサイレントな破損を確実に検出できます。", + "add_repo_modal_field_max_unused": "Prune 後の最大未使用割合", + "add_repo_modal_field_max_unused_tooltip": "Prune 処理が完了した後に、未使用のまま残るリポジトリ容量の最大割合。値を大きくすると、ストレージを余分に消費する代わりにコピー処理が減少します。", + "add_repo_modal_field_check_policy": "Check ポリシー", + "add_repo_modal_field_check_policy_tooltip": "このリポジトリでチェック操作を実行するスケジュールです。restic のチェック操作は、バックアップデータを構成するディスク上の構造体をスキャンすることで、リポジトリの整合性を検証します。オプションでデータを再読み込みして再ハッシュ化するように設定することも可能です。この処理は遅く、帯域幅を消費する可能性がありますが、ストレージメディア内のビットロットやサイレントな破損を検出できます。", "add_repo_modal_field_read_data": "読み込むデータの割合", - "add_repo_modal_field_read_data_tooltip": "このリポジトリで読み込まれ検証されるパックデータの割合。値が大きいほど帯域幅を多く消費します(例えば、100%の場合は各チェック時に全レポジトリを再読み込みするため)。", + "add_repo_modal_field_read_data_tooltip": "このリポジトリで読み込まれ検証されるパックデータの割合。値が大きいほど帯域幅を多く消費します(例えば、100%の場合は各チェック時にリポジトリ全体を再読み込みするため)。", "add_repo_modal_field_command_modifiers": "コマンド修飾子", "add_repo_modal_field_command_modifiers_tooltip": "バックアップ操作の修飾子(例:CPU または I/O 優先度を設定)。", "add_repo_modal_field_io_priority": "I/O 優先度:", "add_repo_modal_field_io_priority_tooltip_intro": "利用可能な I/O 優先度モード", "add_repo_modal_field_io_priority_low": "IO_BEST_EFFORT_LOW - デフォルトのディスク優先度よりも低いレベルで動作します(他プロセスを優先)", - "add_repo_modal_field_io_priority_high": "IO_BEST_EFFORT_HIGH - デフォルトのディスク優先度よりも高いレベルで実行されます(ハードディスク I/O キューの最上位)", + "add_repo_modal_field_io_priority_high": "IO_BEST_EFFORT_HIGH - デフォルトのディスク優先度よりも高いレベルで動作します(ディスク I/O キューの最上位)", "add_repo_modal_field_io_priority_idle": "IO_IDLE - ディスク帯域幅がアイドル状態の場合のみ実行されます(他に処理待ちがない場合)", - "add_repo_modal_field_io_priority_placeholder": "入出力優先度を選択します", - "add_repo_modal_field_cpu_priority": "優先度:", + "add_repo_modal_field_io_priority_placeholder": "I/O 優先度を選択してください", + "add_repo_modal_field_cpu_priority": "CPU 優先度:", "add_repo_modal_field_cpu_priority_tooltip_intro": "利用可能な CPU 優先度モード", - "add_repo_modal_field_cpu_priority_default": "CPU 優先度の変更なし(デフォルト設定)", - "add_repo_modal_field_cpu_priority_high": "CPU 高優先度 - デフォルトの優先順位より高く設定(Backrest は root 権限で動作している必要があります)", - "add_repo_modal_field_cpu_priority_low": "CPU 使用率がデフォルトの優先度より低い場合:低負荷状態を示す指標です。", - "add_repo_modal_field_cpu_priority_placeholder": "CPU 優先度を選択します", - "add_repo_modal_field_auto_unlock": "自動ロック解除機能を有効にする", - "add_repo_modal_preview_json": "JSON 形式でプレビュー", - "add_repo_modal_error_missing_password": "リポジトリのパスワードが不足しています。以下のいずれかを指定してください:パスワードを入力するか、環境変数 RESTIC_PASSWORD 、RESTIC_PASSWORD_COMMAND 、または RESTIC_PASSWORD_FILE を設定してください。", + "add_repo_modal_field_cpu_priority_default": "CPU_DEFAULT - 優先度の変更なし", + "add_repo_modal_field_cpu_priority_high": "CPU_HIGH - デフォルトの優先度よりも高い優先度(Backrestがrootとして実行されている必要があります)", + "add_repo_modal_field_cpu_priority_low": "CPU_LOW - デフォルトの優先度よりも低い優先度", + "add_repo_modal_field_cpu_priority_placeholder": "CPU 優先度を選択してください", + "add_repo_modal_field_auto_unlock": "自動ロック解除", + "add_repo_modal_preview_json": "リポジトリ設定(JSON形式)", + "add_repo_modal_error_missing_password": "リポジトリのパスワードがありません。パスワードを入力するか、環境変数 RESTIC_PASSWORD、RESTIC_PASSWORD_COMMAND、RESTIC_PASSWORD_FILE のいずれかを設定してください。", "dashboard_error_fetch": "概要データの取得に失敗しました:", "dashboard_repos_title": "リポジトリ", "dashboard_repos_empty": "リポジトリが見つかりませんでした", @@ -374,9 +374,9 @@ "dashboard_config_path": "設定ファイルのパス", "dashboard_data_dir": "データディレクトリのパス", "dashboard_config_json": "JSON 形式の設定", - "dashboard_backup_tooltip_time": "{time} にバックアップを作成しました", + "dashboard_backup_tooltip_time": "{time} のバックアップ", "dashboard_backup_tooltip_pending": "予定済み、待機中。", - "dashboard_backup_tooltip_finished": "{time} かかり、データ量:{bytes} を追加しました", + "dashboard_backup_tooltip_finished": "{duration} かかり、{bytes} を追加しました", "dashboard_card_backups_30d": "バックアップ(過去 30 日間)", "dashboard_card_backups_ok": "OK", "dashboard_card_backups_failed": "失敗", @@ -389,10 +389,10 @@ "dashboard_card_bytes_added_avg": "追加バイト数の平均値", "dashboard_remote_hosts_title": "リモートホスト", "dashboard_remote_clients_title": "リモートクライアント", - "dashboard_peer_instance_id": "インスタンス名", + "dashboard_peer_instance_id": "インスタンス ID", "dashboard_peer_public_key_id": "公開鍵 ID", "dashboard_peer_last_state_update": "最終状態の更新日時", - "dashboard_peer_ago": "前々日", + "dashboard_peer_ago": "前", "dashboard_getting_started_title": "はじめに", "dashboard_getting_started_check": "GitHub で Backrest の新しいリリースがあるかを確認する", "dashboard_getting_started_overview": "概要", @@ -403,100 +403,137 @@ "dashboard_getting_started_overview_c_c": " を参照してください。", "dashboard_getting_started_overview_d_a": "Backrest の設定方法については ", "dashboard_getting_started_overview_d_b": "Backrest の Wiki(英語)", - "dashboard_getting_started_overview_d_c": " をご覧ください。", + "dashboard_getting_started_overview_d_c": " を参照して、Backrest の設定手順を確認してください。", "dashboard_getting_started_tips": "ヒント", - "dashboard_getting_started_tips_a": "Backrest の設定をバックアップする:Backrest の設定には、全てのリポジトリ、プラン、そしてそれらを復号化するためのパスワードを格納されています。Backrest の設定を好みに合わせて設定している場合は、設定のコピー(または最低限パスワードのコピー)を安全な場所で保管してください。例えばパスワードマネージャーで安全なメモとして保存するなど。", - "dashboard_getting_started_tips_b": "フックの設定:Backrest はバックアップイベントに関する通知を配信できます。もしバックアップが上手くいかなかった場合(ストレージやネットワーク接続の問題など)に通知されるエラーフックを設定することを強く推奨します。フックはプランまたはリポジトリレベルで設定できます。", - "dashboard_getting_started_config_view": "設定を見る", + "dashboard_getting_started_tips_a": "Backrest の設定をバックアップする:Backrest の設定には、すべてのリポジトリ、プラン、およびそれらを復号するためのパスワードが格納されています。Backrest をお好みに合わせて設定できたら、設定のコピー(または最低限パスワードのコピー)を安全な場所(パスワードマネージャーのセキュアメモなど)に必ず保管してください。", + "dashboard_getting_started_tips_b": "フックの設定:Backrest はバックアップイベントに関する通知を送信できます。バックアップが失敗し始めた場合(ストレージやネットワーク接続の問題など)に通知を受け取るため、エラー発生時(on error)のフックを設定することを強く推奨します。フックはプランまたはリポジトリレベルで設定できます。", + "dashboard_getting_started_config_view": "設定ビュー", "dashboard_getting_started_config_json": "JSON 形式での設定(セキュリティのため非表示)", - "op_row_removed_header": "スナップショットを削除しました", + "op_row_removed_header": "削除されたスナップショット", "op_row_removed_none": "スナップショットは削除されませんでした。", "op_row_removed_id_col": "スナップショット ID", - "op_row_removed_time_col": "時間", + "op_row_removed_time_col": "日時", "op_row_restore_source": "ソースパス", - "op_row_restore_target": "出力先パス", + "op_row_restore_target": "復元先パス", "add_plan_modal_retention_policy_label": "保持ポリシー", - "add_plan_modal_retention_policy_mode_count_label": "個数別集計", - "add_plan_modal_retention_policy_mode_time_label": "期間別集計", + "add_plan_modal_retention_policy_mode_count_label": "件数で指定", + "add_plan_modal_retention_policy_mode_time_label": "期間で指定", "add_plan_modal_retention_policy_mode_none_label": "なし", - "add_plan_modal_retention_policy_keep_last_n_tooltip": "最後の N 個のスナップショットは restic によって保持されます。各バックアップ実行後、古いスナップショットを削除するための保存ポリシーが適用されます。", - "add_plan_modal_retention_policy_time_bucketed_tooltip": "各時間帯の最後から N 個のスナップショットは restic によって保持されます。バックアップ実行ごとに、古いスナップショットを削除するための保存ポリシーが適用されます。", - "add_plan_modal_retention_policy_keep_all_tooltip": "すべてのバックアップは保持されます。ただし、スナップショットセットが非常に大きくなると、処理速度が低下する可能性がある点にご注意ください。", - "add_plan_modal_retention_policy_keep_all_warning": "すべてのバックアップが保持されます。注意:リポジトリが非常に大きくなると、処理速度が低下する可能性があります。", - "add_plan_modal_retention_policy_keep_last_n_snapshots_label": "最後の N 個のスナップショットを保持する", + "add_plan_modal_retention_policy_keep_last_n_tooltip": "最新の N 個のスナップショットが restic によって保持されます。各バックアップ実行後、古いスナップショットを破棄するために保持ポリシーが適用されます。", + "add_plan_modal_retention_policy_time_bucketed_tooltip": "各期間(時間枠)の最新の N 個のスナップショットが restic によって保持されます。各バックアップの実行後に、古いスナップショットを破棄するために保持ポリシーが適用されます。", + "add_plan_modal_retention_policy_keep_all_tooltip": "すべてのバックアップが保持されます。なお、スナップショットの数が非常に多くなると、バックアップが遅くなる可能性があることに注意してください。", + "add_plan_modal_retention_policy_keep_all_warning": "すべてのバックアップが保持されます。警告:リポジトリが非常に大きくなると、バックアップの処理が遅くなる可能性があります。", + "add_plan_modal_retention_policy_keep_last_n_snapshots_label": "最新の N 個のスナップショットを保持", "add_plan_modal_retention_policy_yearly_label": "毎年", "add_plan_modal_retention_policy_monthly_label": "毎月", "add_plan_modal_retention_policy_weekly_label": "毎週", "add_plan_modal_retention_policy_daily_label": "毎日", "add_plan_modal_retention_policy_hourly_label": "毎時", - "add_plan_modal_retention_policy_latest_label": "最新(数)", - "add_plan_modal_retention_policy_keep_regardless_label": "年齢に関係なく保持する最新のスナップショット数を指定します", - "add_plan_modal_retention_policy_subhourly_helper": "頻繁に実行されるため、最近のスナップショットを保持しておく。", + "add_plan_modal_retention_policy_latest_label": "最新(件数)", + "add_plan_modal_retention_policy_keep_regardless_label": "作成時期に関わらず保持する最新のスナップショット数", + "add_plan_modal_retention_policy_subhourly_helper": "スケジュールが頻繁に実行されるため、最近のスナップショットをいくつか保持します。", "add_plan_modal_advanced_label": "高度な設定", "add_plan_modal_schedule_type_label": "スケジュールの種類", "add_plan_modal_schedule_disabled_label": "無効", - "add_plan_modal_schedule_disabled_description": "このプランでは自動スナップショットは無効になっています。手動でバックアップすることは可能です。", - "add_plan_modal_schedule_interval_hours": "間隔(時)", + "add_plan_modal_schedule_disabled_description": "このスケジュールでは自動実行が無効になっています。ただし、手動でトリガーすることは可能です。", + "add_plan_modal_schedule_interval_hours": "間隔(時間)", "add_plan_modal_schedule_interval_days": "間隔(日)", "add_plan_modal_schedule_interval_in_hours": "何時間おきに", "add_plan_modal_schedule_interval_in_days": "何日おきに", - "add_plan_modal_schedule_cron": "コロン", - "add_plan_modal_schedule_cron_expression": "コロンの式", - "add_plan_modal_schedule_invalid_cron": "不正なコロンの式", - "add_plan_modal_schedule_reference_clock": "参照時間", - "add_plan_modal_schedule_time_zone": "タイムゾーンまたは参照ポイントによってスケジュールされます。", + "add_plan_modal_schedule_cron": "Cron", + "add_plan_modal_schedule_cron_expression": "Cron式", + "add_plan_modal_schedule_invalid_cron": "無効なCron式", + "add_plan_modal_schedule_reference_clock": "基準時刻", + "add_plan_modal_schedule_time_zone": "スケジュールのタイムゾーンまたは基準点。", "add_plan_modal_schedule_time_local": "ローカル", "add_plan_modal_schedule_time_utc": "協定世界時(UTC)", - "add_plan_modal_schedule_time_last": "最後に走った時間", + "add_plan_modal_schedule_time_last": "最終実行日時", "op_row_error_path": "パス", "op_row_error_message": "メッセージ", "add_repo_modal_env_vars_placeholder": "KEY=VALUE(1行に1つずつ)", - "app_menu_edit_plan": "app_menu_edit_plan", - "add_repo_modal_field_auto_unlock_tooltip": "自動ロック解除は、ほとんどの操作開始時にアクセス権ファイルを削除します。リポジトリが複数のクライアントデバイスで共有されている場合には危険を伴うため、単一ユーザー環境でのみ使用することが推奨されます。", + "app_menu_edit_plan": "プランを編集", + "add_repo_modal_field_auto_unlock_tooltip": "自動ロック解除は、ほとんどの操作の開始時にロックファイルを削除します。リポジトリが複数のクライアントデバイスで共有されている場合には危険を伴う可能性がありますが、そうでない単一クライアントの構成では推奨されます。", "op_row_cancel_op": "操作を中止する", - "op_row_confirm_cancel": "本当にキャンセルしますか", + "op_row_confirm_cancel": "本当にキャンセルしますか?", "add_repo_modal_field_prune_policy_heading": "Prune ポリシー", "add_repo_modal_field_prune_policy_help": "Prune操作は、参照されていないデータ(例:忘れられたスナップショットなど)をresticリポジトリから削除します。これはresticがストレージからデータを削除する唯一のタイミングです。Pruneは頻繁に実行すべきではなく、月に一度程度が良い目安です。", "add_repo_modal_field_check_policy_heading": "Check ポリシー", "add_repo_modal_field_check_policy_help": "Check操作は、resticリポジトリの整合性を検証します。これらは頻繁に実行すべきではなく、月に一度程度が良い目安です。Checkは、最低限、リポジトリの構造を検証します。オプションで、Checkはパックデータを再ダウンロードしてチェックサムを検証することもできます。これは、ストレージがビット反転やサイレントデータ損失の影響を受けやすい場合に役立ちます。", "add_repo_modal_field_forget_policy": "Forget ポリシー", - "add_repo_modal_field_forget_policy_help": "全てのプランに単一の保持ポリシーを適用する、リポジトリ全体での forget を任意でスケジュール設定できます。有効にすると、プランごとの保持ポリシーは無効化されます。", + "add_repo_modal_field_forget_policy_help": "すべてのプランに単一の保持ポリシーを適用する、リポジトリ全体での forget を任意でスケジュール設定できます。有効にすると、プランごとの保持ポリシーは無効化されます。これは高度な機能です。複数のマシンでリポジトリを共有している場合を除き、プランごとの保持ポリシーを使用することをお勧めします。", "add_repo_modal_retention_policy_label": "保持ポリシー (リポジトリレベル)", "add_repo_modal_retention_policy_help": "リポジトリレベルで上記のスケジュールに従って実行され、プランごとにグループ化されたバックアップに適用される保持ポリシーです。スケジュールを無効にすると、各バックアップ操作の後にプランごとに保持ポリシーが適用されます。", "add_plan_modal_retention_managed_by_repo": "保持設定はリポジトリの Forget ポリシーを介してリポジトリレベルで管理されています。保持設定を変更するにはリポジトリを編集してください。", - "dashboard_activity_no_backups": "No backups recorded yet.", - "dashboard_activity_row_completed": "Completed", - "dashboard_activity_row_completed_warnings": "Completed with warnings", - "dashboard_activity_row_failed": "Failed", + "dashboard_activity_no_backups": "バックアップはまだ記録されていません。", + "dashboard_activity_row_completed": "完了", + "dashboard_activity_row_completed_warnings": "警告ありで完了", + "dashboard_activity_row_failed": "失敗", "dashboard_activity_row_label": "{plan} · {status}", - "dashboard_activity_row_ran": "Ran", - "dashboard_activity_title": "Recent activity", - "dashboard_card_destination": "Destination", - "dashboard_card_last_upload": "Last upload", - "dashboard_card_next_run": "Next run", - "dashboard_card_protected": "Protected", - "dashboard_card_retention": "Keeps {parts}", - "dashboard_hero_err": "A backup needs attention", - "dashboard_hero_idle": "Waiting for first backup", - "dashboard_hero_last_backup": "Last backup {ago}", - "dashboard_hero_next": "next {when}", - "dashboard_hero_no_backups": "No backups recorded yet", - "dashboard_hero_ok": "Everything's backed up", - "dashboard_hero_run": "Backing up now", - "dashboard_hero_warn": "Backed up, with warnings", - "dashboard_history_all_backed_up": "Backed up every day since you started", - "dashboard_history_issues": "{count} with issues", - "dashboard_history_legend_backed_up": "Backed up", - "dashboard_history_legend_issue": "Issue", - "dashboard_history_legend_missed": "Missed", - "dashboard_history_missed": "{count} days missed", - "dashboard_history_no_data": "Backup history will fill in as it runs", - "dashboard_history_summary": "{details} in the last 30 days", - "dashboard_history_tooltip_before_start": "Before you started", - "dashboard_history_tooltip_no_backup": "No backup", - "dashboard_state_label_err": "Backup failed", - "dashboard_state_label_idle": "No backups yet", - "dashboard_state_label_ok": "Backed up", - "dashboard_state_label_run": "Backing up", - "dashboard_state_label_warn": "Backed up, with warnings" + "dashboard_activity_row_ran": "実行", + "dashboard_activity_title": "最近のアクティビティ", + "dashboard_card_destination": "保存先", + "dashboard_card_last_upload": "最終アップロード", + "dashboard_card_next_run": "次回実行", + "dashboard_card_protected": "保護済み", + "dashboard_card_retention": "保持: {parts}", + "dashboard_hero_err": "バックアップに注意が必要です", + "dashboard_hero_idle": "最初のバックアップを待機中", + "dashboard_hero_last_backup": "最終バックアップ {ago}", + "dashboard_hero_next": "次回: {when}", + "dashboard_hero_no_backups": "バックアップはまだ記録されていません", + "dashboard_hero_ok": "すべてバックアップ済みです", + "dashboard_hero_run": "現在バックアップ中", + "dashboard_hero_warn": "バックアップ完了(警告あり)", + "dashboard_history_all_backed_up": "開始されてから毎日バックアップされています", + "dashboard_history_issues": "{count} 件で問題が発生", + "dashboard_history_legend_backed_up": "バックアップ済み", + "dashboard_history_legend_issue": "問題", + "dashboard_history_legend_missed": "未実行", + "dashboard_history_missed": "{count} 日間未実行", + "dashboard_history_no_data": "実行されるとバックアップ履歴が表示されます", + "dashboard_history_summary": "過去30日間で {details}", + "dashboard_history_tooltip_before_start": "開始前", + "dashboard_history_tooltip_no_backup": "バックアップなし", + "dashboard_state_label_err": "バックアップ失敗", + "dashboard_state_label_idle": "バックアップなし", + "dashboard_state_label_ok": "バックアップ済み", + "dashboard_state_label_run": "バックアップ中", + "dashboard_state_label_warn": "バックアップ完了(警告あり)", + "repo_error_forget": "Forgetに失敗しました: ", + "repo_button_forget": "今すぐForget", + "repo_tooltip_forget": "リポジトリレベルの保持ポリシーを適用して、リポジトリでForget操作を実行します", + "add_repo_modal_shared_forget_hint": "ヒント: 複数のマシン間でリポジトリを共有する場合は、(スケジュール設定で) リポジトリレベルのスケジュール済みForgetポリシーも設定してください。これにより、すべてのピアからのスナップショットに一貫して保持ポリシーが適用されます。", + "dashboard_time_never": "実行なし", + "dashboard_time_just_now": "たった今", + "dashboard_time_a_minute_ago": "1分前", + "dashboard_time_minutes_ago": "{count} 分前", + "dashboard_time_an_hour_ago": "1時間前", + "dashboard_time_hour_ago": "{count} 時間前", + "dashboard_time_hours_ago": "{count} 時間前", + "dashboard_time_yesterday": "昨日", + "dashboard_time_days_ago": "{count} 日前", + "dashboard_time_due_now": "今すぐ", + "dashboard_time_in_minutes": "{count} 分後", + "dashboard_time_in_hours": "{count} 時間後", + "dashboard_time_in_days": "{count} 日後", + "dashboard_time_soon": "まもなく", + "dashboard_schedule_every_minutes": "{count} 分ごとに実行", + "dashboard_schedule_hourly": "1時間ごとに実行", + "dashboard_schedule_daily": "毎日実行", + "dashboard_schedule_every_hours": "{count} 時間ごとに実行", + "dashboard_card_progress_detail": "{pct}% · {done} / {total}", + "dashboard_card_progress_pct": "{pct}% 完了", + "dashboard_card_progress_scanning": "スキャン中…", + "dashboard_repo_window_30d": "30日", + "dashboard_repo_ok": "{count} 正常", + "dashboard_repo_failed": "{count} 失敗", + "dashboard_repo_added": "追加済み", + "dashboard_activity_took": "{duration} かかりました", + "dashboard_peer_shared_repos": "共有リポジトリ", + "dashboard_retention_hourly": "毎時 {count}", + "dashboard_retention_daily": "毎日 {count}", + "dashboard_retention_weekly": "毎週 {count}", + "dashboard_retention_monthly": "毎月 {count}", + "dashboard_retention_yearly": "毎年 {count}", + "dashboard_repo_dest_local": "ローカル" } diff --git a/webui/messages/pt.json b/webui/messages/pt.json index 5bdf619e..2e7ca0a3 100644 --- a/webui/messages/pt.json +++ b/webui/messages/pt.json @@ -74,9 +74,9 @@ "settings_multihost_identity_tooltip": "A identidade multihost é usada para identificar esta instância em uma configuração multihost. Ela é derivada criptograficamente da chave pública desta instância.", "settings_multihost_identity_placeholder": "Identidade multihost única", "button_copy": "copiar", - "settings_multihost_authorized_clients": "Clientes Autorizados", - "settings_multihost_authorized_clients_tooltip": "Clientes autorizados são outras instâncias Backrest que têm permissão para acessar repositórios nesta instância.", - "settings_multihost_authorized_client_item": "Cliente Autorizado", + "settings_multihost_authorized_clients": "Pares Confiáveis", + "settings_multihost_authorized_clients_tooltip": "Pares confiáveis são outras instâncias do Backrest que têm permissão para se conectar e acessar repositórios nesta instância. Os pares são adicionados automaticamente por meio de tokens de pareamento.", + "settings_multihost_authorized_client_item": "Par Confiável", "settings_multihost_known_hosts": "Hosts Conhecidos", "settings_multihost_known_hosts_tooltip": "Hosts conhecidos são outras instâncias Backrest às quais esta instância pode se conectar.", "settings_multihost_known_host_item": "Host Conhecido", @@ -108,7 +108,7 @@ "repo_success_unlocked": "Repositório desbloqueado.", "repo_error_unlock": "Falha ao desbloquear repositório: ", "repo_error_stats": "Falha ao calcular estatísticas: ", - "repo_error_prune": "Falha ao podar: ", + "repo_error_prune": "Falha ao executar prune: ", "repo_error_check": "Falha ao verificar: ", "repo_deleted_message": "Repositório foi excluído", "repo_tab_tree": "Visualização em Árvore", @@ -121,7 +121,7 @@ "repo_button_index": "Indexar Snapshots", "repo_tooltip_index": "Indexa os snapshots no repositório. Os snapshots também são indexados automaticamente após cada backup.", "repo_button_unlock": "Desbloquear Repositório", - "repo_tooltip_unlock": "Remove arquivos de bloqueio e verifica o repositório por erros. Execute apenas se tiver certeza de que o repositório não está sendo acessado por outro sistema", + "repo_tooltip_unlock": "Remove arquivos de bloqueio e verifica se há erros no repositório. Execute apenas se tiver certeza de que o repositório não está sendo acessado por outro sistema", "repo_button_prune": "Podar Agora", "repo_tooltip_prune": "Executa uma operação de poda no repositório que removerá snapshots antigos e liberará espaço", "repo_button_check": "Verificar Agora", @@ -241,7 +241,7 @@ "plan_repo_not_found": "Repositório {repo} para o plano {planId} não encontrado", "plan_button_backup": "Fazer Backup Agora", "plan_button_clear_history": "Limpar Histórico de Erros", - "plan_tooltip_clear_history": "Remove operações falhadas da lista", + "plan_tooltip_clear_history": "Remove as operações que falharam da lista", "op_type_backup": "Backup", "op_type_snapshot": "Snapshot", "op_type_forget": "Esquecer", @@ -353,7 +353,7 @@ "add_plan_modal_retention_policy_daily_label": "Diário", "add_plan_modal_retention_policy_hourly_label": "Por Hora", "add_plan_modal_retention_policy_keep_regardless_label": "Últimos snapshots a manter independentemente da idade", - "add_plan_modal_retention_policy_subhourly_helper": "Agenda executa frequentemente; manter alguns snapshots recentes.", + "add_plan_modal_retention_policy_subhourly_helper": "O agendamento é executado com frequência; mantém alguns snapshots recentes.", "op_row_error_path": "Caminho", "op_row_error_message": "Mensagem", "add_repo_modal_env_vars_placeholder": "CHAVE=VALOR (Um por linha)", @@ -404,7 +404,7 @@ "repo_hooks_command_runs_info_error": "CONDITION_SNAPSHOT_ERROR - fim do backup com falha", "repo_hooks_command_runs_info_warning": "CONDITION_SNAPSHOT_WARNING - fim do backup parcial", "repo_hooks_command_runs_info_prune_start": "CONDITION_PRUNE_START - início da operação de prune", - "repo_hooks_command_runs_info_docs": "... veja a documentação para mais", + "repo_hooks_command_runs_info_docs": "... veja a documentação para saber mais", "repo_hooks_command_runs_condition_snapshot_start": "Acionado quando uma operação de backup começa e deve ser concluída com sucesso antes que o snapshot seja iniciado.", "repo_hooks_command_runs_condition_snapshot_end": "Acionado quando uma operação de backup é concluída (independentemente de sucesso/falha)", "repo_hooks_command_runs_condition_snapshot_success": "Acionado quando uma operação de backup é concluída com sucesso", @@ -446,7 +446,7 @@ "add_plan_modal_advanced_label": "Avançado", "add_plan_modal_schedule_type_label": "Tipo de Agendamento", "add_plan_modal_schedule_disabled_label": "Desativado", - "add_plan_modal_schedule_disabled_description": "Snapshots automáticos estão desativados para este plano. Você ainda pode executar backups manualmente.", + "add_plan_modal_schedule_disabled_description": "A execução automática está desativada para este agendamento. Você ainda pode acionar este agendamento manualmente.", "add_plan_modal_schedule_interval_hours": "Intervalo (Horas)", "add_plan_modal_schedule_interval_days": "Intervalo (Dias)", "add_plan_modal_schedule_interval_in_hours": "Intervalo em Horas", @@ -460,43 +460,80 @@ "add_plan_modal_schedule_time_utc": "UTC", "add_plan_modal_schedule_time_last": "Hora da Última Execução", "add_repo_modal_field_forget_policy": "Política de Forget", - "add_repo_modal_field_forget_policy_help": "Opcionalmente agende um forget em todo o repositório que aplica uma única política de retenção em todos os planos. Quando ativado, as políticas de retenção por plano são desativadas.", + "add_repo_modal_field_forget_policy_help": "Opcionalmente agende um forget em todo o repositório que aplica uma única política de retenção em todos os planos. Quando ativado, as políticas de retenção por plano são desativadas. Este é um recurso avançado. Dê preferência a políticas de retenção por plano, a menos que compartilhe o repositório com várias máquinas.", "add_repo_modal_retention_policy_label": "Política de Retenção (Nível do Repositório)", "add_repo_modal_retention_policy_help": "Política de retenção aplicada a backups agrupados por plano, executada no agendamento acima ao nível do repositório. Desative o agendamento para aplicar uma política de retenção por plano após cada operação de backup.", "add_plan_modal_retention_managed_by_repo": "A retenção é gerenciada ao nível do repositório através da Política de Forget do repositório. Edite o repositório para alterar as configurações de retenção.", - "dashboard_activity_no_backups": "No backups recorded yet.", - "dashboard_activity_row_completed": "Completed", - "dashboard_activity_row_completed_warnings": "Completed with warnings", - "dashboard_activity_row_failed": "Failed", + "dashboard_activity_no_backups": "Nenhum backup registrado ainda.", + "dashboard_activity_row_completed": "Concluído", + "dashboard_activity_row_completed_warnings": "Concluído com avisos", + "dashboard_activity_row_failed": "Falhou", "dashboard_activity_row_label": "{plan} · {status}", - "dashboard_activity_row_ran": "Ran", - "dashboard_activity_title": "Recent activity", - "dashboard_card_destination": "Destination", - "dashboard_card_last_upload": "Last upload", - "dashboard_card_next_run": "Next run", - "dashboard_card_protected": "Protected", - "dashboard_card_retention": "Keeps {parts}", + "dashboard_activity_row_ran": "Executado", + "dashboard_activity_title": "Atividade recente", + "dashboard_card_destination": "Destino", + "dashboard_card_last_upload": "Último upload", + "dashboard_card_next_run": "Próxima execução", + "dashboard_card_protected": "Protegido", + "dashboard_card_retention": "Mantém {parts}", "dashboard_hero_err": "A backup needs attention", - "dashboard_hero_idle": "Waiting for first backup", - "dashboard_hero_last_backup": "Last backup {ago}", - "dashboard_hero_next": "next {when}", - "dashboard_hero_no_backups": "No backups recorded yet", - "dashboard_hero_ok": "Everything's backed up", - "dashboard_hero_run": "Backing up now", - "dashboard_hero_warn": "Backed up, with warnings", - "dashboard_history_all_backed_up": "Backed up every day since you started", - "dashboard_history_issues": "{count} with issues", - "dashboard_history_legend_backed_up": "Backed up", - "dashboard_history_legend_issue": "Issue", - "dashboard_history_legend_missed": "Missed", - "dashboard_history_missed": "{count} days missed", - "dashboard_history_no_data": "Backup history will fill in as it runs", - "dashboard_history_summary": "{details} in the last 30 days", - "dashboard_history_tooltip_before_start": "Before you started", - "dashboard_history_tooltip_no_backup": "No backup", - "dashboard_state_label_err": "Backup failed", - "dashboard_state_label_idle": "No backups yet", - "dashboard_state_label_ok": "Backed up", - "dashboard_state_label_run": "Backing up", - "dashboard_state_label_warn": "Backed up, with warnings" + "dashboard_hero_idle": "Aguardando o primeiro backup", + "dashboard_hero_last_backup": "Último backup {ago}", + "dashboard_hero_next": "próximo {when}", + "dashboard_hero_no_backups": "Nenhum backup registrado ainda", + "dashboard_hero_ok": "Tudo com backup realizado", + "dashboard_hero_run": "Realizando backup agora", + "dashboard_hero_warn": "Backup concluído com avisos", + "dashboard_history_all_backed_up": "Backup realizado todos os dias desde que começou", + "dashboard_history_issues": "{count} com problemas", + "dashboard_history_legend_backed_up": "Backup realizado", + "dashboard_history_legend_issue": "Problema", + "dashboard_history_legend_missed": "Não realizado", + "dashboard_history_missed": "{count} dias perdidos", + "dashboard_history_no_data": "O histórico de backup será preenchido conforme for executado", + "dashboard_history_summary": "{details} nos últimos 30 dias", + "dashboard_history_tooltip_before_start": "Antes de começar", + "dashboard_history_tooltip_no_backup": "Sem backup", + "dashboard_state_label_err": "Falha no backup", + "dashboard_state_label_idle": "Nenhum backup ainda", + "dashboard_state_label_ok": "Backup realizado", + "dashboard_state_label_run": "Realizando backup", + "dashboard_state_label_warn": "Backup realizado com avisos", + "repo_error_forget": "Falha ao executar forget: ", + "repo_button_forget": "Executar Forget agora", + "repo_tooltip_forget": "Executa uma operação forget no repositório aplicando a política de retenção de nível do repositório", + "add_repo_modal_shared_forget_hint": "Dica: ao compartilhar um repositório entre várias máquinas, configure também uma Política de Forget agendada no nível do repositório (em Agendamento) para que a retenção seja aplicada de forma consistente aos snapshots de todos os pares.", + "dashboard_time_never": "nunca", + "dashboard_time_just_now": "agora mesmo", + "dashboard_time_a_minute_ago": "há um minuto", + "dashboard_time_minutes_ago": "há {count} min", + "dashboard_time_an_hour_ago": "há uma hora", + "dashboard_time_hour_ago": "há {count} hora", + "dashboard_time_hours_ago": "há {count} horas", + "dashboard_time_yesterday": "ontem", + "dashboard_time_days_ago": "há {count} dias", + "dashboard_time_due_now": "agora", + "dashboard_time_in_minutes": "em {count} min", + "dashboard_time_in_hours": "em {count} horas", + "dashboard_time_in_days": "em {count} dias", + "dashboard_time_soon": "em breve", + "dashboard_schedule_every_minutes": "Executa a cada {count} min", + "dashboard_schedule_hourly": "Executa de hora em hora", + "dashboard_schedule_daily": "Executa diariamente", + "dashboard_schedule_every_hours": "Executa a cada {count}h", + "dashboard_card_progress_detail": "{pct}% · {done} de {total}", + "dashboard_card_progress_pct": "{pct}% concluído", + "dashboard_card_progress_scanning": "Escaneando…", + "dashboard_repo_window_30d": "30d", + "dashboard_repo_ok": "{count} ok", + "dashboard_repo_failed": "{count} falhou", + "dashboard_repo_added": "Adicionado", + "dashboard_activity_took": "levou {duration}", + "dashboard_peer_shared_repos": "Repositórios Compartilhados", + "dashboard_retention_hourly": "{count} por hora", + "dashboard_retention_daily": "{count} diários", + "dashboard_retention_weekly": "{count} semanais", + "dashboard_retention_monthly": "{count} mensais", + "dashboard_retention_yearly": "{count} anuais", + "dashboard_repo_dest_local": "Local" } \ No newline at end of file diff --git a/webui/messages/ru.json b/webui/messages/ru.json index 9fe93fa8..199070a0 100644 --- a/webui/messages/ru.json +++ b/webui/messages/ru.json @@ -29,7 +29,7 @@ "add_plan_modal_field_excludes_tooltip_suffix": " для подробностей.", "add_plan_modal_field_excludes_add": "Добавить маску исключения", "add_plan_modal_field_iexcludes": "Исключения (без учёта регистра)", - "add_plan_modal_field_iexcludes_tooltip_prefix": "Пути, нечувствительные к регистру, которые нужно исключить. Смотрите ", + "add_plan_modal_field_iexcludes_tooltip_prefix": "Пути для исключения из резервных копий без учёта регистра. Смотрите ", "add_plan_modal_field_iexcludes_add": "Добавить маску исключения без учёта регистра", "add_plan_modal_field_schedule": "Расписание резервного копирования", "add_plan_modal_field_backup_flags": "Флаги резервного копирования", @@ -74,9 +74,9 @@ "settings_multihost_identity_tooltip": "Идентификатор мультихоста используется для идентификации этого экземпляра в мультихостовой конфигурации. Он криптографически выводится из открытого ключа экземпляра.", "settings_multihost_identity_placeholder": "Уникальный идентификатор мультихоста", "button_copy": "копировать", - "settings_multihost_authorized_clients": "Авторизованные клиенты", - "settings_multihost_authorized_clients_tooltip": "Авторизованные клиенты — другие экземпляры Backrest, которым разрешён доступ к репозиториям на этом экземпляре.", - "settings_multihost_authorized_client_item": "Авторизованный клиент", + "settings_multihost_authorized_clients": "Доверенные узлы", + "settings_multihost_authorized_clients_tooltip": "Доверенные узлы — это другие экземпляры Backrest, которым разрешено подключаться и получать доступ к репозиториям на этом экземпляре. Узлы добавляются автоматически с помощью токенов сопряжения.", + "settings_multihost_authorized_client_item": "Доверенный узел", "settings_multihost_known_hosts": "Известные хосты", "settings_multihost_known_hosts_tooltip": "Известные хосты — другие экземпляры Backrest, к которым может подключаться этот экземпляр.", "settings_multihost_known_host_item": "Известный хост", @@ -94,7 +94,7 @@ "settings_peer_permission_type": "Тип", "settings_peer_permission_type_required": "Необходимо указать тип разрешения", "settings_permission_edit_repo": "Редактировать конфигурацию репозитория", - "settings_permission_read_ops": "Чтение операций", + "settings_permission_read_ops": "Операции чтения", "settings_permission_type_placeholder": "Выберите тип разрешения", "settings_peer_permission_scopes": "Области", "settings_peer_permission_scopes_required": "Нужна хотя бы одна область", @@ -211,7 +211,7 @@ "op_row_command_output": "Вывод команды", "op_row_restore_details": "Сведения о восстановлении", "op_row_hook_output": "Вывод хука", - "op_row_hooks_triggered": "Хуки запущены", + "op_row_hooks_triggered": "Сработавшие хуки", "op_row_snapshot_id": "ID снимка: ", "op_row_user_host": "Пользователь и хост", "op_row_tags": "Теги", @@ -249,8 +249,8 @@ "op_type_check": "Проверка", "op_type_restore": "Восстановление", "op_type_stats": "Статистика", - "op_type_run_hook": "Запустить хук", - "op_type_run_command": "Выполнить команду", + "op_type_run_hook": "Запуск хука", + "op_type_run_command": "Выполнение команды", "op_type_unknown": "Неизвестно", "op_status_pending": "ожидает", "op_status_in_progress": "выполняется", @@ -276,7 +276,7 @@ "add_repo_modal_field_prune_policy": "Политика очистки", "add_repo_modal_field_prune_policy_tooltip_p1": "Расписание выполнения операций очистки для этого репозитория. См. ", "add_repo_modal_field_prune_policy_tooltip_link": "документацию restic по настройке prune", - "add_repo_modal_field_prune_policy_tooltip_p2": " для подробностей.", + "add_repo_modal_field_prune_policy_tooltip_p2": " для получения подробностей.", "add_repo_modal_field_max_unused": "Макс. неиспользуемых данных после очистки", "add_repo_modal_field_max_unused_tooltip": "Максимальный процент размера репозитория, который может оставаться неиспользованным после завершения очистки. Более высокие значения уменьшают копирование в ущерб месту хранения.", "add_repo_modal_field_check_policy": "Политика проверки", @@ -315,7 +315,7 @@ "dashboard_card_backups_30d": "Резервные копии (30 дн.)", "dashboard_card_backups_ok": "успешные", "dashboard_card_backups_failed": "с ошибками", - "dashboard_card_backups_warning": "С предупреждениями", + "dashboard_card_backups_warning": "с предупреждениями", "dashboard_card_bytes_scanned_30d": "Просканировано байт (30 дн.)", "dashboard_card_bytes_added_30d": "Добавлено байт (30 дн.)", "dashboard_card_next_backup": "Следующее запланированное резервное копирование", @@ -347,7 +347,7 @@ "add_plan_modal_retention_policy_monthly_label": "Ежемесячно", "add_plan_modal_retention_policy_weekly_label": "Еженедельно", "add_plan_modal_retention_policy_daily_label": "Ежедневно", - "add_plan_modal_retention_policy_hourly_label": "Ежечасный", + "add_plan_modal_retention_policy_hourly_label": "Ежечасно", "add_plan_modal_retention_policy_keep_regardless_label": "Сохранять последние снимки независимо от возраста", "add_plan_modal_retention_policy_subhourly_helper": "Планировщик запускается часто; сохранять несколько последних снимков.", "op_row_error_path": "Путь", @@ -364,22 +364,22 @@ "op_type_dry_run_backup": "Пробное резервное копирование", "plan_dry_run_scheduled": "Пробное резервное копирование запланировано", "plan_dry_run_error": "Сбой пробного резервного копирования: ", - "add_plan_modal_field_repository_select": "Выбрать repository", + "add_plan_modal_field_repository_select": "Выбрать репозиторий", "add_plan_modal_field_add": "Добавить", "add_plan_modal_field_add_hook": "Добавить хук", - "add_plan_modal_field_paths_tooltip": "Пути для включения в snapshot, создаваемые этим планом", + "add_plan_modal_field_paths_tooltip": "Пути для включения в снимки, создаваемые этим планом", "hooks_from_list_a": "Хуки позволяют настроить действия, например, уведомления и скрипты, которые запускаются в ответ на жизненный цикл резервного копирования. См. ", "hooks_from_list_b": "документацию по хукам", - "hooks_from_list_c": " для доступных опций, или ", + "hooks_from_list_c": ", чтобы узнать о доступных опциях, или ", "hooks_from_list_d": "руководство", - "hooks_from_list_e": " для примеров скриптов.", + "hooks_from_list_e": " с примерами скриптов.", "repo_tab_stats_no": "Статистика недоступна", "repo_tab_stats_yet": "Вы уже запускали операцию по сбору статистики?", "repo_tab_stats_size": "Общий размер", "repo_tab_stats_ratio": "Степень сжатия", - "repo_tab_stats_count": "Количество snapshot", + "repo_tab_stats_count": "Количество снимков", "repo_tab_stats_blob": "Общее количество блоков данных", - "repo_command_run": "Запустить команду в repository", + "repo_command_run": "Запустить команду в репозитории", "repo_command_tooltip": "Запустить команду restic, например 'help', для вывода справки", "repo_command_button_execute": "Выполнить", "repo_command_no": "Операции еще не запущены", @@ -446,7 +446,7 @@ "add_plan_modal_advanced_label": "Расширенные", "add_plan_modal_schedule_type_label": "Тип расписания", "add_plan_modal_schedule_disabled_label": "Отключено", - "add_plan_modal_schedule_disabled_description": "Автоматические снимки отключены для этого плана. Вы по-прежнему можете запускать резервное копирование вручную.", + "add_plan_modal_schedule_disabled_description": "Автоматический запуск отключен для этого расписания. Вы по-прежнему можете запустить это расписание вручную.", "add_plan_modal_schedule_interval_hours": "Интервал (часы)", "add_plan_modal_schedule_interval_days": "Интервал (дни)", "add_plan_modal_schedule_interval_in_hours": "Интервал в часах", @@ -460,43 +460,80 @@ "add_plan_modal_schedule_time_utc": "UTC", "add_plan_modal_schedule_time_last": "Время последнего запуска", "add_repo_modal_field_forget_policy": "Политика Forget", - "add_repo_modal_field_forget_policy_help": "При желании можно запланировать выполнение операции forget на уровне репозитория, которая применяет единую политику хранения ко всем планам. При включении этой функции индивидуальные политики хранения для планов отключаются.", + "add_repo_modal_field_forget_policy_help": "При желании можно запланировать выполнение операции forget на уровне репозитория, которая применяет единую политику хранения ко всем планам. При включении этой функции индивидуальные политики хранения для планов отключаются. Это расширенная функция. Рекомендуется использовать политики хранения на уровне планов, за исключением случаев, когда репозиторий используется совместно несколькими машинами.", "add_repo_modal_retention_policy_label": "Политика хранения (уровень репозитория)", "add_repo_modal_retention_policy_help": "Политика хранения применяется к резервным копиям, сгруппированным по планам, и выполняется по расписанию выше на уровне репозитория. Отключите расписание, чтобы вместо этого применять политику хранения отдельно для каждого плана после каждой операции backup.", "add_plan_modal_retention_managed_by_repo": "Хранение управляется на уровне репозитория через политику Forget. Отредактируйте репозиторий, чтобы изменить настройки хранения.", - "dashboard_activity_no_backups": "No backups recorded yet.", - "dashboard_activity_row_completed": "Completed", - "dashboard_activity_row_completed_warnings": "Completed with warnings", - "dashboard_activity_row_failed": "Failed", + "dashboard_activity_no_backups": "Резервных копий пока не зарегистрировано.", + "dashboard_activity_row_completed": "Завершено", + "dashboard_activity_row_completed_warnings": "Завершено с предупреждениями", + "dashboard_activity_row_failed": "Ошибка", "dashboard_activity_row_label": "{plan} · {status}", - "dashboard_activity_row_ran": "Ran", - "dashboard_activity_title": "Recent activity", - "dashboard_card_destination": "Destination", - "dashboard_card_last_upload": "Last upload", - "dashboard_card_next_run": "Next run", - "dashboard_card_protected": "Protected", - "dashboard_card_retention": "Keeps {parts}", - "dashboard_hero_err": "A backup needs attention", - "dashboard_hero_idle": "Waiting for first backup", - "dashboard_hero_last_backup": "Last backup {ago}", - "dashboard_hero_next": "next {when}", - "dashboard_hero_no_backups": "No backups recorded yet", - "dashboard_hero_ok": "Everything's backed up", - "dashboard_hero_run": "Backing up now", - "dashboard_hero_warn": "Backed up, with warnings", - "dashboard_history_all_backed_up": "Backed up every day since you started", - "dashboard_history_issues": "{count} with issues", - "dashboard_history_legend_backed_up": "Backed up", - "dashboard_history_legend_issue": "Issue", - "dashboard_history_legend_missed": "Missed", - "dashboard_history_missed": "{count} days missed", - "dashboard_history_no_data": "Backup history will fill in as it runs", - "dashboard_history_summary": "{details} in the last 30 days", - "dashboard_history_tooltip_before_start": "Before you started", - "dashboard_history_tooltip_no_backup": "No backup", - "dashboard_state_label_err": "Backup failed", - "dashboard_state_label_idle": "No backups yet", - "dashboard_state_label_ok": "Backed up", - "dashboard_state_label_run": "Backing up", - "dashboard_state_label_warn": "Backed up, with warnings" + "dashboard_activity_row_ran": "Запущено", + "dashboard_activity_title": "Последняя активность", + "dashboard_card_destination": "Место назначения", + "dashboard_card_last_upload": "Последняя загрузка", + "dashboard_card_next_run": "Следующий запуск", + "dashboard_card_protected": "Защищено", + "dashboard_card_retention": "Хранит {parts}", + "dashboard_hero_err": "Резервная копия требует внимания", + "dashboard_hero_idle": "Ожидание первого резервного копирования", + "dashboard_hero_last_backup": "Последний бэкап {ago}", + "dashboard_hero_next": "следующий: {when}", + "dashboard_hero_no_backups": "Резервные копии еще не создавались", + "dashboard_hero_ok": "Все резервные копии созданы", + "dashboard_hero_run": "Выполняется резервное копирование", + "dashboard_hero_warn": "Создано с предупреждениями", + "dashboard_history_all_backed_up": "Резервное копирование выполнялось каждый день с момента запуска", + "dashboard_history_issues": "{count} с проблемами", + "dashboard_history_legend_backed_up": "Создан бэкап", + "dashboard_history_legend_issue": "Проблема", + "dashboard_history_legend_missed": "Пропущено", + "dashboard_history_missed": "Пропущено дней: {count}", + "dashboard_history_no_data": "История резервного копирования заполнится по мере выполнения запусков", + "dashboard_history_summary": "{details} за последние 30 дней", + "dashboard_history_tooltip_before_start": "До начала работы", + "dashboard_history_tooltip_no_backup": "Нет бэкапа", + "dashboard_state_label_err": "Ошибка резервного копирования", + "dashboard_state_label_idle": "Нет бэкапов", + "dashboard_state_label_ok": "Резервная копия создана", + "dashboard_state_label_run": "Резервное копирование", + "dashboard_state_label_warn": "Создано с предупреждениями", + "repo_error_forget": "Не удалось выполнить forget: ", + "repo_button_forget": "Запустить forget", + "repo_tooltip_forget": "Запускает операцию forget для репозитория, применяя политику хранения уровня репозитория", + "add_repo_modal_shared_forget_hint": "Совет: при совместном использовании репозитория на нескольких машинах также настройте запланированную политику Forget на уровне репозитория (в разделе Scheduling), чтобы правила хранения применялись ко всем снапшотам от всех участников.", + "dashboard_time_never": "никогда", + "dashboard_time_just_now": "только что", + "dashboard_time_a_minute_ago": "минуту назад", + "dashboard_time_minutes_ago": "{count} мин. назад", + "dashboard_time_an_hour_ago": "час назад", + "dashboard_time_hour_ago": "{count} ч. назад", + "dashboard_time_hours_ago": "{count} ч. назад", + "dashboard_time_yesterday": "вчера", + "dashboard_time_days_ago": "{count} дн. назад", + "dashboard_time_due_now": "пора выполнять", + "dashboard_time_in_minutes": "через {count} мин.", + "dashboard_time_in_hours": "через {count} ч.", + "dashboard_time_in_days": "через {count} дн.", + "dashboard_time_soon": "скоро", + "dashboard_schedule_every_minutes": "Запуск каждые {count} мин.", + "dashboard_schedule_hourly": "Запуск каждый час", + "dashboard_schedule_daily": "Запуск ежедневно", + "dashboard_schedule_every_hours": "Запуск каждые {count} ч.", + "dashboard_card_progress_detail": "{pct}% · {done} из {total}", + "dashboard_card_progress_pct": "{pct}% готово", + "dashboard_card_progress_scanning": "Сканирование…", + "dashboard_repo_window_30d": "30д", + "dashboard_repo_ok": "{count} ок", + "dashboard_repo_failed": "{count} не удалось", + "dashboard_repo_added": "Добавлено", + "dashboard_activity_took": "заняло {duration}", + "dashboard_peer_shared_repos": "Общие репозитории", + "dashboard_retention_hourly": "{count} ежечасных", + "dashboard_retention_daily": "{count} ежедневных", + "dashboard_retention_weekly": "{count} еженедельных", + "dashboard_retention_monthly": "{count} ежемесячных", + "dashboard_retention_yearly": "{count} ежегодных", + "dashboard_repo_dest_local": "Локальный" } diff --git a/webui/messages/zh.json b/webui/messages/zh.json index 223693e5..d2368d8e 100644 --- a/webui/messages/zh.json +++ b/webui/messages/zh.json @@ -66,16 +66,16 @@ "settings_auth_password_required": "密码为必填项", "settings_auth_password_placeholder": "密码", "settings_auth_add_user": "添加用户", - "settings_multihost_intro": "多实例身份允许您在多个 Backrest 实例之间共享仓库。这对于跟踪多套系统的备份状态非常有用。", - "settings_multihost_warning": "注意!该功能尚处于实验阶段,将来可能会出现不兼容旧版本的更改,届时需要同时更新所有实例。", - "settings_multihost_identity": "多实例身份", - "settings_multihost_identity_required": "多实例身份是必需的", - "settings_multihost_identity_tooltip": "多实例身份用于在多主机设置中识别此实例。它通过此实例的公钥加密派生而来。", - "settings_multihost_identity_placeholder": "多实例唯一身份", + "settings_multihost_intro": "多主机身份允许您在多个 Backrest 实例之间共享仓库。这对于跟踪多套系统的备份状态非常有用。", + "settings_multihost_warning": "警告:该功能尚处于实验阶段,将来可能会出现不兼容旧版本的更改,届时需要同时更新所有实例。", + "settings_multihost_identity": "多主机身份", + "settings_multihost_identity_required": "需要多主机身份", + "settings_multihost_identity_tooltip": "多主机身份用于在多主机设置中标识此实例。它是由此实例的公钥通过密码学算法派生而来的。", + "settings_multihost_identity_placeholder": "唯一的多主机身份", "button_copy": "复制", - "settings_multihost_authorized_clients": "已授权实例", - "settings_multihost_authorized_clients_tooltip": "已授权实例是指被允许访问此实例上仓库的其他 Backrest 实例。", - "settings_multihost_authorized_client_item": "已授权实例", + "settings_multihost_authorized_clients": "受信任的对等端", + "settings_multihost_authorized_clients_tooltip": "受信任的对等端是指被允许连接并访问此实例上仓库的其他 Backrest 实例。对等端是通过配对令牌自动添加的。", + "settings_multihost_authorized_client_item": "受信任的对等端", "settings_multihost_known_hosts": "已知主机", "settings_multihost_known_hosts_tooltip": "已知主机是指此实例可以连接访问的其他 Backrest 实例。", "settings_multihost_known_host_item": "已知主机", @@ -90,7 +90,7 @@ "settings_peer_instance_url_pattern": "请输入一个合法的 URL", "settings_peer_instance_url_placeholder": "https://example.com:9898", "settings_peer_permissions": "权限", - "settings_peer_permission_type": "权限类别", + "settings_peer_permission_type": "类型", "settings_peer_permission_type_required": "权限类型为必填项", "settings_permission_edit_repo": "编辑仓库配置", "settings_permission_read_ops": "读取操作", @@ -104,12 +104,12 @@ "peer_default_name": "对等节点", "repo_error_index": "索引快照时出错: ", "repo_info_unlocking": "解锁仓库中...", - "repo_success_unlocked": "已解锁仓库", + "repo_success_unlocked": "仓库已解锁。", "repo_error_unlock": "解锁仓库时出错: ", "repo_error_stats": "计算统计信息时出错: ", - "repo_error_prune": "修剪时出错: ", + "repo_error_prune": "执行 Prune 失败: ", "repo_error_check": "检查时出错: ", - "repo_deleted_message": "已删除仓库", + "repo_deleted_message": "仓库已被删除", "repo_tab_tree": "树形视图", "repo_tab_list": "列表视图", "repo_history_title": "备份活动记录", @@ -146,7 +146,7 @@ "app_menu_add_repo": "添加仓库", "app_menu_remote_instances": "远程实例", "app_menu_settings": "设置", - "app_error_initial_config": "未能获取初始配置,这通常意味着用户界面无法连接到后端。", + "app_error_initial_config": "未能获取初始配置,这通常意味着用户界面无法连接到后端", "login_success": "已登录", "login_error": "登录失败: ", "login_title": "登录", @@ -197,14 +197,14 @@ "add_repo_modal_field_flags": "选项", "add_repo_modal_error_flag_format": "值应为 CLI 选项,例如参阅 restic --help", "add_repo_modal_button_set_flag": "设置选项", - "add_repo_modal_field_prune_policy": "清理策略", - "add_repo_modal_field_prune_policy_tooltip_p1": "针对此存储库运行清理操作的计划。阅读 ", - "add_repo_modal_field_prune_policy_tooltip_link": "restic 自定义清理操作文档", + "add_repo_modal_field_prune_policy": "修剪策略", + "add_repo_modal_field_prune_policy_tooltip_p1": "针对此存储库运行修剪操作的计划。阅读 ", + "add_repo_modal_field_prune_policy_tooltip_link": "restic 自定义修剪操作文档", "add_repo_modal_field_prune_policy_tooltip_p2": " 以了解更多信息。", - "add_repo_modal_field_max_unused": "清理后最大未引用数据占比", - "add_repo_modal_field_max_unused_tooltip": "清理操作完成后,存储库中未引用数据所占的最大百分比。较高的数值会减少数据复制,但会增加存储开销。", + "add_repo_modal_field_max_unused": "修剪后最大未引用数据占比", + "add_repo_modal_field_max_unused_tooltip": "修剪操作完成后,存储库中未引用数据所占的最大百分比。较高的数值会减少数据复制,但会增加存储开销。", "add_repo_modal_field_check_policy": "检查策略", - "add_repo_modal_field_check_policy_tooltip": "针对此存储库运行检查操作的计划。restic 检查操作通过扫描构成备份数据的磁盘结构来验证存储库的完整性。检查操作可以选择配置为重新读取和重新哈希数据,这会很慢且可能耗费大量带宽,但能捕获存储介质中的位腐烂或静默损坏。", + "add_repo_modal_field_check_policy_tooltip": "针对此存储库运行检查操作的计划。Restic 检查操作通过扫描构成备份数据的磁盘结构来验证存储库的完整性。检查操作可以选择配置为重新读取和重新哈希数据,这会很慢且可能耗费大量带宽,但能捕获存储介质中的比特衰减或静默数据损坏。", "add_repo_modal_field_read_data": "读取数据百分比", "add_repo_modal_field_read_data_tooltip": "此存储库中将读取和验证的数据包的百分比。较高的值将使用更多带宽(例如,100% 表示每次检查时都会重新读取整个存储库)。", "add_repo_modal_field_command_modifiers": "命令修饰符", @@ -276,7 +276,7 @@ "op_status_error": "错误", "op_status_warning": "警告", "op_status_success": "成功", - "op_status_cancelled": "取消", + "op_status_cancelled": "已取消", "op_status_unknown": "未知", "op_subtitle_scheduled": "已安排,等待中", "op_subtitle_processed": "已处理 {percentage}%", @@ -295,7 +295,7 @@ "op_row_view_logs": "查看日志", "op_row_backup_details": "备份详细信息", "op_row_item_errors": "错误条目", - "op_row_error_on_item": "条目中的错误: {item}", + "op_row_error_on_item": "处理条目时出错: {item}", "op_row_details": "详细信息", "op_row_snapshot_browser": "快照浏览器", "op_row_removed_snapshots": "已移除 {count} 个快照", @@ -312,7 +312,7 @@ "op_row_files_changed": "修改文件", "op_row_files_unmodified": "未修改文件", "op_row_bytes_added": "新增字节", - "op_row_total_bytes": "总处理字节", + "op_row_total_bytes": "已处理字节总数", "op_row_total_files": "已处理文件总数", "op_row_restore_desc": "恢复 {path} 至 {target}", "op_row_download_files": "下载文件", @@ -353,13 +353,13 @@ "add_plan_modal_retention_policy_keep_all_warning": "所有备份均会保留。警告:如果存储库变得非常大,这可能会导致备份速度变慢。", "add_plan_modal_retention_policy_keep_last_n_snapshots_label": "保留最近的 N 个快照", "add_plan_modal_retention_policy_yearly_label": "每年", - "add_plan_modal_retention_policy_monthly_label": "月度", + "add_plan_modal_retention_policy_monthly_label": "每月", "add_plan_modal_retention_policy_weekly_label": "每周", "add_plan_modal_retention_policy_daily_label": "每日", "add_plan_modal_retention_policy_hourly_label": "每小时", "add_plan_modal_retention_policy_keep_regardless_label": "保留最新快照(不计年限)", "add_plan_modal_retention_policy_subhourly_helper": "计划会频繁运行;保留一些最近的快照。", - "add_repo_modal_env_vars_placeholder": "键=值(每行一个)", + "add_repo_modal_env_vars_placeholder": "KEY=VALUE(每行一个)", "app_menu_edit_plan": "编辑计划", "add_repo_modal_field_auto_unlock_tooltip": "自动解锁将在大多数操作开始时删除锁定文件。如果存储库由多个客户端设备共享,这可能不安全,否则建议用于单客户端设置。", "op_row_cancel_op": "取消操作", @@ -367,20 +367,20 @@ "op_row_delete": "[删除]", "op_row_confirm_delete": "[确认删除?]", "app_menu_dashboard": "仪表板", - "add_plan_modal_field_paths_tooltip": "请输入需要备份的文件路径,每行一个。输入时支持自动补全。", + "add_plan_modal_field_paths_tooltip": "此计划创建的快照中要包含的路径", "settings_section_user_settings": "用户设置", "settings_field_language": "显示语言", - "add_repo_modal_field_prune_policy_heading": "清理策略", - "add_repo_modal_field_prune_policy_help": "清理操作会从 restic 存储库中移除不再引用的数据,例如已不再保留的快照等。这是 restic 唯一一次从存储中删除数据的操作。清理操作应该不频繁执行,每月一次是一个不错的起始频率。", + "add_repo_modal_field_prune_policy_heading": "修剪策略", + "add_repo_modal_field_prune_policy_help": "修剪操作会从 restic 存储库中移除不再引用的数据,例如已不再保留的快照等。这是 restic 唯一一次从存储中删除数据的操作。修剪操作应该不频繁执行,每月一次是一个不错的起始频率。", "add_repo_modal_field_check_policy_heading": "检查策略", "add_repo_modal_field_check_policy_help": "检查操作用于验证 restic 存储库的完整性。建议不频繁运行,每月一次左右是一个不错的起点。检查操作至少会验证存储库的结构。此外,检查操作还可以选择重新下载并验证数据包的校验和,这在存储可能存在位翻转或静默数据丢失的情况下非常有用。", "op_type_dry_run_backup": "试运行备份", "plan_dry_run_scheduled": "试运行备份已计划", "plan_dry_run_error": "试运行失败: ", - "add_plan_modal_field_repository_select": "选择存储库", + "add_plan_modal_field_repository_select": "选择仓库", "add_plan_modal_field_add": "添加", "add_plan_modal_field_add_hook": "添加 Hook", - "hooks_from_list_a": "Hook 允许您配置动作,例如通知和脚本,这些动作在备份生命周期响应时运行。请参阅", + "hooks_from_list_a": "Hook 允许您配置响应备份生命周期而运行的操作(如通知和脚本)。请参阅", "hooks_from_list_b": "hook 文档", "hooks_from_list_c": " 以获取可用选项,或", "hooks_from_list_d": "操作指南", @@ -391,7 +391,7 @@ "repo_tab_stats_ratio": "压缩率", "repo_tab_stats_count": "快照数量", "repo_tab_stats_blob": "总 Blob 数量", - "repo_command_run": "在存储库中运行命令", + "repo_command_run": "在仓库中运行命令", "repo_command_tooltip": "运行 restic 命令,例如 'help' 以打印帮助文本", "repo_command_button_execute": "执行", "repo_command_no": "暂无操作", @@ -436,7 +436,7 @@ "repo_hooks_command_runs_condition_unknown": "在未知情况下触发", "app_menu_menu": "菜单", "login_password_invalid": "密码无效", - "add_repo_modal_repo_details": "存储库详情", + "add_repo_modal_repo_details": "仓库详情", "add_repo_modal_env_and_flags": "环境与标志", "dashboard_getting_started_title": "入门", "dashboard_getting_started_check": "在 GitHub 上检查 Backrest 新版本", @@ -458,7 +458,7 @@ "add_plan_modal_advanced_label": "高级", "add_plan_modal_schedule_type_label": "调度类型", "add_plan_modal_schedule_disabled_label": "已禁用", - "add_plan_modal_schedule_disabled_description": "此计划已禁用自动快照。您仍然可以手动运行备份。", + "add_plan_modal_schedule_disabled_description": "此调度的自动执行已被禁用。您仍然可以手动触发此调度。", "add_plan_modal_schedule_interval_hours": "间隔(小时)", "add_plan_modal_schedule_interval_days": "间隔(天)", "add_plan_modal_schedule_interval_in_hours": "间隔(小时)", @@ -472,43 +472,80 @@ "add_plan_modal_schedule_time_utc": "UTC", "add_plan_modal_schedule_time_last": "上次运行时间", "add_repo_modal_field_forget_policy": "Forget 策略", - "add_repo_modal_field_forget_policy_help": "可选地计划一个存储库范围的 Forget 操作,将单一保留策略应用于所有计划。启用后,将禁用按计划设置的保留策略。", + "add_repo_modal_field_forget_policy_help": "可选地计划一个存储库范围的 Forget 操作,将单一保留策略应用于所有计划。启用后,将禁用按计划的保留策略。这是一个高级功能。除非多台机器共享该存储库,否则建议优先使用按计划的保留策略。", "add_repo_modal_retention_policy_label": "保留策略 (存储库级别)", "add_repo_modal_retention_policy_help": "保留策略应用于按计划分组的备份,并在存储库级别按上述计划运行。禁用此计划则改为在每次备份操作后应用按计划的保留策略。", "add_plan_modal_retention_managed_by_repo": "保留策略通过存储库的 Forget 策略在存储库级别管理。请编辑存储库以修改保留设置。", - "dashboard_activity_no_backups": "No backups recorded yet.", - "dashboard_activity_row_completed": "Completed", - "dashboard_activity_row_completed_warnings": "Completed with warnings", - "dashboard_activity_row_failed": "Failed", + "dashboard_activity_no_backups": "暂无备份记录。", + "dashboard_activity_row_completed": "已完成", + "dashboard_activity_row_completed_warnings": "已完成(有警告)", + "dashboard_activity_row_failed": "已失败", "dashboard_activity_row_label": "{plan} · {status}", - "dashboard_activity_row_ran": "Ran", - "dashboard_activity_title": "Recent activity", - "dashboard_card_destination": "Destination", - "dashboard_card_last_upload": "Last upload", - "dashboard_card_next_run": "Next run", - "dashboard_card_protected": "Protected", - "dashboard_card_retention": "Keeps {parts}", - "dashboard_hero_err": "A backup needs attention", - "dashboard_hero_idle": "Waiting for first backup", - "dashboard_hero_last_backup": "Last backup {ago}", - "dashboard_hero_next": "next {when}", - "dashboard_hero_no_backups": "No backups recorded yet", - "dashboard_hero_ok": "Everything's backed up", - "dashboard_hero_run": "Backing up now", - "dashboard_hero_warn": "Backed up, with warnings", - "dashboard_history_all_backed_up": "Backed up every day since you started", - "dashboard_history_issues": "{count} with issues", - "dashboard_history_legend_backed_up": "Backed up", - "dashboard_history_legend_issue": "Issue", - "dashboard_history_legend_missed": "Missed", - "dashboard_history_missed": "{count} days missed", - "dashboard_history_no_data": "Backup history will fill in as it runs", - "dashboard_history_summary": "{details} in the last 30 days", - "dashboard_history_tooltip_before_start": "Before you started", - "dashboard_history_tooltip_no_backup": "No backup", - "dashboard_state_label_err": "Backup failed", - "dashboard_state_label_idle": "No backups yet", - "dashboard_state_label_ok": "Backed up", - "dashboard_state_label_run": "Backing up", - "dashboard_state_label_warn": "Backed up, with warnings" + "dashboard_activity_row_ran": "已运行", + "dashboard_activity_title": "近期活动", + "dashboard_card_destination": "目的地", + "dashboard_card_last_upload": "上次上传", + "dashboard_card_next_run": "下次运行", + "dashboard_card_protected": "已保护", + "dashboard_card_retention": "保留 {parts}", + "dashboard_hero_err": "有备份需要注意", + "dashboard_hero_idle": "等待首次备份", + "dashboard_hero_last_backup": "上次备份于 {ago}", + "dashboard_hero_next": "下次:{when}", + "dashboard_hero_no_backups": "暂无备份记录", + "dashboard_hero_ok": "所有内容已备份", + "dashboard_hero_run": "正在备份", + "dashboard_hero_warn": "已备份,但有警告", + "dashboard_history_all_backed_up": "自开始以来每天均已备份", + "dashboard_history_issues": "{count} 个异常", + "dashboard_history_legend_backed_up": "已备份", + "dashboard_history_legend_issue": "异常", + "dashboard_history_legend_missed": "未执行", + "dashboard_history_missed": "{count} 天未执行", + "dashboard_history_no_data": "备份运行后将在此显示历史记录", + "dashboard_history_summary": "最近 30 天内:{details}", + "dashboard_history_tooltip_before_start": "开始使用前", + "dashboard_history_tooltip_no_backup": "无备份", + "dashboard_state_label_err": "备份失败", + "dashboard_state_label_idle": "暂无备份", + "dashboard_state_label_ok": "已备份", + "dashboard_state_label_run": "正在备份", + "dashboard_state_label_warn": "已备份(有警告)", + "repo_error_forget": "执行 Forget 失败: ", + "repo_button_forget": "立即执行 Forget", + "repo_tooltip_forget": "对仓库运行 Forget 操作,应用仓库级别的保留策略", + "add_repo_modal_shared_forget_hint": "提示:在多台机器间共享存储库时,请在“调度”中配置存储库级别的定时 Forget 策略,以确保保留策略能够一致地应用于来自所有节点的快照。", + "dashboard_time_never": "从未", + "dashboard_time_just_now": "刚刚", + "dashboard_time_a_minute_ago": "1 分钟前", + "dashboard_time_minutes_ago": "{count} 分钟前", + "dashboard_time_an_hour_ago": "1 小时前", + "dashboard_time_hour_ago": "{count} 小时前", + "dashboard_time_hours_ago": "{count} 小时前", + "dashboard_time_yesterday": "昨天", + "dashboard_time_days_ago": "{count} 天前", + "dashboard_time_due_now": "立即执行", + "dashboard_time_in_minutes": "{count} 分钟后", + "dashboard_time_in_hours": "{count} 小时后", + "dashboard_time_in_days": "{count} 天后", + "dashboard_time_soon": "即将", + "dashboard_schedule_every_minutes": "每 {count} 分钟运行一次", + "dashboard_schedule_hourly": "每小时运行一次", + "dashboard_schedule_daily": "每天运行一次", + "dashboard_schedule_every_hours": "每 {count} 小时运行一次", + "dashboard_card_progress_detail": "{pct}% · {done} / {total}", + "dashboard_card_progress_pct": "已完成 {pct}%", + "dashboard_card_progress_scanning": "正在扫描...", + "dashboard_repo_window_30d": "30天", + "dashboard_repo_ok": "{count} 正常", + "dashboard_repo_failed": "{count} 失败", + "dashboard_repo_added": "已添加", + "dashboard_activity_took": "耗时 {duration}", + "dashboard_peer_shared_repos": "共享存储库", + "dashboard_retention_hourly": "每小时 {count} 个", + "dashboard_retention_daily": "每日 {count} 个", + "dashboard_retention_weekly": "每周 {count} 个", + "dashboard_retention_monthly": "每月 {count} 个", + "dashboard_retention_yearly": "每年 {count} 个", + "dashboard_repo_dest_local": "本地" } diff --git a/webui/project.inlang/.meta.json b/webui/project.inlang/.meta.json index 924071d9..4bd0757f 100644 --- a/webui/project.inlang/.meta.json +++ b/webui/project.inlang/.meta.json @@ -1,3 +1,3 @@ { - "highestSdkVersion": "2.7.0" + "highestSdkVersion": "2.10.2" } \ No newline at end of file diff --git a/webui/project.inlang/README.md b/webui/project.inlang/README.md index e8bd2f80..2c132a54 100644 --- a/webui/project.inlang/README.md +++ b/webui/project.inlang/README.md @@ -6,7 +6,9 @@ This is an [unpacked (git-friendly)](https://inlang.com/docs/unpacked-project) i ## At a glance Purpose: -- This folder stores inlang project configuration and plugin cache data. +- This folder is the Git-friendly representation of an `.inlang` project. +- The canonical `.inlang` format is a single binary file; this directory is the unpacked version for Git. +- This folder stores project configuration and plugin cache data. - Translation files live outside this folder and are referenced from `settings.json`. Safe to edit: @@ -17,26 +19,44 @@ Do not edit: - `.gitignore` Key files: -- `settings.json` — locales, plugins, file patterns (source of truth) +- `settings.json` — locales, plugins, file patterns - `cache/` — plugin caches (safe to delete) - `.gitignore` — generated +- `README.md` — generated, explains this folder +- `.meta.json` — generated SDK metadata ``` *.inlang/ -├── settings.json # Locales, plugins, and file patterns (source of truth) -├── cache/ # Plugin caches (gitignored) -└── .gitignore # Ignores everything except settings.json +├── settings.json # Locales, plugins, and file patterns; kept in Git +├── .gitignore # Ignores everything except settings.json +├── README.md # Generated, explains this folder +├── .meta.json # Generated SDK metadata +└── cache/ # Plugin caches, usually cache/plugins/ ``` Translation files (like `messages/en.json`) live **outside** this folder and are referenced via plugins in `settings.json`. ## What is inlang? -[Inlang](https://inlang.com) is an open file format for building custom localization (i18n) tooling. It provides: +[Inlang](https://inlang.com) is an open project file format for localization. An `.inlang` project is canonically a single binary file: a SQLite database with version control via [lix](https://lix.dev). Like `.sqlite` for relational data, `.inlang` packages localization data into one file that tools can share. + +For Git repositories, that binary file can be unpacked into a directory of plain files. The packed file is the canonical format; this directory is the Git-friendly representation. + +Use inlang when multiple tools, teams, automations, or agents need to use the same localization data. The `@inlang/sdk` is the reference implementation for reading and writing `.inlang` projects. + +`.inlang` is the canonical project format. Plugins import and export external translation files for compatibility with existing runtimes and workflows. Messages, variants, and locale data live in the `.inlang` database; translation files such as `messages/en.json` live outside this folder and are connected through plugins. Version control via lix adds file-level history, merging, and change proposals to `.inlang` projects. + +It provides: - **CRUD API** — Read and write translations programmatically via SQL -- **Plugin system** — Import/export any format (JSON, XLIFF, etc.) -- **Version control** — Built-in version control via [lix](https://lix.dev) +- **Plugin system** — Import/export external translation files (JSON, XLIFF, etc.) +- **Version control** — Version control via [lix](https://lix.dev) + +Core data model: + +- **Bundle** — one translatable unit across locales +- **Message** — locale-specific translation for a bundle +- **Variant** — text pattern plus selector matches ``` ┌──────────┐ ┌───────────┐ ┌────────────┐ @@ -59,15 +79,45 @@ npm install @inlang/sdk ```ts import { loadProjectFromDirectory, saveProjectToDirectory } from "@inlang/sdk"; +import fs from "node:fs"; -const project = await loadProjectFromDirectory({ path: "./project.inlang" }); -// Query messages with SQLite + [Kysely](https://kysely.dev/) under the hood. +const project = await loadProjectFromDirectory({ + path: "./project.inlang", + fs, +}); +// Query messages with the SDK. const messages = await project.db.selectFrom("message").selectAll().execute(); // Use project.db to update messages. -await saveProjectToDirectory({ path: "./project.inlang", project }); +await saveProjectToDirectory({ + path: "./project.inlang", + fs, + project, +}); + +await project.close(); ``` +`loadProjectFromDirectory()` and `saveProjectToDirectory()` both accept `node:fs`. `saveProjectToDirectory()` writes translation files through import/export plugins. If no exporter plugin is configured, save the canonical packed file with `project.toBlob()` instead. + +## For coding agents and tool builders + +Target `.inlang` instead of inventing a custom JSON schema. + +Why target `.inlang`? + +- One file gives every tool the same data model for bundles, messages, variants, locales, metadata, and settings. +- CRUD operations are available through the SDK instead of custom parsing and rewriting. +- Version control via [lix](https://lix.dev) keeps localization changes reviewable and mergeable. +- Plugins handle JSON, ICU, i18next, XLIFF, and other formats for compatibility. + +Do not: + +- Invent a custom `locales/en.json` schema as the project format. +- Create a new localization config when a `.inlang` project already exists. +- Edit generated or cached files in this directory. +- Bypass `@inlang/sdk` when reading or writing `.inlang`. + ## Ideas for custom tooling - Translation health dashboard (missing/empty/stale messages) diff --git a/webui/scripts/translate-gemini.ts b/webui/scripts/translate-gemini.ts index bf7d7761..1af92269 100644 --- a/webui/scripts/translate-gemini.ts +++ b/webui/scripts/translate-gemini.ts @@ -17,9 +17,11 @@ import * as readline from "node:readline"; // ─── Config ────────────────────────────────────────────────────────────────── const PROJECT_PATH = "./project.inlang"; -const MODEL_NAME = "gemini-3-flash-preview"; +const MODEL_NAME = "gemini-3.5-flash"; const BATCH_SIZE = 32; -const CONCURRENCY = 4; // Max simultaneous Gemini requests per language +// Max simultaneous Gemini requests, shared across all languages. Override with CONCURRENCY=N. +const CONCURRENCY = Number(process.env.CONCURRENCY) || 4; +const MAX_RETRIES = 5; // Per-batch retries on transient API failures. const BACKREST_CONTEXT = ` Context about Backrest: @@ -54,6 +56,14 @@ interface TranslationItem { bundle: any; } +/** One batch of items for a single language, tagged with its position for logging. */ +interface LangBatch { + lang: string; + batch: TranslationItem[]; + batchIndex: number; + batchCount: number; +} + type TranslationResult = { id: string; translation: string }; type ReviewResult = @@ -101,6 +111,38 @@ const reprocessSchema = { // ─── Helpers ────────────────────────────────────────────────────────────────── +/** Split an array into fixed-size chunks. */ +function chunk(items: T[], size: number): T[][] { + const out: T[][] = []; + for (let i = 0; i < items.length; i += size) out.push(items.slice(i, i + size)); + return out; +} + +/** + * Build a flat, cross-language list of batches so the buffered iterator can keep + * the API saturated across every target language at once (rather than draining + * one language before starting the next). `getItems` selects the items per lang. + */ +function buildWork( + langs: string[], + getItems: (lang: string) => TranslationItem[], + onEmpty: (lang: string) => void +): LangBatch[] { + const work: LangBatch[] = []; + for (const lang of langs) { + const items = getItems(lang); + if (items.length === 0) { + onEmpty(lang); + continue; + } + const batches = chunk(items, BATCH_SIZE); + batches.forEach((batch, batchIndex) => + work.push({ lang, batch, batchIndex, batchCount: batches.length }) + ); + } + return work; +} + /** Convert an inlang pattern array to a flat string (for display and prompts). */ function patternToText(pattern: any[]): string { return pattern @@ -132,48 +174,61 @@ function parsePattern(text: string, allowedVariables?: Set): any[] { * A buffered async iterator: applies `fn` to each item in `source` with up to * `concurrency` in-flight calls at once, yielding results in source order. * - * This is the core primitive enabling "fetch ahead while user reviews". + * Crucially, launching is driven by task *completions* (via the `.finally` + * callback below), not by the consumer pulling the next value. That means the + * pipeline keeps `concurrency` requests in flight and accumulates an unbounded + * queue of finished results even while the consumer is parked — e.g. blocked on + * `readline` waiting for the human to approve a review. Leave it for an hour and + * everything will have been fetched and queued, ready to approve. */ async function* createBufferedIterator( source: T[], concurrency: number, fn: (item: T, index: number) => Promise ): AsyncGenerator<{ item: T; result: R; index: number }> { - // Resolved results waiting to be yielded, keyed by index + // Finished results waiting to be yielded, keyed by index (the queue). const resolved = new Map(); - // Active promises, keyed by index - const inflight = new Map>(); + const inflight = new Set(); let nextToLaunch = 0; let nextToYield = 0; - const launch = (i: number) => { - const item = source[i]; - const p = fn(item, i).then((result) => { - resolved.set(i, result); - inflight.delete(i); - }); - inflight.set(i, p); + // A one-shot signal used to wake the consumer when it is waiting for the next + // in-order result. Refreshed each time it fires. + let wake: (() => void) | null = null; + const signalWake = () => { + const w = wake; + wake = null; + w?.(); }; - while (nextToYield < source.length) { - // Fill up to concurrency + // Keep `concurrency` requests in flight. Re-invoked from each task's + // completion callback, so it runs in the background regardless of how slowly + // (or whether) the consumer is pulling results. + const pump = () => { while (nextToLaunch < source.length && inflight.size < concurrency) { - launch(nextToLaunch++); + const i = nextToLaunch++; + inflight.add(i); + Promise.resolve(fn(source[i], i)) + .then((result) => resolved.set(i, result)) + .finally(() => { + inflight.delete(i); + pump(); + signalWake(); + }); } + }; - // Wait until the next result in order is ready + pump(); + + while (nextToYield < source.length) { if (!resolved.has(nextToYield)) { - // Wait for any inflight to finish, then check again - await Promise.race(inflight.values()); - } - - if (resolved.has(nextToYield)) { - const item = source[nextToYield]; - const result = resolved.get(nextToYield)!; - resolved.delete(nextToYield); - yield { item, result, index: nextToYield }; - nextToYield++; + await new Promise((r) => (wake = r)); + continue; } + const result = resolved.get(nextToYield)!; + resolved.delete(nextToYield); + yield { item: source[nextToYield], result, index: nextToYield }; + nextToYield++; } } @@ -188,14 +243,26 @@ class GeminiClient { } private async call(prompt: string, schema: any): Promise { - const result = await this.model.generateContent({ - contents: [{ role: "user", parts: [{ text: prompt }] }], - generationConfig: { - responseMimeType: "application/json", - responseSchema: schema, - }, - }); - return JSON.parse(result.response.text()) as T; + let lastErr: any; + for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) { + try { + const result = await this.model.generateContent({ + contents: [{ role: "user", parts: [{ text: prompt }] }], + generationConfig: { + responseMimeType: "application/json", + responseSchema: schema, + }, + }); + return JSON.parse(result.response.text()) as T; + } catch (err: any) { + lastErr = err; + if (attempt === MAX_RETRIES) break; + // Exponential backoff with jitter to ride out 429s / transient 5xx. + const delay = Math.min(30_000, 1_000 * 2 ** attempt) * (0.5 + Math.random()); + await new Promise((r) => setTimeout(r, delay)); + } + } + throw lastErr; } private translatePrompt(lang: string, items: TranslationItem[]): string { @@ -248,18 +315,25 @@ class GeminiClient { // ─── TranslationProject ─────────────────────────────────────────────────────── -interface BundleInfo { - bundle: any; - /** Variable names used in the English source. */ - allowedVars: Set; -} - class TranslationProject { private project: any | null = null; private _bundles: any[] = []; private _sourceLang = "en"; private _targetLangs: string[] = []; private _bundleVars = new Map>(); + private _dirty = false; + // Serializes DB writes (updateBundle) against disk saves so a timer-driven + // save never reads the DB mid-write. + private _lock: Promise = Promise.resolve(); + + private withLock(fn: () => Promise): Promise { + const run = this._lock.then(fn, fn); + this._lock = run.then( + () => undefined, + () => undefined + ); + return run; + } async load(projectPath: string): Promise { const repo = await openRepository(pathToFileURL(path.resolve(process.cwd())).href, { @@ -372,15 +446,31 @@ class TranslationProject { // Mutate the local reference so subsequent passes see the updated message bundle.messages = newBundle.messages; - await upsertBundleNested(this.project!.db, newBundle); + await this.withLock(() => upsertBundleNested(this.project!.db, newBundle)); + this._dirty = true; } async save(projectPath: string): Promise { - await saveProjectToDirectory({ - fs: nodeFs, - project: this.project!, - path: path.resolve(process.cwd(), projectPath), - }); + await this.withLock(() => + saveProjectToDirectory({ + fs: nodeFs, + project: this.project!, + path: path.resolve(process.cwd(), projectPath), + }) + ); + } + + /** Saves to disk only if there are unsaved edits. Returns true if it saved. */ + async saveIfDirty(projectPath: string): Promise { + if (!this._dirty) return false; + this._dirty = false; + try { + await this.save(projectPath); + return true; + } catch (err) { + this._dirty = true; // leave dirty so the next tick retries + throw err; + } } } @@ -428,48 +518,40 @@ async function runTranslate( ): Promise { let totalUpdates = 0; - for (const lang of project.targetLangs) { - const allItems = project.getMissingItems(lang); - if (allItems.length === 0) { - console.error(`[${lang}] Nothing to translate. Skipping.`); - continue; - } + const work = buildWork( + project.targetLangs, + (lang) => project.getMissingItems(lang), + (lang) => console.error(`[${lang}] Nothing to translate. Skipping.`) + ); + if (work.length === 0) { + console.log("Nothing to translate."); + return; + } + console.error(`${work.length} batches to translate across ${project.targetLangs.length} languages.`); - // Chunk into batches - const batches: TranslationItem[][] = []; - for (let i = 0; i < allItems.length; i += BATCH_SIZE) { - batches.push(allItems.slice(i, i + BATCH_SIZE)); - } - - console.error(`[${lang}] ${allItems.length} strings to translate across ${batches.length} batches.`); - let batchNum = 0; - - // Process batches with bounded concurrency, yielding results in order - for await (const { item: batch, result, index } of createBufferedIterator( - batches, - CONCURRENCY, - async (batch, batchIndex) => { - process.stderr.write(`[${lang}] Fetching batch ${batchIndex + 1}/${batches.length}...\n`); - try { - return await gemini.translateBatch(lang, batch); - } catch (err: any) { - console.error(`\n[${lang}] ERROR: Gemini call failed for batch ${batchIndex + 1}/${batches.length}: ${err.message}`); - return [] as TranslationResult[]; - } + // One buffered iterator over every (lang, batch) pair keeps the API saturated globally. + for await (const { item: w, result } of createBufferedIterator( + work, + CONCURRENCY, + async (w) => { + process.stderr.write(`[${w.lang}] Fetching batch ${w.batchIndex + 1}/${w.batchCount}...\n`); + try { + return await gemini.translateBatch(w.lang, w.batch); + } catch (err: any) { + console.error(`\n[${w.lang}] ERROR: batch ${w.batchIndex + 1}/${w.batchCount} failed after retries: ${err.message}`); + return [] as TranslationResult[]; } - )) { - batchNum++; - for (const trans of result) { - const item = batch.find((i) => i.id === trans.id); - if (!item) { - console.error(`[${lang}] Warning: Gemini returned unknown id '${trans.id}', skipping.`); - continue; - } - await project.updateBundle(item.bundle, lang, trans.translation); - console.log(`[${lang}] ✓ ${item.id}`); - totalUpdates++; + } + )) { + for (const trans of result) { + const item = w.batch.find((i) => i.id === trans.id); + if (!item) { + console.error(`[${w.lang}] Warning: Gemini returned unknown id '${trans.id}', skipping.`); + continue; } - process.stderr.write(`[${lang}] Batch ${batchNum}/${batches.length} applied.\n`); + await project.updateBundle(item.bundle, w.lang, trans.translation); + console.log(`[${w.lang}] ✓ ${item.id}`); + totalUpdates++; } } @@ -484,65 +566,62 @@ async function runReprocess( let totalAccepted = 0; let totalSkipped = 0; - for (const lang of project.targetLangs) { - const allItems = project.getExistingItems(lang); - if (allItems.length === 0) { - console.error(`[${lang}] No existing translations found. Skipping.`); + const work = buildWork( + project.targetLangs, + (lang) => project.getExistingItems(lang), + (lang) => console.error(`[${lang}] No existing translations found. Skipping.`) + ); + if (work.length === 0) { + console.log("No existing translations to review."); + return; + } + console.error(`Reviewing ${work.length} batches across ${project.targetLangs.length} languages.`); + + // One global buffered iterator keeps CONCURRENCY reviews in flight across all + // languages while the user serially approves each completed batch — so the + // queue stays full no matter how long the user takes. + for await (const { item: w, result } of createBufferedIterator( + work, + CONCURRENCY, + async (w) => { + process.stderr.write(`[${w.lang}] Fetching review for batch ${w.batchIndex + 1}/${w.batchCount}...\n`); + try { + return await gemini.reviewBatch(w.lang, w.batch); + } catch (err: any) { + console.error(`\n[${w.lang}] ERROR: batch ${w.batchIndex + 1}/${w.batchCount} failed after retries: ${err.message}`); + return [] as ReviewResult[]; + } + } + )) { + const suggestions = result.filter( + (r): r is { id: string; newTranslation: string; explanation: string } => + "newTranslation" in r && !!r.newTranslation + ); + + if (suggestions.length === 0) { + process.stderr.write(`[${w.lang}] Batch ${w.batchIndex + 1}/${w.batchCount}: all translations OK.\n`); continue; } - const batches: TranslationItem[][] = []; - for (let i = 0; i < allItems.length; i += BATCH_SIZE) { - batches.push(allItems.slice(i, i + BATCH_SIZE)); - } + process.stderr.write( + `[${w.lang}] Batch ${w.batchIndex + 1}/${w.batchCount}: ${suggestions.length} suggestion(s) to review.\n` + ); - console.error(`\n[${lang}] Reviewing ${allItems.length} strings across ${batches.length} batches.`); - - // The buffered iterator keeps CONCURRENCY Gemini calls in flight while the - // user serially reviews each completed batch — true pipelining. - for await (const { item: batch, result, index } of createBufferedIterator( - batches, - CONCURRENCY, - async (batch, batchIndex) => { - process.stderr.write(`[${lang}] Fetching review for batch ${batchIndex + 1}/${batches.length}...\n`); - try { - return await gemini.reviewBatch(lang, batch); - } catch (err: any) { - console.error(`\n[${lang}] ERROR: Gemini call failed for batch ${batchIndex + 1}/${batches.length}: ${err.message}`); - return [] as ReviewResult[]; - } - } - )) { - const suggestions = result.filter( - (r): r is { id: string; newTranslation: string; explanation: string } => - "newTranslation" in r && !!r.newTranslation - ); - - if (suggestions.length === 0) { - process.stderr.write(`[${lang}] Batch ${index + 1}/${batches.length}: all translations OK.\n`); + for (const review of suggestions) { + const item = w.batch.find((i) => i.id === review.id); + if (!item) { + console.error(`[${w.lang}] Warning: Gemini returned unknown id '${review.id}', skipping.`); continue; } - process.stderr.write( - `[${lang}] Batch ${index + 1}/${batches.length}: ${suggestions.length} suggestion(s) to review.\n` - ); - - for (const review of suggestions) { - const item = batch.find((i) => i.id === review.id); - if (!item) { - console.error(`[${lang}] Warning: Gemini returned unknown id '${review.id}', skipping.`); - continue; - } - - const accepted = await reviewer.promptReview(lang, item, review.newTranslation, review.explanation); - if (accepted) { - await project.updateBundle(item.bundle, lang, review.newTranslation); - console.log(" → Updated."); - totalAccepted++; - } else { - console.log(" → Skipped."); - totalSkipped++; - } + const accepted = await reviewer.promptReview(w.lang, item, review.newTranslation, review.explanation); + if (accepted) { + await project.updateBundle(item.bundle, w.lang, review.newTranslation); + console.log(" → Updated."); + totalAccepted++; + } else { + console.log(" → Skipped."); + totalSkipped++; } } } @@ -574,15 +653,28 @@ async function main() { console.error(`Source: ${project.sourceLang} → Targets: ${targetLangs.join(", ")}`); - if (isReprocess) { - const reviewer = new UserReviewer(); - try { - await runReprocess(gemini, project, reviewer); - } finally { - reviewer.close(); + // Periodically flush new edits to disk so an interrupted long run isn't lost. + const autosave = setInterval(() => { + project + .saveIfDirty(PROJECT_PATH) + .then((saved) => saved && console.error("[autosave] saved.")) + .catch((err) => console.error(`[autosave] failed: ${err.message}`)); + }, 60_000); + autosave.unref(); + + try { + if (isReprocess) { + const reviewer = new UserReviewer(); + try { + await runReprocess(gemini, project, reviewer); + } finally { + reviewer.close(); + } + } else { + await runTranslate(gemini, project); } - } else { - await runTranslate(gemini, project); + } finally { + clearInterval(autosave); } console.error("Saving project to disk...");