diff --git a/.gitignore b/.gitignore index 42485a25..71387535 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ /target/ **/target/ +.claude/ + # Processed static assets (generated by build.rs in release mode) /static-dist/ diff --git a/frontend/src/lib/components/AdminJobsPanel.svelte b/frontend/src/lib/components/AdminJobsPanel.svelte index 2d5fd49e..7a70be95 100644 --- a/frontend/src/lib/components/AdminJobsPanel.svelte +++ b/frontend/src/lib/components/AdminJobsPanel.svelte @@ -588,7 +588,7 @@

{t( 'admin.jobs.hint', - 'Fires periodic + on-demand jobs. Consistency checks are safe to run at any time — they are read-only.' + 'This section concerns internal background tasks: periodic + on-demand tasks. Consistency checks are safe to run at any time — they are read-only.' )}

@@ -640,7 +640,9 @@ {:else if !jobs}

{t('common.loading', 'Loading…')}

{:else if jobs.length === 0} -

{t('admin.jobs.none_registered', 'No jobs registered.')}

+

+ {t('admin.jobs.none_registered', 'No background tasks registered.')} +

{:else} @@ -1106,7 +1108,7 @@ {#if purgeModal} diff --git a/frontend/src/lib/components/AppShell.svelte b/frontend/src/lib/components/AppShell.svelte index 6200c1ec..595b5637 100644 --- a/frontend/src/lib/components/AppShell.svelte +++ b/frontend/src/lib/components/AppShell.svelte @@ -131,7 +131,7 @@ }, { href: '/admin/jobs', - label: t('admin.jobs.tab', 'Jobs'), + label: t('admin.jobs.tab', 'Background tasks'), icon: 'cogs', section: 'admin-jobs' } diff --git a/frontend/src/routes/admin/[[tab]]/+page.svelte b/frontend/src/routes/admin/[[tab]]/+page.svelte index 60633dda..0736610c 100644 --- a/frontend/src/routes/admin/[[tab]]/+page.svelte +++ b/frontend/src/routes/admin/[[tab]]/+page.svelte @@ -242,7 +242,7 @@ case 'smtp': return t('admin.smtp', 'Email (SMTP)'); case 'jobs': - return t('admin.jobs.tab', 'Jobs'); + return t('admin.jobs.tab', 'Background tasks'); } }); @@ -451,7 +451,7 @@ t( 'admin.storage_backend_audit_triggered', { name }, - 'backend_consistency triggered for `{{name}}` — watch it on the Jobs tab.' + 'backend_consistency triggered for `{{name}}` — watch it on the Background tasks tab.' ), 'success' ); diff --git a/frontend/static/locales/ar.json b/frontend/static/locales/ar.json index faa12827..2aa43de7 100644 --- a/frontend/static/locales/ar.json +++ b/frontend/static/locales/ar.json @@ -81,7 +81,7 @@ "view_monthly": "شهر", "view_yearly": "سنة", "group_by": "التجميع حسب", - "confirm_delete": "Move {{n}} photos to trash?", + "confirm_delete": "نقل {{n}} صورة إلى سلة المهملات؟", "confirm_delete_one": "حذف {{name}}؟", "delete": "حذف الصور", "empty": "لا توجد صور بعد.", @@ -153,35 +153,35 @@ "manage_shares": "إدارة المشاركات", "no_shares": "لا توجد أسهم حتى الآن", "playback_error": "فشل التشغيل", - "private": "Private", - "public": "Public", + "private": "خاص", + "public": "عام", "read_only": "اقرأ فقط", - "remove": "Remove", + "remove": "إزالة", "remove_share": "إزالة المشاركة", "set_cover": "تعيين الغطاء", "share_with_user": "معرف المستخدم أو البريد الإلكتروني", - "toggle_public": "Visibility", + "toggle_public": "الظهور", "track_removed": "تمت إزالة المسار", "prev": "السابق", "add_selected": "إضافة المحدد", "create_playlist_hint": "اكتب اسم قائمة التشغيل لإنشاء واحدة.", "created": "تم إنشاء \"{{name}}\".", "delete_playlist": "حذف قائمة التشغيل", - "deleted": "Deleted “{{name}}”.", + "deleted": "تم حذف \"{{name}}\".", "edit_description": "تحرير الوصف", "empty_playlist": "قائمة التشغيل هذه لا تحتوي على مسارات حتى الآن.", "new_playlist": "قائمة تشغيل جديدة", "no_audio": "لم يتم العثور على ملفات صوتية.", "now_private": "قائمة التشغيل أصبحت الآن خاصة.", "now_public": "قائمة التشغيل أصبحت الآن عامة.", - "pick_or_create": "Existing: {{list}}. Type a name to add or create.", + "pick_or_create": "موجود: {{list}}. اكتب اسمًا للإضافة أو الإنشاء.", "rename_playlist": "إعادة تسمية قائمة التشغيل", "reordered": "تم إعادة ترتيب قائمة التشغيل.", "seek": "يطلب", "selected_count": "{{n}}المختارة", "share_added": "مشترك.", - "track_count": "{{n}} tracks", - "tracks_added": "Added {{n}} track(s)." + "track_count": "{{n}} مقطع", + "tracks_added": "تمت إضافة {{n}} مقطع." }, "actions": { "search": "البحث في الملفات...", @@ -214,10 +214,10 @@ "delete_permanently": "حذف نهائياً", "empty_trash": "تفريغ سلة المهملات", "open_parent_folder": "الانتقال إلى المجلد الأصلي", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "إضافة", + "apply": "تطبيق", + "clear": "مسح", + "remove": "إزالة" }, "user_menu": { "appearance": "المظهر", @@ -265,8 +265,8 @@ "linkNamePlaceholder": "اسم الرابط (اختياري)", "newLink": "رابط جديد", "noExpiry": "لا انتهاء الصلاحية", - "pending": "Pending", - "people": "People", + "pending": "قيد الانتظار", + "people": "الأشخاص", "publicLinks": "الروابط العامة", "role": { "canEdit": "يمكن تحرير", @@ -284,7 +284,7 @@ "folders": "مجلدات", "link_name": "اسم الرابط (اختياري)", "notifyByEmail": "إشعار عبر البريد الإلكتروني", - "revoke": "Remove", + "revoke": "إزالة", "role_label": "الدور", "col_shared_by": "شورك بواسطة", "col_shared": "مشترك", @@ -294,7 +294,7 @@ "changePassword": "تغيير كلمة المرور", "create_link": "إنشاء رابط", "created": "تم إنشاء الرابط العام", - "dialog_title": "Share “{{name}}”", + "dialog_title": "مشاركة \"{{name}}\"", "download_zip": "تحميل الرمز البريدي", "empty_folder": "هذا المجلد فارغ.", "error": "حدث خطأ ما. يرجى المحاولة مرة أخرى.", @@ -309,7 +309,7 @@ "coalesced": "{{n}} أخطرت بالفعل في الآونة الأخيرة.", "rateLimited": "{{n}} وصل إلى الحد الأقصى للسعر - حاول لاحقًا.", "sent": "{{n}} يتم إعلامك عن طريق البريد الإلكتروني.", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} تم تخطيه (بدون بريد إلكتروني / إلغاء الاشتراك)." }, "passwordPrompt": "تعيين كلمة مرور:", "passwordPrompt_clear": "كلمة المرور الجديدة (فارغة للإزالة):", @@ -479,13 +479,13 @@ "batch_delete": "حذف المحدد", "breadcrumb": "مسار التنقل", "cancel_selection": "إلغاء التحديد", - "confirm_batch_delete": "Move {{n}} items to trash?", + "confirm_batch_delete": "نقل {{n}} عنصر إلى سلة المهملات؟", "confirm_delete": "نقل \"{{name}}\" إلى سلة المهملات؟", - "confirm_delete_n": "Delete {{count}} item(s)?", + "confirm_delete_n": "حذف {{count}} عنصر(عناصر)؟", "copied": "منقول", "copy_here": "انسخ هنا", - "copy_n": "Copy {{n}} items", - "copy_title": "Copy “{{name}}”", + "copy_n": "نسخ {{n}} عنصر", + "copy_title": "نسخ \"{{name}}\"", "edit_new_tab": "تحرير في علامة تبويب جديدة", "editor": "محرر المستندات", "empty_title": "هذا المجلد فارغ", @@ -495,7 +495,7 @@ "more_actions": "المزيد من الإجراءات", "move_here": "تحرك هنا", "move_n": "نقل {{n}} العناصر", - "move_title": "Move “{{name}}”", + "move_title": "نقل \"{{name}}\"", "moved": "انتقل", "new_folder_prompt": "اسم المجلد الجديد", "no_home": "لا يوجد مجلد رئيسي متاح.", @@ -513,8 +513,8 @@ "uploaded_skipped": "{{ok}} تم الرفع · {{skipped}} تم تخطيها (ليست ملفات عادية)", "upload_failed": "فشل التحميل", "uploading": "جارٍ التحميل…", - "uploading_file": "Uploading {{name}}…", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_file": "جارٍ رفع {{name}}…", + "uploading_n": "جارٍ رفع {{done}}/{{total}} ملف…" }, "dialogs": { "rename_folder": "إعادة تسمية المجلد", @@ -1082,7 +1082,7 @@ "plugins_delete": "يمسح", "plugins_confirm_delete": "حذف البرنامج المساعد \"{{name}}\"؟ ستتم إزالة ملفاته من الخادم.", "plugins_installing": "جارٍ التثبيت…", - "plugins_installed": "Installed {{name}}.", + "plugins_installed": "تم تثبيت {{name}}.", "plugins_install_missing_bundle": "حدد حزمة البرنامج المساعد (.zip).", "plugins_details": "السجلات والتفاصيل", "plugins_back": "العودة إلى الإضافات", @@ -1105,7 +1105,7 @@ "plugins_logs_col_kind": "عطوف", "plugins_logs_col_invocation": "الاحتجاج", "plugins_logs_col_message": "رسالة", - "plugins_logs_showing": "Showing {{from}}–{{to}} of {{total}}", + "plugins_logs_showing": "عرض {{from}}–{{to}} من {{total}}", "available": "متاح", "confirm_delete_plugin": "حذف البرنامج المساعد {{name}}؟", "disable": "إبطال", @@ -1120,13 +1120,13 @@ "logs_live": "يعيش", "logs_message": "رسالة", "logs_search": "يبحث…", - "logs_showing": "Showing {{from}}–{{to}} of {{total}}", + "logs_showing": "عرض {{from}}–{{to}} من {{total}}", "logs_time": "وقت", "mig_eta": "~ {{min}} دقيقة المتبقية", "mig_failed": "{{n}} النقط الفاشلة", "mig_start": "يبدأ", "mig_verify": "التحقق من النزاهة", - "mig_verify_mismatch": "{{n}} size mismatches", + "mig_verify_mismatch": "{{n}} تباين في الحجم", "mig_verify_missing": "{{n}}مفقود", "mig_verify_summary": "- تم فحص النقط، إجمالي في قاعدة البيانات", "migration": "ترحيل التخزين", @@ -1166,7 +1166,6 @@ "storage_size": "مخزنة", "storage_test": "امتحان", "storage_backend_audit": "اتساق الخلفية", - "storage_backend_audit_triggered": "تم تشغيل backend_consistency لـ `{{name}}` - شاهده في علامة التبويب \"الوظائف\".", "time_day_ago": "{{n}} د منذ", "time_hour_ago": "{{n}} منذ ح", "time_just_now": "الآن", @@ -1181,9 +1180,6 @@ "gen_key": "توليد المفتاح", "gen_key_warning": "قم بتخزين هذا المفتاح بشكل آمن. في حالة فقدانها، سيتم فقدان البيانات المشفرة بشكل لا يمكن استرجاعه.", "jobs": { - "tab": "وظائف", - "title": "وظائف", - "hint": "هذا القسم خاص بالوظائف الداخلية: الدورية + الوظائف حسب الطلب. تعتبر عمليات التحقق من الاتساق آمنة للتشغيل في أي وقت، فهي للقراءة فقط.", "run_all_consistency": "قم بتشغيل كافة اختبارات الاتساق", "run_deep": "تشغيل عميق", "run_deep_hint": "يعمل أيضًا على تشغيل متغيرات بطيئة (إعادة تجزئة النقطة، واكتشاف bitrot).", @@ -1215,7 +1211,6 @@ "findings_title": "النتائج", "no_runs": "لا يوجد أشواط حتى الآن.", "no_findings": "لا توجد نتائج – تشغيل نظيف.", - "none_registered": "لم يتم تسجيل أي وظائف.", "on_demand": "عند الطلب", "every_h": "كل ح", "every_min": "كل دقيقة", @@ -1229,7 +1224,6 @@ "notices_present_tooltip": "نتائج إعلامية - لا يلزم اتخاذ أي إجراء. قم بالتوسيع للحصول على التفاصيل.", "purge": "تطهير الأشواط القديمة", "purge_hint": "احذف محفوظات التشغيل المكتملة والفاشلة الأقدم من فترة الاحتفاظ المحددة. تنخفض النتائج مع تشغيل الوالدين. يتم دائمًا الحفاظ على عمليات التشغيل غير الطرفية.", - "purge_title": "تطهير التاريخ الوظيفي القديم", "purge_body": "احذف محفوظات التشغيل المكتملة والفاشلة الأقدم من عدد الأيام المحدد. تنخفض النتائج مع تشغيل الوالدين. يتم دائمًا الاحتفاظ بعمليات التشغيل غير الطرفية (قيد التشغيل، أو الإيقاف المؤقت، أو طلب الإلغاء).", "purge_days_label": "الاحتفاظ (بالأيام)", "purge_confirm": "تطهير", @@ -1245,11 +1239,16 @@ "cancel_requested": "تم طلب الإلغاء — سيتوقف {{name}} مؤقتًا عند الحدود الآمنة التالية", "cancel_noop": "لا يوجد شيء يمكن إلغاؤه — {{name}} لا يعمل", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — تقريبي، وكيل الواجهة الخلفية)", + "tab": "المهام الخلفية", + "title": "المهام الخلفية", + "hint": "يتعلق هذا القسم بالمهام الخلفية الداخلية: المهام الدورية والمهام حسب الطلب. عمليات فحص الاتساق آمنة للتشغيل في أي وقت — هي للقراءة فقط.", + "none_registered": "لا توجد مهام خلفية مسجلة.", + "purge_title": "مسح سجل المهام القديمة" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "اختبار / اكتشاف", + "reextract_done": "{{processed}}/{{total}} تمت معالجته · {{failed}} فشل", "sessions": { "filter_user": "المستخدم (UUID)", "include_revoked": "تضمين الملغاة / المنتهية", @@ -1281,7 +1280,8 @@ "device": "جهاز", "unknown": "غير معروف" } - } + }, + "storage_backend_audit_triggered": "backend_consistency تم تشغيله لـ `{{name}}` — تابعه في علامة تبويب المهام الخلفية." }, "profile": { "page_title": "الملف الشخصي", @@ -1359,14 +1359,14 @@ "error_revoke": "فشل الإلغاء", "edit_photo": "تحرير الصورة", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", + "photo_tab_upload": "رفع", "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_url_hint": "https://، http://، أو data:image/…;base64,… مقبول", "photo_choose_file": "اختر صورة (PNG، JPEG، WebP)", "photo_resize_note": "يتم تغيير حجم الصور الأكبر من 512 × 512 بكسل تلقائيًا.", "photo_save": "حفظ الصورة", "photo_remove": "إزالة الصورة", - "photo_cancel": "Cancel", + "photo_cancel": "إلغاء", "photo_save_failed": "فشل حفظ الصورة", "photo_no_file": "الرجاء تحديد ملف أولاً", "photo_managed_by_oidc": "الصورة يديرها موفر الهوية الخاص بك.", @@ -1394,7 +1394,7 @@ "uploading": "جارٍ الرفع...", "files": "ملفات", "complete": "{{count}} / {{total}} تم الرفع", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} ملف" }, "storage_quota_exceeded": "تجاوز حصة التخزين", "sharedwithme": { @@ -1439,7 +1439,7 @@ "create_dialog_title": "مجموعة جديدة", "edit_dialog_title": "إعادة تسمية المجموعة", "name_label": "الاسم", - "name_placeholder": "engineering", + "name_placeholder": "هندسي", "description_label": "الوصف (اختياري)", "members_section": "الأعضاء", "add_member_placeholder": "إضافة مستخدم أو مجموعة…", @@ -1495,12 +1495,12 @@ "passwordLinks": "الروابط المحمية بكلمة مرور" }, "sort": { - "asc": "ascending", - "desc": "descending", + "asc": "تصاعدي", + "desc": "تنازلي", "direction": "فرز الاتجاه" }, "notif": { - "errorTitle": "Error", + "errorTitle": "خطأ", "searchError": "حدث خطأ أثناء إجراء البحث", "cleanupCompleted": "اكتملت عملية التنظيف", "cleanupCompletedBody": "تم مسح سجل الملفات الأخيرة", @@ -1584,7 +1584,7 @@ "common": { "add": "إضافة", "cancel": "إلغاء", - "clear": "Clear", + "clear": "مسح", "close": "إغلاق", "confirm": "تأكيد", "copy": "نسخ", @@ -1596,7 +1596,7 @@ "next": "التالي", "no": "لا", "previous": "السابق", - "remove": "Remove", + "remove": "إزالة", "rename": "إعادة التسمية", "save": "حفظ", "search": "بحث", diff --git a/frontend/static/locales/de.json b/frontend/static/locales/de.json index fe996fda..1ecc3151 100644 --- a/frontend/static/locales/de.json +++ b/frontend/static/locales/de.json @@ -153,14 +153,14 @@ "manage_shares": "Freigaben verwalten", "no_shares": "Noch keine Aktien", "playback_error": "Die Wiedergabe ist fehlgeschlagen", - "private": "Private", - "public": "Public", + "private": "Privat", + "public": "Öffentlich", "read_only": "Nur lesen", - "remove": "Remove", + "remove": "Entfernen", "remove_share": "Freigabe entfernen", "set_cover": "Abdeckung einstellen", "share_with_user": "Benutzer-ID oder E-Mail", - "toggle_public": "Visibility", + "toggle_public": "Sichtbarkeit", "track_removed": "Spur entfernt", "prev": "Zurück", "add_selected": "Ausgewählte hinzufügen", @@ -214,10 +214,10 @@ "delete_permanently": "Endgültig löschen", "empty_trash": "Papierkorb leeren", "open_parent_folder": "Zum übergeordneten Ordner", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "Hinzufügen", + "apply": "Anwenden", + "clear": "Löschen", + "remove": "Entfernen" }, "user_menu": { "appearance": "Erscheinungsbild", @@ -265,8 +265,8 @@ "linkNamePlaceholder": "Linkname (optional)", "newLink": "Neuer Link", "noExpiry": "Kein Ablauf", - "pending": "Pending", - "people": "People", + "pending": "Ausstehend", + "people": "Personen", "publicLinks": "Öffentliche Links", "role": { "canEdit": "Kann bearbeiten", @@ -284,7 +284,7 @@ "folders": "Ordner", "link_name": "Linkname (optional)", "notifyByEmail": "Per E-Mail benachrichtigen", - "revoke": "Remove", + "revoke": "Entfernen", "role_label": "Rolle", "col_shared_by": "Geteilt von", "col_shared": "Geteilt", @@ -309,7 +309,7 @@ "coalesced": "{{n}} bereits vor Kurzem benachrichtigt.", "rateLimited": "{{n}} das Ratenlimit erreicht – versuchen Sie es später.", "sent": "{{n}} per E-Mail benachrichtigt.", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} übersprungen (keine E-Mail / abgemeldet)." }, "passwordPrompt": "Legen Sie ein Passwort fest:", "passwordPrompt_clear": "Neues Passwort (zum Entfernen leer):", @@ -514,7 +514,7 @@ "upload_failed": "Der Upload ist fehlgeschlagen", "uploading": "Hochladen…", "uploading_file": "Hochladen {{name}}…", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_n": "{{done}}/{{total}} Dateien werden hochgeladen…" }, "dialogs": { "rename_folder": "Ordner umbenennen", @@ -859,7 +859,7 @@ "callback_url": "Callback-URL", "callback_url_hint": "(bei IdP registrieren)", "advanced_settings": "Erweiterte Einstellungen", - "scopes": "Scopes", + "scopes": "Bereiche", "auto_provision": "Benutzer bei erstem Login automatisch anlegen", "admin_groups": "Admin-Gruppen", "admin_groups_hint": "Kommagetrennte OIDC-Gruppennamen für Admin-Rolle", @@ -978,7 +978,7 @@ "oidc_client_id": "Client-ID", "oidc_disable_pw": "Passwort-Login deaktivieren (nur OIDC)", "oidc_issuer": "Aussteller-URL", - "oidc_scopes": "Scopes", + "oidc_scopes": "Bereiche", "password": "Passwort", "quotas": "Kontingente", "reset_pw_for": "Neues Passwort für", @@ -1124,7 +1124,7 @@ "logs_time": "Zeit", "mig_eta": "~{{min}} Min. verbleibend", "mig_failed": "{{n}} fehlgeschlagene Blobs", - "mig_start": "Start", + "mig_start": "Starten", "mig_verify": "Überprüfen Sie die Integrität", "mig_verify_mismatch": "{{n}} Größenunterschiede", "mig_verify_missing": "{{n}} fehlt", @@ -1166,7 +1166,6 @@ "storage_size": "Gelagert", "storage_test": "Prüfen", "storage_backend_audit": "Backend-Konsistenz", - "storage_backend_audit_triggered": "backend_consistency wurde für „{{name}}“ ausgelöst – sehen Sie es sich auf der Registerkarte „Jobs“ an.", "time_day_ago": "Vor {{n}} d", "time_hour_ago": "Vor {{n}} h", "time_just_now": "soeben", @@ -1181,9 +1180,6 @@ "gen_key": "Schlüssel generieren", "gen_key_warning": "Bewahren Sie diesen Schlüssel sicher auf. Bei Verlust sind die verschlüsselten Daten unwiederbringlich verloren.", "jobs": { - "tab": "Jobs", - "title": "Jobs", - "hint": "Dieser Abschnitt betrifft interne Jobs: periodische + On-Demand-Jobs. Konsistenzprüfungen können jederzeit sicher ausgeführt werden – sie sind schreibgeschützt.", "run_all_consistency": "Führen Sie alle Konsistenzprüfungen durch", "run_deep": "Lauf tief", "run_deep_hint": "Läuft auch langsame Varianten (Blob-Re-Hash, Bitrot-Erkennung).", @@ -1215,7 +1211,6 @@ "findings_title": "Erkenntnisse", "no_runs": "Noch keine Läufe.", "no_findings": "Keine Befunde – sauberer Lauf.", - "none_registered": "Keine Jobs registriert.", "on_demand": "auf Anfrage", "every_h": "alle {{n}} h", "every_min": "alle {{n}} Min", @@ -1229,7 +1224,6 @@ "notices_present_tooltip": "Informative Erkenntnisse – keine Maßnahmen erforderlich. Für Details erweitern.", "purge": "Alte Läufe löschen", "purge_hint": "Löschen Sie den Verlauf abgeschlossener und fehlgeschlagener Ausführungen, die älter als das ausgewählte Aufbewahrungsfenster sind. Ergebnisse fallen mit ihren übergeordneten Läufen ab. Nicht-terminale Läufe bleiben immer erhalten.", - "purge_title": "Löschen Sie den alten Jobverlauf", "purge_body": "Löschen Sie den Verlauf abgeschlossener und fehlgeschlagener Ausführungen, die älter als die ausgewählte Anzahl von Tagen sind. Ergebnisse fallen mit ihren übergeordneten Läufen ab. Nicht-terminale Ausführungen (laufend, angehalten, Abbruch angefordert) bleiben immer erhalten.", "purge_days_label": "Aufbewahrung (Tage)", "purge_confirm": "Säubern", @@ -1245,11 +1239,16 @@ "cancel_requested": "Abbrechen angefordert – {{name}} pausiert an der nächsten sicheren Grenze", "cancel_noop": "Es gibt nichts abzubrechen – {{name}} läuft nicht", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — ungefähr, Backend-Proxy)", + "tab": "Hintergrundaufgaben", + "title": "Hintergrundaufgaben", + "hint": "Dieser Abschnitt betrifft interne Hintergrundaufgaben: regelmäßige und bedarfsgesteuerte Aufgaben. Konsistenzprüfungen können jederzeit sicher ausgeführt werden — sie sind schreibgeschützt.", + "none_registered": "Keine Hintergrundaufgaben registriert.", + "purge_title": "Alten Aufgabenverlauf löschen" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "Testen / entdecken", + "reextract_done": "{{processed}}/{{total}} verarbeitet · {{failed}} fehlgeschlagen", "sessions": { "filter_user": "Benutzer (UUID)", "include_revoked": "Widerrufene / abgelaufene einschließen", @@ -1281,7 +1280,8 @@ "device": "Gerät", "unknown": "Unbekannt" } - } + }, + "storage_backend_audit_triggered": "backend_consistency für `{{name}}` ausgelöst — verfolgen Sie es im Tab Hintergrundaufgaben." }, "profile": { "page_title": "Profil", @@ -1359,14 +1359,14 @@ "error_revoke": "Widerrufen fehlgeschlagen", "edit_photo": "Foto bearbeiten", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", - "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_tab_upload": "Hochladen", + "photo_url_placeholder": "https://beispiel.de/foto.jpg", + "photo_url_hint": "https://, http:// oder data:image/…;base64,… akzeptiert", "photo_choose_file": "Wählen Sie ein Foto (PNG, JPEG, WebP)", "photo_resize_note": "Bilder, die größer als 512 × 512 Pixel sind, werden automatisch in der Größe angepasst.", "photo_save": "Foto speichern", "photo_remove": "Foto entfernen", - "photo_cancel": "Cancel", + "photo_cancel": "Abbrechen", "photo_save_failed": "Foto konnte nicht gespeichert werden", "photo_no_file": "Bitte wählen Sie zunächst eine Datei aus", "photo_managed_by_oidc": "Von Ihrem Identitätsanbieter verwaltetes Foto.", @@ -1394,7 +1394,7 @@ "uploading": "Wird hochgeladen...", "files": "Dateien", "complete": "{{count}} / {{total}} hochgeladen", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} Dateien" }, "storage_quota_exceeded": "Speicherplatz erschöpft", "sharedwithme": { @@ -1439,7 +1439,7 @@ "create_dialog_title": "Neue Gruppe", "edit_dialog_title": "Gruppe umbenennen", "name_label": "Name", - "name_placeholder": "engineering", + "name_placeholder": "Engineering-Notation", "description_label": "Beschreibung (optional)", "members_section": "Mitglieder", "add_member_placeholder": "Benutzer oder Gruppe hinzufügen…", @@ -1500,7 +1500,7 @@ "direction": "Sortierrichtung" }, "notif": { - "errorTitle": "Error", + "errorTitle": "Fehler", "searchError": "Fehler beim Durchführen der Suche", "cleanupCompleted": "Bereinigung abgeschlossen", "cleanupCompletedBody": "Der Verlauf der letzten Dateien wurde gelöscht", @@ -1584,7 +1584,7 @@ "common": { "add": "Hinzufügen", "cancel": "Abbrechen", - "clear": "Clear", + "clear": "Löschen", "close": "Schließen", "confirm": "Bestätigen", "copy": "Kopieren", @@ -1596,7 +1596,7 @@ "next": "Weiter", "no": "Nein", "previous": "Zurück", - "remove": "Remove", + "remove": "Entfernen", "rename": "Umbenennen", "save": "Speichern", "search": "Suchen", diff --git a/frontend/static/locales/en.json b/frontend/static/locales/en.json index 38e40fbc..5df18aac 100644 --- a/frontend/static/locales/en.json +++ b/frontend/static/locales/en.json @@ -1170,7 +1170,7 @@ "storage_tab": "Storage", "storage_test": "Test", "storage_backend_audit": "Backend consistency", - "storage_backend_audit_triggered": "backend_consistency triggered for `{{name}}` — watch it on the Jobs tab.", + "storage_backend_audit_triggered": "backend_consistency triggered for `{{name}}` — watch it on the Background tasks tab.", "time_day_ago": "{{n}} d ago", "time_hour_ago": "{{n}} h ago", "time_just_now": "just now", @@ -1251,9 +1251,9 @@ "delete_user_confirm_hint": "To confirm, type the account email below: {{email}}", "deleting": "Deleting…", "jobs": { - "tab": "Jobs", - "title": "Jobs", - "hint": "This section concerns internal jobs: periodic + on-demand jobs. Consistency checks are safe to run at any time — they are read-only.", + "tab": "Background tasks", + "title": "Background tasks", + "hint": "This section concerns internal background tasks: periodic + on-demand tasks. Consistency checks are safe to run at any time — they are read-only.", "run_all_consistency": "Run all consistency checks", "run_deep": "Run deep", "run_deep_hint": "Also runs slow variants (blob re-hash, bitrot detection).", @@ -1287,7 +1287,7 @@ "findings_title": "Findings", "no_runs": "No runs yet.", "no_findings": "No findings — clean run.", - "none_registered": "No jobs registered.", + "none_registered": "No background tasks registered.", "on_demand": "on-demand", "every_h": "every {{n}} h", "every_min": "every {{n}} min", @@ -1301,7 +1301,7 @@ "notices_present_tooltip": "Informational findings — no action required. Expand for detail.", "purge": "Purge old runs", "purge_hint": "Delete completed and failed run history older than the chosen retention window. Findings drop with their parent runs. Non-terminal runs are always preserved.", - "purge_title": "Purge old job history", + "purge_title": "Purge old task history", "purge_body": "Delete completed and failed run history older than the chosen number of days. Findings drop with their parent runs. Non-terminal runs (running, paused, cancel-requested) are always preserved.", "purge_days_label": "Retention (days)", "purge_confirm": "Purge", @@ -1824,4 +1824,4 @@ "wrong_drop_zone_msg": "Uploads only work in Files — open the Files section and drop there.", "wrong_drop_zone_action": "Go to Files" } -} \ No newline at end of file +} diff --git a/frontend/static/locales/es.json b/frontend/static/locales/es.json index cdf2da68..4a624745 100644 --- a/frontend/static/locales/es.json +++ b/frontend/static/locales/es.json @@ -256,7 +256,7 @@ "coalesced": "{{n}} ya notificado recientemente.", "rateLimited": "{{n}} alcance el límite de velocidad; inténtelo más tarde.", "sent": "{{n}} notificado por correo electrónico.", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} omitidos (sin correo / dados de baja)." }, "passwordPrompt": "Establecer una contraseña:", "passwordPrompt_clear": "Nueva contraseña (en blanco para eliminar):", @@ -430,7 +430,7 @@ "file_types": { "document": "Documento", "image": "Imagen", - "video": "Video", + "video": "Vídeo", "audio": "Audio", "pdf": "PDF", "text": "Texto", @@ -514,7 +514,7 @@ "uploaded": "Subida completa", "uploading": "Subiendo…", "uploading_file": "Subiendo {{name}}…", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_n": "Subiendo {{done}}/{{total}} archivos…" }, "dialogs": { "rename_folder": "Renombrar carpeta", @@ -642,7 +642,7 @@ "admin_setup": "¿Primera vez?", "setup": "Configurar administrador", "register_title": "Crear cuenta", - "email": "Email", + "email": "Correo", "email_placeholder": "Ingresa tu email", "confirm_password": "Confirmar contraseña", "confirm_password_placeholder": "Confirma tu contraseña", @@ -859,7 +859,7 @@ "callback_url": "URL de Callback", "callback_url_hint": "(registrar en tu IdP)", "advanced_settings": "Configuración Avanzada", - "scopes": "Scopes", + "scopes": "Ámbitos", "auto_provision": "Auto-provisionar usuarios en el primer inicio de sesión", "admin_groups": "Grupos de Admin", "admin_groups_hint": "Nombres de grupos OIDC separados por comas que mapean al rol de admin", @@ -978,7 +978,7 @@ "oidc_client_id": "ID de cliente", "oidc_disable_pw": "Desactivar inicio de sesión con contraseña (solo OIDC)", "oidc_issuer": "URL del Emisor", - "oidc_scopes": "Scopes", + "oidc_scopes": "Ámbitos", "password": "Contraseña", "quotas": "Cuotas", "reset_pw_for": "Nueva contraseña para", @@ -1176,15 +1176,11 @@ "storage_size": "almacenado", "storage_test": "Prueba", "storage_backend_audit": "Consistencia del backend", - "storage_backend_audit_triggered": "backend_consistency se activó para `{{name}}`: mírelo en la pestaña Trabajos.", "time_day_ago": "Hace {{n}} d", "time_hour_ago": "Hace {{n}} h", "time_just_now": "En este momento", "unchanged": "Déjelo en blanco para mantenerse actualizado", "jobs": { - "tab": "Empleos", - "title": "Empleos", - "hint": "Esta sección se refiere a trabajos internos: trabajos periódicos + bajo demanda. Las comprobaciones de coherencia se pueden ejecutar de forma segura en cualquier momento: son de solo lectura.", "run_all_consistency": "Ejecute todas las comprobaciones de coherencia", "run_deep": "Corre profundo", "run_deep_hint": "También ejecuta variantes lentas (repetición de blobs, detección de bitrot).", @@ -1216,7 +1212,6 @@ "findings_title": "Recomendaciones", "no_runs": "Aún no hay carreras.", "no_findings": "No hay resultados: ejecución limpia.", - "none_registered": "No hay empleos registrados.", "on_demand": "Bajo demanda", "every_h": "cada {{n}} horas", "every_min": "cada {{n}} minutos", @@ -1230,7 +1225,6 @@ "notices_present_tooltip": "Hallazgos informativos: no se requiere ninguna acción. Ampliar para más detalles.", "purge": "Purgar ejecuciones antiguas", "purge_hint": "Elimine el historial de ejecuciones completadas y fallidas anteriores a la ventana de retención elegida. Los hallazgos disminuyen con las carreras de sus padres. Los tramos no terminales siempre se conservan.", - "purge_title": "Limpiar el historial de trabajo antiguo", "purge_body": "Elimine el historial de ejecuciones completadas y fallidas con una antigüedad superior al número de días elegido. Los hallazgos disminuyen con las carreras de sus padres. Las ejecuciones no terminales (en ejecución, en pausa, con solicitud de cancelación) siempre se conservan.", "purge_days_label": "Retención (días)", "purge_confirm": "Purga", @@ -1246,10 +1240,15 @@ "cancel_requested": "Cancelación solicitada: {{name}} se detendrá en el siguiente límite seguro", "cancel_noop": "No hay nada que cancelar: {{name}} no se está ejecutando", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — aproximado, proxy backend)", + "tab": "Tareas en segundo plano", + "title": "Tareas en segundo plano", + "hint": "Esta sección concierne a las tareas internas en segundo plano: tareas periódicas y bajo demanda. Las comprobaciones de consistencia son seguras de ejecutar en cualquier momento — son de solo lectura.", + "none_registered": "No hay tareas en segundo plano registradas.", + "purge_title": "Purgar historial de tareas antiguas" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", + "oidc_discover": "Probar / descubrir", "sessions": { "filter_user": "Usuario (UUID)", "include_revoked": "Incluir revocadas / caducadas", @@ -1281,7 +1280,8 @@ "device": "Dispositivo", "unknown": "Desconocido" } - } + }, + "storage_backend_audit_triggered": "backend_consistency activado para `{{name}}` — sígalo en la pestaña Tareas en segundo plano." }, "profile": { "page_title": "Perfil", @@ -1359,14 +1359,14 @@ "error_revoke": "Error al revocar contraseña", "edit_photo": "Editar foto", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", - "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_tab_upload": "Subir", + "photo_url_placeholder": "https://ejemplo.com/foto.jpg", + "photo_url_hint": "https://, http:// o data:image/…;base64,… aceptado", "photo_choose_file": "Elige una foto (PNG, JPEG, WebP)", "photo_resize_note": "Las imágenes de más de 512 × 512 px cambian de tamaño automáticamente.", "photo_save": "guardar foto", "photo_remove": "Quitar foto", - "photo_cancel": "Cancel", + "photo_cancel": "Cancelar", "photo_save_failed": "No se pudo guardar la foto", "photo_no_file": "Por favor seleccione un archivo primero", "photo_managed_by_oidc": "Foto gestionada por su proveedor de identidad.", @@ -1394,7 +1394,7 @@ "uploading": "Subiendo...", "files": "archivos", "complete": "{{count}} / {{total}} subidos", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} archivos" }, "storage_quota_exceeded": "Cuota de almacenamiento superada", "sharedwithme": { diff --git a/frontend/static/locales/fa.json b/frontend/static/locales/fa.json index 370618b1..5b65ae99 100644 --- a/frontend/static/locales/fa.json +++ b/frontend/static/locales/fa.json @@ -153,14 +153,14 @@ "manage_shares": "مدیریت سهام", "no_shares": "هنوز هیچ سهمی وجود ندارد", "playback_error": "پخش نشد", - "private": "Private", - "public": "Public", + "private": "خصوصی", + "public": "عمومی", "read_only": "فقط بخوانید", - "remove": "Remove", + "remove": "حذف", "remove_share": "حذف اشتراک", "set_cover": "پوشش را تنظیم کنید", "share_with_user": "شناسه کاربری یا ایمیل", - "toggle_public": "Visibility", + "toggle_public": "دیده‌شدن", "track_removed": "آهنگ حذف شد", "prev": "قبلی", "add_selected": "انتخاب شده را اضافه کنید", @@ -214,10 +214,10 @@ "delete_permanently": "برای همیشه حذف کنید", "empty_trash": "زباله ها را خالی کنید", "open_parent_folder": "رفتن به پوشه والد", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "افزودن", + "apply": "اعمال", + "clear": "پاک کردن", + "remove": "حذف" }, "user_menu": { "appearance": "ظاهر", @@ -265,8 +265,8 @@ "linkNamePlaceholder": "نام پیوند (اختیاری)", "newLink": "لینک جدید", "noExpiry": "بدون انقضا", - "pending": "Pending", - "people": "People", + "pending": "در انتظار", + "people": "افراد", "publicLinks": "پیوندهای عمومی", "role": { "canEdit": "می تواند ویرایش کند", @@ -284,7 +284,7 @@ "folders": "پوشه‌ها", "link_name": "نام پیوند (اختیاری)", "notifyByEmail": "اطلاع‌رسانی از طریق ایمیل", - "revoke": "Remove", + "revoke": "حذف", "role_label": "نقش", "col_shared_by": "به اشتراک گذاشته شده توسط", "col_shared": "به اشتراک گذاشته شده", @@ -309,7 +309,7 @@ "coalesced": "{{n}} اخیراً اطلاع رسانی شده است.", "rateLimited": "{{n}} به حد مجاز ضربه بزنید — بعداً امتحان کنید.", "sent": "{{n}} از طریق ایمیل اطلاع رسانی می شود.", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} رد شد (بدون ایمیل / انصراف)." }, "passwordPrompt": "تعیین رمز عبور:", "passwordPrompt_clear": "رمز عبور جدید (برای حذف خالی):", @@ -513,8 +513,8 @@ "uploaded_skipped": "{{ok}} آپلود شده · {{skipped}} رد شده (فایل های معمولی نیستند)", "upload_failed": "آپلود انجام نشد", "uploading": "در حال آپلود…", - "uploading_file": "Uploading {{name}}…", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_file": "در حال بارگذاری {{name}}…", + "uploading_n": "در حال بارگذاری {{done}}/{{total}} فایل…" }, "dialogs": { "rename_folder": "تغییر نام پوشه", @@ -1148,7 +1148,6 @@ "storage_size": "ذخیره شده", "storage_test": "تست کنید", "storage_backend_audit": "سازگاری باطن", - "storage_backend_audit_triggered": "backend_consistency برای «{{name}}» فعال شد — آن را در برگه Jobs تماشا کنید.", "time_day_ago": "{{n}} روز پیش", "time_hour_ago": "{{n}} ساعت پیش", "time_just_now": "همین الان", @@ -1163,9 +1162,6 @@ "gen_key": "کلید تولید کنید", "gen_key_warning": "این کلید را به صورت ایمن ذخیره کنید. اگر از بین برود، داده های رمزگذاری شده به طور غیرقابل جبرانی از بین می روند.", "jobs": { - "tab": "مشاغل", - "title": "مشاغل", - "hint": "این بخش مربوط به مشاغل داخلی است: مشاغل دوره ای + درخواستی. بررسی های سازگاری در هر زمان ایمن هستند - آنها فقط خواندنی هستند.", "run_all_consistency": "تمام بررسی های سازگاری را اجرا کنید", "run_deep": "عمیق بدو", "run_deep_hint": "همچنین انواع آهسته را اجرا می کند (هش مجدد حباب، تشخیص بیتوت).", @@ -1196,11 +1192,10 @@ "findings_title": "یافته ها", "no_runs": "هنوز اجرا نشده است.", "no_findings": "بدون یافته - اجرا تمیز.", - "none_registered": "هیچ شغلی ثبت نشده است", "on_demand": "بر حسب تقاضا", "every_h": "هر {{n}} ساعت", "every_min": "هر {{n}} دقیقه", - "every_sec": "every {{n}} s", + "every_sec": "هر {{n}} ثانیه", "outcome_ok": "باشه", "outcome_err": "اشتباه کن", "outcome_issues": "مسائل", @@ -1210,7 +1205,6 @@ "notices_present_tooltip": "یافته های اطلاعاتی - هیچ اقدامی لازم نیست. برای جزئیات بزرگ کنید.", "purge": "اجراهای قدیمی را پاک کنید", "purge_hint": "سابقه اجرای کامل و ناموفق قدیمی‌تر از پنجره حفظ انتخابی را حذف کنید. یافته ها با اجراهای والدینشان کاهش می یابد. اجراهای غیر ترمینال همیشه حفظ می شوند.", - "purge_title": "تاریخچه شغلی قدیمی را پاک کنید", "purge_body": "سابقه اجرای کامل و ناموفق قدیمی‌تر از تعداد روزهای انتخابی را حذف کنید. یافته ها با اجراهای والدینشان کاهش می یابد. اجراهای غیر پایانی (در حال اجرا، توقف، لغو درخواست) همیشه حفظ می شوند.", "purge_days_label": "نگهداری (روزها)", "purge_confirm": "پاکسازی", @@ -1227,11 +1221,16 @@ "cancel_noop": "چیزی برای لغو وجود ندارد - {{name}} در حال اجرا نیست", "progress_scanned_only": "{{n}} اسکن شده", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — تقریبی، پروکسی بک‌اند)", + "tab": "کارهای پس‌زمینه", + "title": "کارهای پس‌زمینه", + "hint": "این بخش به کارهای داخلی پس‌زمینه مربوط می‌شود: کارهای دوره‌ای و بر اساس تقاضا. بررسی‌های سازگاری در هر زمان به‌طور ایمن قابل اجرا هستند — فقط خواندنی هستند.", + "none_registered": "هیچ کار پس‌زمینه‌ای ثبت نشده است.", + "purge_title": "پاک کردن تاریخچه کارهای قدیمی" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "آزمایش / کشف", + "reextract_done": "{{processed}}/{{total}} پردازش شد · {{failed}} ناموفق", "sessions": { "filter_user": "کاربر (UUID)", "include_revoked": "شامل لغو‌شده‌ها / منقضی‌شده‌ها", @@ -1263,7 +1262,8 @@ "device": "دستگاه", "unknown": "ناشناخته" } - } + }, + "storage_backend_audit_triggered": "backend_consistency برای `{{name}}` راه‌اندازی شد — در تب کارهای پس‌زمینه پیگیری کنید." }, "profile": { "page_title": "پروفایل", @@ -1341,14 +1341,14 @@ "error_revoke": "ابطال ناموفق بود", "edit_photo": "ویرایش عکس", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", + "photo_tab_upload": "بارگذاری", "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_url_hint": "https://، http:// یا data:image/…;base64,… پذیرفته می‌شود", "photo_choose_file": "انتخاب یک عکس (PNG، JPEG، WebP)", "photo_resize_note": "اندازه تصاویر بزرگتر از 512 × 512 پیکسل به طور خودکار تغییر می کند.", "photo_save": "ذخیره عکس", "photo_remove": "حذف عکس", - "photo_cancel": "Cancel", + "photo_cancel": "لغو", "photo_save_failed": "عکس ذخیره نشد", "photo_no_file": "لطفا ابتدا یک فایل را انتخاب کنید", "photo_managed_by_oidc": "عکس مدیریت شده توسط ارائه دهنده هویت شما.", @@ -1363,7 +1363,7 @@ "sso_connect_title": "اتصال Single Sign-On", "sso_connect_description": "حساب خود را به {{provider}} پیوند دهید تا بتوانید به جای رمز عبور خود با SSO وارد شوید.", "sso_connect_button": "با {{provider}} ارتباط برقرار کنید", - "sso_disconnect_title": "Single Sign-On", + "sso_disconnect_title": "ورود یکپارچه", "sso_disconnect_description": "حساب شما به {{provider}} متصل است. برای قطع ارتباط از این پس باید با رمز عبور خود وارد سیستم شوید.", "sso_disconnect_button": "اتصال Single Sign-On را قطع کنید", "sso_disconnect_confirm_title": "اتصال Single Sign-On قطع شود؟", @@ -1394,7 +1394,7 @@ "uploading": "در حال آپلود...", "files": "فایل‌ها", "complete": "{{count}} / {{total}} آپلود شد", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} فایل" }, "storage_quota_exceeded": "سهمیه فضای ذخیره‌سازی تجاوز کرده است", "sharedwithme": { @@ -1439,7 +1439,7 @@ "create_dialog_title": "گروه جدید", "edit_dialog_title": "تغییر نام گروه", "name_label": "نام", - "name_placeholder": "engineering", + "name_placeholder": "مهندسی", "description_label": "توضیحات (اختیاری)", "members_section": "اعضا", "add_member_placeholder": "افزودن کاربر یا گروه…", @@ -1495,12 +1495,12 @@ "passwordLinks": "پیوندهای محافظت شده با رمز عبور" }, "sort": { - "asc": "ascending", - "desc": "descending", + "asc": "صعودی", + "desc": "نزولی", "direction": "جهت مرتب سازی" }, "notif": { - "errorTitle": "Error", + "errorTitle": "خطا", "searchError": "خطا در انجام جستجو", "cleanupCompleted": "پاکسازی تکمیل شد", "cleanupCompletedBody": "سابقه فایل های اخیر پاک شده است", @@ -1584,7 +1584,7 @@ "common": { "add": "افزودن", "cancel": "لغو", - "clear": "Clear", + "clear": "پاک کردن", "close": "بستن", "confirm": "تأیید", "copy": "رونوشت", @@ -1596,7 +1596,7 @@ "next": "بعدی", "no": "خیر", "previous": "قبلی", - "remove": "Remove", + "remove": "حذف", "rename": "تغییر نام", "save": "ذخیره", "search": "جست‌و‌جو", diff --git a/frontend/static/locales/fr.json b/frontend/static/locales/fr.json index 2bd0761d..e68627ca 100644 --- a/frontend/static/locales/fr.json +++ b/frontend/static/locales/fr.json @@ -98,7 +98,7 @@ }, "music": { "create_playlist": "Créer une Playlist", - "playlists": "Playlists", + "playlists": "Listes de lecture", "no_playlists": "Aucune playlist", "select_playlist": "Sélectionnez une playlist", "select_hint": "Choisissez une playlist dans la barre latérale ou créez-en une nouvelle", @@ -153,14 +153,14 @@ "manage_shares": "Gérer les partages", "no_shares": "Pas de partage pour l'instant", "playback_error": "La lecture a échoué", - "private": "Private", + "private": "Privé", "public": "Public", "read_only": "Lecture seule", - "remove": "Remove", + "remove": "Supprimer", "remove_share": "Supprimer le partage", "set_cover": "Définir la couverture", "share_with_user": "Identifiant d'utilisateur ou email", - "toggle_public": "Visibility", + "toggle_public": "Visibilité", "track_removed": "Piste supprimée", "prev": "Précédent", "add_selected": "Ajouter la sélection", @@ -214,10 +214,10 @@ "delete_permanently": "Supprimer définitivement", "empty_trash": "Vider la corbeille", "open_parent_folder": "Aller au dossier parent", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "Ajouter", + "apply": "Appliquer", + "clear": "Effacer", + "remove": "Supprimer" }, "user_menu": { "appearance": "Apparence", @@ -265,8 +265,8 @@ "linkNamePlaceholder": "Nom du lien (facultatif)", "newLink": "Nouveau lien", "noExpiry": "Pas d'expiration", - "pending": "Pending", - "people": "People", + "pending": "En attente", + "people": "Personnes", "publicLinks": "Liens publics", "role": { "canEdit": "Peut modifier", @@ -284,7 +284,7 @@ "folders": "Dossiers", "link_name": "Nom du lien (facultatif)", "notifyByEmail": "Notifier par e-mail", - "revoke": "Remove", + "revoke": "Supprimer", "role_label": "Rôle", "col_shared_by": "Partagé par", "col_shared": "Partagé", @@ -309,7 +309,7 @@ "coalesced": "{{n}} déjà notifié récemment.", "rateLimited": "{{n}} atteint la limite de débit – réessayez plus tard.", "sent": "{{n}} averti par email.", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} ignoré(s) (aucun e-mail / désinscription)." }, "passwordPrompt": "Définir un mot de passe :", "passwordPrompt_clear": "Nouveau mot de passe (vide à supprimer) :", @@ -514,7 +514,7 @@ "upload_failed": "Échec du téléchargement", "uploading": "Téléchargement…", "uploading_file": "Téléchargement {{name}}…", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_n": "Téléversement de {{done}}/{{total}} fichiers…" }, "dialogs": { "rename_folder": "Renommer le dossier", @@ -859,7 +859,7 @@ "callback_url": "URL de rappel", "callback_url_hint": "(enregistrer dans votre IdP)", "advanced_settings": "Paramètres avancés", - "scopes": "Scopes", + "scopes": "Portées", "auto_provision": "Provisionner automatiquement les utilisateurs", "admin_groups": "Groupes admin", "admin_groups_hint": "Noms de groupes OIDC séparés par des virgules", @@ -925,9 +925,8 @@ "storage_key_placeholder": "Saisir une nouvelle clé", "storage_path_style": "Forcer le style de chemin", "storage_path_style_hint": "Requis pour MinIO et certains services compatibles S3", - "storage_test": "Test", + "storage_test": "Tester", "storage_backend_audit": "Cohérence du backend", - "storage_backend_audit_triggered": "backend_consistency lancé pour `{{name}}` — suivez son avancement dans l’onglet Tâches.", "storage_test_connection": "Tester la connexion", "storage_test_success": "Connexion réussie", "storage_test_failure": "Échec de la connexion", @@ -981,7 +980,7 @@ "oidc_client_id": "Identifiant client", "oidc_disable_pw": "Désactiver la connexion par mot de passe (OIDC uniquement)", "oidc_issuer": "URL de l'émetteur", - "oidc_scopes": "Scopes", + "oidc_scopes": "Portées", "password": "Mot de passe", "quotas": "Quotas", "reset_pw_for": "Nouveau mot de passe pour", @@ -1181,9 +1180,6 @@ "gen_key": "Générer une clé", "gen_key_warning": "Conservez cette clé en toute sécurité. En cas de perte, les données cryptées sont irrémédiablement perdues.", "jobs": { - "tab": "Emplois", - "title": "Emplois", - "hint": "Cette section concerne les jobs internes : jobs périodiques + à la demande. Les contrôles de cohérence peuvent être exécutés en toute sécurité à tout moment : ils sont en lecture seule.", "run_all_consistency": "Exécutez tous les contrôles de cohérence", "run_deep": "Courir en profondeur", "run_deep_hint": "Exécute également des variantes lentes (re-hachage de blob, détection bitrot).", @@ -1215,11 +1211,10 @@ "findings_title": "Résultats", "no_runs": "Aucune course pour l'instant.", "no_findings": "Aucun résultat – exécution propre.", - "none_registered": "Aucun emploi enregistré.", "on_demand": "sur demande", - "every_h": "every {{n}} h", + "every_h": "toutes les {{n}} h", "every_min": "toutes les {{n}} minutes", - "every_sec": "every {{n}} s", + "every_sec": "toutes les {{n}} s", "outcome_ok": "d'accord", "outcome_err": "se tromper", "outcome_issues": "problèmes", @@ -1229,10 +1224,9 @@ "notices_present_tooltip": "Résultats informatifs – aucune action requise. Développez pour plus de détails.", "purge": "Purger les anciennes exécutions", "purge_hint": "Supprimez l’historique des exécutions terminées et échouées plus ancienne que la fenêtre de conservation choisie. Les résultats tombent avec leurs exécutions parentes. Les parcours non terminaux sont toujours préservés.", - "purge_title": "Purger l'ancien historique des tâches", "purge_body": "Supprimez l’historique des exécutions terminées et échouées plus ancienne que le nombre de jours choisi. Les résultats tombent avec leurs exécutions parentes. Les exécutions non terminales (en cours d’exécution, en pause, demandées en annulation) sont toujours conservées.", "purge_days_label": "Rétention (jours)", - "purge_confirm": "Purge", + "purge_confirm": "Purger", "purge_done": "{{n}} anciennes exécutions purgées (rétention {{days}} jours)", "state_running": "en cours d'exécution", "never": "jamais", @@ -1245,11 +1239,16 @@ "cancel_requested": "Annulation demandée — {{name}} fera une pause à la prochaine limite de sécurité", "cancel_noop": "Rien à annuler — {{name}} ne fonctionne pas", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximatif, proxy backend)", + "tab": "Tâches en arrière-plan", + "title": "Tâches en arrière-plan", + "hint": "Cette section concerne les tâches internes en arrière-plan : tâches périodiques et à la demande. Les contrôles de cohérence peuvent être exécutés à tout moment — ils sont en lecture seule.", + "none_registered": "Aucune tâche en arrière-plan enregistrée.", + "purge_title": "Purger l’ancien historique des tâches" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "Tester / découvrir", + "reextract_done": "{{processed}}/{{total}} traités · {{failed}} échec(s)", "sessions": { "filter_user": "Utilisateur (UUID)", "include_revoked": "Inclure les révoquées / expirées", @@ -1267,7 +1266,7 @@ "unbound": "non liée", "revoked": "révoquée", "expired": "expirée", - "active": "active", + "active": "actif", "revoke": "Révoquer", "empty": "Aucune session ne correspond au filtre actuel.", "revoke_self_confirm": "⚠️ Il s'agit de VOTRE session actuelle. La révoquer vous déconnectera immédiatement et vous devrez vous reconnecter. Continuer ?", @@ -1281,7 +1280,8 @@ "device": "Appareil", "unknown": "Inconnu" } - } + }, + "storage_backend_audit_triggered": "backend_consistency déclenché pour `{{name}}` — suivez-le dans l’onglet Tâches en arrière-plan." }, "profile": { "page_title": "Profil", @@ -1359,14 +1359,14 @@ "error_revoke": "Échec de la révocation", "edit_photo": "Modifier la photo", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", - "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_tab_upload": "Téléverser", + "photo_url_placeholder": "https://exemple.com/photo.jpg", + "photo_url_hint": "https://, http:// ou data:image/…;base64,… acceptés", "photo_choose_file": "Choisissez une photo (PNG, JPEG, WebP)", "photo_resize_note": "Les images supérieures à 512 × 512 px sont automatiquement redimensionnées.", "photo_save": "Enregistrer la photo", "photo_remove": "Supprimer la photo", - "photo_cancel": "Cancel", + "photo_cancel": "Annuler", "photo_save_failed": "Échec de l'enregistrement de la photo", "photo_no_file": "Veuillez d'abord sélectionner un fichier", "photo_managed_by_oidc": "Photo gérée par votre fournisseur d'identité.", @@ -1394,7 +1394,7 @@ "uploading": "Téléchargement en cours...", "files": "fichiers", "complete": "{{count}} / {{total}} téléchargés", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} fichiers" }, "storage_quota_exceeded": "Quota de stockage dépassé", "sharedwithme": { @@ -1500,7 +1500,7 @@ "direction": "Sens de tri" }, "notif": { - "errorTitle": "Error", + "errorTitle": "Erreur", "searchError": "Erreur lors de la recherche", "cleanupCompleted": "Nettoyage terminé", "cleanupCompletedBody": "L'historique des fichiers récents a été effacé", @@ -1584,7 +1584,7 @@ "common": { "add": "Ajouter", "cancel": "Annuler", - "clear": "Clear", + "clear": "Effacer", "close": "Fermer", "confirm": "Confirmer", "copy": "Copier", @@ -1596,7 +1596,7 @@ "next": "Suivant", "no": "Non", "previous": "Précédent", - "remove": "Remove", + "remove": "Supprimer", "rename": "Renommer", "save": "Enregistrer", "search": "Rechercher", diff --git a/frontend/static/locales/hi.json b/frontend/static/locales/hi.json index c5c87326..81d0d9f4 100644 --- a/frontend/static/locales/hi.json +++ b/frontend/static/locales/hi.json @@ -153,14 +153,14 @@ "manage_shares": "शेयर प्रबंधित करें", "no_shares": "अभी तक कोई शेयर नहीं", "playback_error": "प्लेबैक विफल रहा", - "private": "Private", - "public": "Public", + "private": "निजी", + "public": "सार्वजनिक", "read_only": "केवल पढ़ने के लिए", - "remove": "Remove", + "remove": "हटाएँ", "remove_share": "शेयर हटाएँ", "set_cover": "कवर सेट करें", "share_with_user": "उपयोगकर्ता आईडी या ईमेल", - "toggle_public": "Visibility", + "toggle_public": "दृश्यता", "track_removed": "ट्रैक हटा दिया गया", "prev": "पिछला", "add_selected": "चुने हुए को जोड़ो", @@ -214,10 +214,10 @@ "delete_permanently": "स्थायी रूप से हटाएँ", "empty_trash": "रद्दी खाली करें", "open_parent_folder": "मूल फ़ोल्डर पर जाएं", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "जोड़ें", + "apply": "लागू करें", + "clear": "साफ़ करें", + "remove": "हटाएँ" }, "user_menu": { "appearance": "दिखावट", @@ -265,8 +265,8 @@ "linkNamePlaceholder": "लिंक का नाम (वैकल्पिक)", "newLink": "नया लिंक", "noExpiry": "कोई समाप्ति नहीं", - "pending": "Pending", - "people": "People", + "pending": "लंबित", + "people": "लोग", "publicLinks": "सार्वजनिक लिंक", "role": { "canEdit": "संपादित कर सकते हैं", @@ -284,7 +284,7 @@ "folders": "फ़ोल्डर", "link_name": "लिंक का नाम (वैकल्पिक)", "notifyByEmail": "ईमेल से सूचित करें", - "revoke": "Remove", + "revoke": "हटाएँ", "role_label": "भूमिका", "col_shared_by": "द्वारा साझा किया गया", "col_shared": "साझा किया गया", @@ -309,7 +309,7 @@ "coalesced": "{{n}}हाल ही में अधिसूचित किया गया है।", "rateLimited": "{{n}} दर सीमा तक पहुंचें - बाद में प्रयास करें।", "sent": "{{n}} ईमेल द्वारा सूचित किया गया।", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} छोड़े गए (ईमेल नहीं / ऑप्ट-आउट)।" }, "passwordPrompt": "पासवर्ड सेट करें:", "passwordPrompt_clear": "नया पासवर्ड (हटाने के लिए खाली):", @@ -514,7 +514,7 @@ "upload_failed": "अपलोड विफल रहा", "uploading": "अपलोड हो रहा है...", "uploading_file": "अपलोड हो रहा है {{name}}…", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_n": "{{done}}/{{total}} फ़ाइलें अपलोड हो रही हैं…" }, "dialogs": { "rename_folder": "फ़ोल्डर का नाम बदलें", @@ -1166,7 +1166,6 @@ "storage_size": "संग्रहित", "storage_test": "परीक्षा", "storage_backend_audit": "बैकएंड संगति", - "storage_backend_audit_triggered": "`{{name}}` के लिए बैकएंड_कंसिस्टेंसी ट्रिगर हुई - इसे जॉब्स टैब पर देखें।", "time_day_ago": "{{n}} पहले", "time_hour_ago": "{{n}} घंटे पहले", "time_just_now": "बस अब", @@ -1181,9 +1180,6 @@ "gen_key": "कुंजी उत्पन्न करें", "gen_key_warning": "इस कुंजी को सुरक्षित रूप से संग्रहित करें. यदि यह खो जाता है, तो एन्क्रिप्टेड डेटा अपरिवर्तनीय रूप से खो जाता है।", "jobs": { - "tab": "नौकरियाँ", - "title": "नौकरियाँ", - "hint": "यह अनुभाग आंतरिक नौकरियों से संबंधित है: आवधिक + ऑन-डिमांड नौकरियां। संगति जांच किसी भी समय चलाना सुरक्षित है - वे केवल-पढ़ने के लिए हैं।", "run_all_consistency": "सभी संगतता जांचें चलाएँ", "run_deep": "गहरा रिश्ता", "run_deep_hint": "धीमे वेरिएंट (ब्लॉब री-हैश, बिट्रोट डिटेक्शन) भी चलाता है।", @@ -1215,7 +1211,6 @@ "findings_title": "निष्कर्ष", "no_runs": "अभी तक कोई रन नहीं.", "no_findings": "कोई निष्कर्ष नहीं - क्लीन रन।", - "none_registered": "कोई नौकरी पंजीकृत नहीं.", "on_demand": "मांग पर", "every_h": "हर {{n}} घंटे", "every_min": "हर {{n}} मिनट", @@ -1229,7 +1224,6 @@ "notices_present_tooltip": "सूचनात्मक निष्कर्ष - किसी कार्रवाई की आवश्यकता नहीं। विवरण के लिए विस्तार करें.", "purge": "पुराने रन शुद्ध करें", "purge_hint": "चुनी गई अवधारण विंडो से पुराना पूर्ण और विफल रन इतिहास हटाएं। निष्कर्ष उनके मूल संचालन के साथ घटते हैं। गैर-टर्मिनल रन हमेशा संरक्षित रहते हैं।", - "purge_title": "पुराना कार्य इतिहास मिटाएँ", "purge_body": "चुने गए दिनों की संख्या से अधिक पुराने पूर्ण और विफल रन इतिहास को हटा दें। निष्कर्ष उनके मूल संचालन के साथ घटते हैं। गैर-टर्मिनल रन (चल रहे, रुके हुए, रद्द-अनुरोधित) हमेशा संरक्षित रहते हैं।", "purge_days_label": "अवधारण (दिन)", "purge_confirm": "शुद्ध करना", @@ -1245,11 +1239,16 @@ "cancel_requested": "अनुरोध रद्द करें - {{name}} अगली सुरक्षित सीमा पर रुकेगा", "cancel_noop": "रद्द करने के लिए कुछ भी नहीं - {{name}} नहीं चल रहा है", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — अनुमानित, बैकएंड प्रॉक्सी)", + "tab": "बैकग्राउंड टास्क", + "title": "बैकग्राउंड टास्क", + "hint": "यह अनुभाग आंतरिक बैकग्राउंड टास्क से संबंधित है: आवधिक + ऑन-डिमांड टास्क। संगति जाँच किसी भी समय सुरक्षित रूप से चलाई जा सकती हैं — वे केवल-पढ़ने के लिए हैं।", + "none_registered": "कोई बैकग्राउंड टास्क पंजीकृत नहीं है।", + "purge_title": "पुराने टास्क इतिहास को साफ़ करें" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "परीक्षण / खोज", + "reextract_done": "{{processed}}/{{total}} संसाधित · {{failed}} विफल", "sessions": { "filter_user": "उपयोगकर्ता (UUID)", "include_revoked": "रद्द / समाप्त शामिल करें", @@ -1281,7 +1280,8 @@ "device": "डिवाइस", "unknown": "अज्ञात" } - } + }, + "storage_backend_audit_triggered": "backend_consistency `{{name}}` के लिए ट्रिगर हुआ — इसे बैकग्राउंड टास्क टैब पर देखें।" }, "profile": { "page_title": "प्रोफ़ाइल", @@ -1359,14 +1359,14 @@ "error_revoke": "रद्द करने में विफल", "edit_photo": "फ़ोटो संपादित करें", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", + "photo_tab_upload": "अपलोड", "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_url_hint": "https://, http://, या data:image/…;base64,… स्वीकार्य", "photo_choose_file": "एक फोटो चुनें (पीएनजी, जेपीईजी, वेबपी)", "photo_resize_note": "512 × 512 पीएक्स से बड़ी छवियों का आकार स्वचालित रूप से बदल दिया जाता है।", "photo_save": "तस्वीर को बचाने", "photo_remove": "फ़ोटो हटाएँ", - "photo_cancel": "Cancel", + "photo_cancel": "रद्द करें", "photo_save_failed": "फ़ोटो सहेजने में विफल", "photo_no_file": "कृपया पहले एक फ़ाइल चुनें", "photo_managed_by_oidc": "फोटो आपके पहचान प्रदाता द्वारा प्रबंधित किया गया।", @@ -1394,7 +1394,7 @@ "uploading": "अपलोड हो रहा है...", "files": "फ़ाइलें", "complete": "{{count}} / {{total}} अपलोड हुए", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} फ़ाइलें" }, "storage_quota_exceeded": "स्टोरेज कोटा पार हो गया", "sharedwithme": { @@ -1439,7 +1439,7 @@ "create_dialog_title": "नया समूह", "edit_dialog_title": "समूह का नाम बदलें", "name_label": "नाम", - "name_placeholder": "engineering", + "name_placeholder": "इंजीनियरिंग", "description_label": "विवरण (वैकल्पिक)", "members_section": "सदस्य", "add_member_placeholder": "उपयोगकर्ता या समूह जोड़ें…", @@ -1495,12 +1495,12 @@ "passwordLinks": "पासवर्ड से सुरक्षित लिंक" }, "sort": { - "asc": "ascending", - "desc": "descending", + "asc": "आरोही", + "desc": "अवरोही", "direction": "दिशा क्रमबद्ध करें" }, "notif": { - "errorTitle": "Error", + "errorTitle": "त्रुटि", "searchError": "खोज करने में त्रुटि", "cleanupCompleted": "सफ़ाई पूरी हो गई", "cleanupCompletedBody": "हाल की फ़ाइलों का इतिहास साफ़ कर दिया गया है", @@ -1584,7 +1584,7 @@ "common": { "add": "जोड़ें", "cancel": "रद्द करें", - "clear": "Clear", + "clear": "साफ़ करें", "close": "बंद करें", "confirm": "पुष्टि करें", "copy": "कॉपी करें", @@ -1596,7 +1596,7 @@ "next": "अगला", "no": "नहीं", "previous": "पिछला", - "remove": "Remove", + "remove": "हटाएँ", "rename": "नाम बदलें", "save": "सहेजें", "search": "खोजें", diff --git a/frontend/static/locales/it.json b/frontend/static/locales/it.json index 0af5dded..fd0c7173 100644 --- a/frontend/static/locales/it.json +++ b/frontend/static/locales/it.json @@ -309,7 +309,7 @@ "coalesced": "{{n}} già notificato di recente.", "rateLimited": "{{n}} raggiungi il limite di velocità: riprova più tardi.", "sent": "{{n}} notificato via e-mail.", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} saltati (nessuna e-mail / disiscritti)." }, "passwordPrompt": "Imposta una password:", "passwordPrompt_clear": "Nuova password (vuoto da rimuovere):", @@ -501,7 +501,7 @@ "no_home": "Nessuna cartella Inizio disponibile.", "no_preview": "Nessuna anteprima disponibile per questo tipo di file.", "no_subfolders": "Nessuna sottocartella qui.", - "owner_me": "Me", + "owner_me": "Io", "preview_failed": "Impossibile caricare l'anteprima.", "select_all": "Seleziona tutto", "selected_count": "{{count}} selezionato", @@ -514,7 +514,7 @@ "upload_failed": "Caricamento non riuscito", "uploading": "Caricamento…", "uploading_file": "Caricamento {{name}}...", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_n": "Caricamento di {{done}}/{{total}} file…" }, "dialogs": { "rename_folder": "Rinomina cartella", @@ -527,7 +527,7 @@ "move_file": "Sposta file", "move_folder": "Sposta cartella", "select_destination": "Seleziona cartella di destinazione:", - "root": "Root", + "root": "Radice", "delete_confirmation": "Sei sicuro di voler eliminare", "and_contents": "e tutto il suo contenuto", "no_undo": "Questa azione non può essere annullata", @@ -642,7 +642,7 @@ "admin_setup": "È la prima volta?", "setup": "Configura amministratore", "register_title": "Crea account", - "email": "Email", + "email": "E-mail", "email_placeholder": "Inserisci la tua email", "confirm_password": "Conferma password", "confirm_password_placeholder": "Conferma la tua password", @@ -859,13 +859,13 @@ "callback_url": "URL di Callback", "callback_url_hint": "(registra nel tuo IdP)", "advanced_settings": "Impostazioni Avanzate", - "scopes": "Scopes", + "scopes": "Ambiti", "auto_provision": "Provisioning automatico degli utenti", "admin_groups": "Gruppi Admin", "admin_groups_hint": "Nomi di gruppi OIDC separati da virgola", "disable_password": "Disabilita accesso con password (solo OIDC)", "password_warning": "Questo impedirà TUTTI gli accessi tramite password!", - "test_btn": "Test", + "test_btn": "Prova", "save_btn": "Salva", "saving": "Salvataggio…", "settings_saved": "Impostazioni salvate — OIDC ora è {{status}}", @@ -880,7 +880,7 @@ "username_hint": "3–32 caratteri", "password_label": "Password", "password_placeholder": "Min 8 caratteri", - "email_label": "Email", + "email_label": "E-mail", "email_optional": "(facoltativo)", "email_placeholder": "utente@esempio.com (auto-generata se vuoto)", "role_label": "Ruolo", @@ -966,7 +966,7 @@ "admin_users": "Amministratori", "confirm_role": "Cambiare ruolo a {{role}}?", "dashboard": "Dashboard", - "email": "Email", + "email": "E-mail", "mig_complete": "Completa", "mig_pause": "Pausa", "mig_resume": "Riprendi", @@ -978,7 +978,7 @@ "oidc_client_id": "ID cliente", "oidc_disable_pw": "Disabilita accesso con password (solo OIDC)", "oidc_issuer": "URL Emittente", - "oidc_scopes": "Scopes", + "oidc_scopes": "Ambiti", "password": "Password", "quotas": "Quote", "reset_pw_for": "Nuova password per", @@ -1164,9 +1164,8 @@ "storage_dedup": "Rapporto di deduplicazione", "storage_preset": "Preimpostato", "storage_size": "Memorizzato", - "storage_test": "Test", + "storage_test": "Prova", "storage_backend_audit": "Coerenza del back-end", - "storage_backend_audit_triggered": "backend_consistency attivato per `{{name}}`: guardalo nella scheda Lavori.", "time_day_ago": "{{n}} giorni fa", "time_hour_ago": "{{n}} h fa", "time_just_now": "proprio adesso", @@ -1181,9 +1180,6 @@ "gen_key": "Genera chiave", "gen_key_warning": "Conserva questa chiave in modo sicuro. In caso di smarrimento, i dati crittografati andranno persi irrimediabilmente.", "jobs": { - "tab": "Lavori", - "title": "Lavori", - "hint": "Questa sezione riguarda i lavori interni: lavori periodici + su richiesta. I controlli di coerenza possono essere eseguiti in sicurezza in qualsiasi momento: sono di sola lettura.", "run_all_consistency": "Esegui tutti i controlli di coerenza", "run_deep": "Corri in profondità", "run_deep_hint": "Esegue anche varianti lente (re-hash blob, rilevamento bitrot).", @@ -1215,7 +1211,6 @@ "findings_title": "Risultati", "no_runs": "Nessuna corsa ancora.", "no_findings": "Nessun risultato: analisi pulita.", - "none_registered": "Nessun lavoro registrato.", "on_demand": "su richiesta", "every_h": "ogni {{n}} h", "every_min": "ogni {{n}} min", @@ -1229,7 +1224,6 @@ "notices_present_tooltip": "Risultati informativi: nessuna azione richiesta. Espandi per i dettagli.", "purge": "Elimina le vecchie esecuzioni", "purge_hint": "Elimina la cronologia delle esecuzioni completate e non riuscite precedente alla finestra di conservazione scelta. I risultati diminuiscono con le corse principali. Le esecuzioni non terminali vengono sempre conservate.", - "purge_title": "Elimina la vecchia cronologia lavorativa", "purge_body": "Elimina la cronologia delle esecuzioni completate e non riuscite precedente al numero di giorni scelto. I risultati diminuiscono con le corse principali. Le esecuzioni non terminali (in esecuzione, in pausa, con richiesta di annullamento) vengono sempre conservate.", "purge_days_label": "Conservazione (giorni)", "purge_confirm": "Eliminazione", @@ -1245,11 +1239,16 @@ "cancel_requested": "Annulla richiesta: {{name}} si fermerà al successivo confine sicuro", "cancel_noop": "Niente da annullare: {{name}} non è in esecuzione", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approssimativo, proxy backend)", + "tab": "Attività in background", + "title": "Attività in background", + "hint": "Questa sezione riguarda le attività interne in background: attività periodiche e su richiesta. I controlli di coerenza sono sicuri da eseguire in qualsiasi momento — sono di sola lettura.", + "none_registered": "Nessuna attività in background registrata.", + "purge_title": "Elimina cronologia attività precedenti" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "Prova / scopri", + "reextract_done": "{{processed}}/{{total}} elaborati · {{failed}} falliti", "sessions": { "filter_user": "Utente (UUID)", "include_revoked": "Includi revocate / scadute", @@ -1281,7 +1280,8 @@ "device": "Dispositivo", "unknown": "Sconosciuto" } - } + }, + "storage_backend_audit_triggered": "backend_consistency attivato per `{{name}}` — seguilo nella scheda Attività in background." }, "profile": { "page_title": "Profilo", @@ -1294,7 +1294,7 @@ "role_user": "Utente", "account_details": "Dettagli Account", "username": "Nome utente", - "email": "Email", + "email": "E-mail", "role": "Ruolo", "last_login": "Ultimo accesso", "storage": "Archiviazione", @@ -1359,7 +1359,7 @@ "error_revoke": "Revoca fallita", "edit_photo": "Modifica foto", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", + "photo_tab_upload": "Carica", "photo_url_placeholder": "https://example.com", "photo_url_hint": "Si accettano indirizzi https://, http:// o data:image/…;base64,…", "photo_choose_file": "Scegli una foto (PNG, JPEG, WebP)", @@ -1394,7 +1394,7 @@ "uploading": "Caricamento in corso...", "files": "file", "complete": "{{count}} / {{total}} caricati", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} file" }, "storage_quota_exceeded": "Quota di archiviazione superata", "sharedwithme": { @@ -1584,7 +1584,7 @@ "common": { "add": "Aggiungi", "cancel": "Annulla", - "clear": "Clear", + "clear": "Cancella", "close": "Chiudi", "confirm": "Conferma", "copy": "Copia", @@ -1596,7 +1596,7 @@ "next": "Successivo", "no": "No", "previous": "Precedente", - "remove": "Remove", + "remove": "Rimuovi", "rename": "Rinomina", "save": "Salva", "search": "Cerca", diff --git a/frontend/static/locales/ja.json b/frontend/static/locales/ja.json index bcedc239..5c3d14dc 100644 --- a/frontend/static/locales/ja.json +++ b/frontend/static/locales/ja.json @@ -153,14 +153,14 @@ "manage_shares": "共有の管理", "no_shares": "まだシェアはありません", "playback_error": "再生に失敗しました", - "private": "Private", - "public": "Public", + "private": "プライベート", + "public": "公開", "read_only": "読み取り専用", - "remove": "Remove", + "remove": "削除", "remove_share": "共有を削除する", "set_cover": "セットカバー", "share_with_user": "ユーザーIDまたはメールアドレス", - "toggle_public": "Visibility", + "toggle_public": "可視性", "track_removed": "トラックが削除されました", "prev": "前へ", "add_selected": "選択したものを追加", @@ -214,10 +214,10 @@ "delete_permanently": "完全に削除", "empty_trash": "ゴミ箱を空にする", "open_parent_folder": "親フォルダへ移動", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "追加", + "apply": "適用", + "clear": "クリア", + "remove": "削除" }, "user_menu": { "appearance": "外観", @@ -265,8 +265,8 @@ "linkNamePlaceholder": "リンク名 (オプション)", "newLink": "新しいリンク", "noExpiry": "有効期限なし", - "pending": "Pending", - "people": "People", + "pending": "保留中", + "people": "人物", "publicLinks": "パブリックリンク", "role": { "canEdit": "編集可能", @@ -284,7 +284,7 @@ "folders": "フォルダ", "link_name": "リンク名 (オプション)", "notifyByEmail": "メールで通知", - "revoke": "Remove", + "revoke": "削除", "role_label": "役割", "col_shared_by": "共有者", "col_shared": "共有日時", @@ -309,7 +309,7 @@ "coalesced": "{{n}} 最近すでに通知されています。", "rateLimited": "{{n}} レート制限に達しました - 後で試してください。", "sent": "{{n}} メールで通知されます。", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} 件をスキップしました (メールなし / 配信停止)。" }, "passwordPrompt": "パスワードを設定します。", "passwordPrompt_clear": "新しいパスワード (削除するには空白):", @@ -513,8 +513,8 @@ "uploaded_skipped": "{{ok}} アップロード · {{skipped}} スキップ (通常のファイルではない)", "upload_failed": "アップロードに失敗しました", "uploading": "アップロード中…", - "uploading_file": "Uploading {{name}}…", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_file": "{{name}} をアップロード中…", + "uploading_n": "{{done}}/{{total}} ファイルをアップロード中…" }, "dialogs": { "rename_folder": "フォルダ名を変更", @@ -1166,7 +1166,6 @@ "storage_size": "保存済み", "storage_test": "テスト", "storage_backend_audit": "バックエンドの一貫性", - "storage_backend_audit_triggered": "backend_consistency が `{{name}}` に対してトリガーされました — [ジョブ] タブで確認してください。", "time_day_ago": "{{n}} 日前", "time_hour_ago": "{{n}} 時間前", "time_just_now": "ちょうど今", @@ -1181,9 +1180,6 @@ "gen_key": "キーの生成", "gen_key_warning": "このキーは安全に保管してください。紛失すると、暗号化されたデータは回復不能に失われます。", "jobs": { - "tab": "求人", - "title": "求人", - "hint": "このセクションは、内部ジョブ (定期ジョブとオンデマンド ジョブ) に関するものです。整合性チェックは読み取り専用なので、いつでも安全に実行できます。", "run_all_consistency": "すべての整合性チェックを実行する", "run_deep": "深く走る", "run_deep_hint": "低速な亜種 (BLOB 再ハッシュ、ビットロット検出) も実行します。", @@ -1215,11 +1211,10 @@ "findings_title": "調査結果", "no_runs": "まだ実行はありません。", "no_findings": "検出結果はありません - 正常に実行されました。", - "none_registered": "求人は登録されていません。", "on_demand": "オンデマンド", - "every_h": "every {{n}} h", - "every_min": "every {{n}} min", - "every_sec": "every {{n}} s", + "every_h": "{{n}} 時間ごと", + "every_min": "{{n}} 分ごと", + "every_sec": "{{n}} 秒ごと", "outcome_ok": "わかりました", "outcome_err": "エラー", "outcome_issues": "問題", @@ -1229,11 +1224,10 @@ "notices_present_tooltip": "情報的な調査結果 — アクションは必要ありません。詳細については展開してください。", "purge": "古い実行をパージする", "purge_hint": "選択した保持期間よりも古い、完了および失敗した実行履歴を削除します。親の実行とともに検出結果は低下します。非ターミナル実行は常に保存されます。", - "purge_title": "古いジョブ履歴を消去する", "purge_body": "選択した日数より古い、完了および失敗した実行履歴を削除します。親の実行とともに検出結果は低下します。非ターミナル実行 (実行中、一時停止、キャンセル要求) は常に保持されます。", "purge_days_label": "保存期間 (日)", "purge_confirm": "パージ", - "purge_done": "{{n}} old run(s) purged (retention {{days}} days)", + "purge_done": "{{n}} 件の古い実行を削除しました (保持 {{days}} 日)", "state_running": "走っている", "never": "一度もない", "just_now": "ちょうど今", @@ -1245,11 +1239,16 @@ "cancel_requested": "キャンセルが要求されました — {{name}} 次の安全な境界で一時停止します", "cancel_noop": "キャンセルするものはありません — {{name}} は実行されていません", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — 概算、バックエンドプロキシ)", + "tab": "バックグラウンドタスク", + "title": "バックグラウンドタスク", + "hint": "このセクションは内部のバックグラウンドタスク(定期的およびオンデマンド)に関するものです。整合性チェックはいつでも安全に実行できます — 読み取り専用です。", + "none_registered": "登録されているバックグラウンドタスクはありません。", + "purge_title": "古いタスク履歴を削除" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "テスト / 検出", + "reextract_done": "{{processed}}/{{total}} 処理済み · {{failed}} 失敗", "sessions": { "filter_user": "ユーザー (UUID)", "include_revoked": "取り消し済み / 期限切れを含む", @@ -1281,7 +1280,8 @@ "device": "デバイス", "unknown": "不明" } - } + }, + "storage_backend_audit_triggered": "backend_consistency が `{{name}}` に対して開始されました — バックグラウンドタスクタブで確認してください。" }, "profile": { "page_title": "プロフィール", @@ -1359,14 +1359,14 @@ "error_revoke": "失効に失敗しました", "edit_photo": "写真を編集する", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", + "photo_tab_upload": "アップロード", "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_url_hint": "https://、http://、data:image/…;base64,… を受け付けます", "photo_choose_file": "写真を選択してください (PNG、JPEG、WebP)", "photo_resize_note": "512 × 512 ピクセルより大きい画像は自動的にサイズ変更されます。", "photo_save": "写真を保存", "photo_remove": "写真を削除", - "photo_cancel": "Cancel", + "photo_cancel": "キャンセル", "photo_save_failed": "写真の保存に失敗しました", "photo_no_file": "最初にファイルを選択してください", "photo_managed_by_oidc": "ID プロバイダーによって管理されている写真。", @@ -1394,7 +1394,7 @@ "uploading": "アップロード中...", "files": "ファイル", "complete": "{{count}} / {{total}} アップロード済み", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} ファイル" }, "storage_quota_exceeded": "ストレージ容量を超過しました", "sharedwithme": { @@ -1439,7 +1439,7 @@ "create_dialog_title": "新規グループ", "edit_dialog_title": "グループ名を変更", "name_label": "名前", - "name_placeholder": "engineering", + "name_placeholder": "エンジニアリング", "description_label": "説明(任意)", "members_section": "メンバー", "add_member_placeholder": "ユーザーまたはグループを追加…", @@ -1495,12 +1495,12 @@ "passwordLinks": "パスワードで保護されたリンク" }, "sort": { - "asc": "ascending", - "desc": "descending", + "asc": "昇順", + "desc": "降順", "direction": "ソート方向" }, "notif": { - "errorTitle": "Error", + "errorTitle": "エラー", "searchError": "検索実行エラー", "cleanupCompleted": "クリーンアップが完了しました", "cleanupCompletedBody": "最近のファイル履歴が消去されました", @@ -1584,7 +1584,7 @@ "common": { "add": "追加", "cancel": "キャンセル", - "clear": "Clear", + "clear": "クリア", "close": "閉じる", "confirm": "確認", "copy": "コピー", @@ -1596,7 +1596,7 @@ "next": "次へ", "no": "なし", "previous": "前へ", - "remove": "Remove", + "remove": "削除", "rename": "名前を変更", "save": "保存", "search": "検索", diff --git a/frontend/static/locales/ko.json b/frontend/static/locales/ko.json index 19fafea4..37ac8066 100644 --- a/frontend/static/locales/ko.json +++ b/frontend/static/locales/ko.json @@ -153,14 +153,14 @@ "manage_shares": "공유 관리", "no_shares": "아직 공유가 없습니다.", "playback_error": "재생 실패", - "private": "Private", - "public": "Public", + "private": "비공개", + "public": "공개", "read_only": "읽기 전용", - "remove": "Remove", + "remove": "제거", "remove_share": "공유 삭제", "set_cover": "커버 세트", "share_with_user": "사용자 ID 또는 이메일", - "toggle_public": "Visibility", + "toggle_public": "표시", "track_removed": "트랙이 삭제됨", "prev": "이전", "add_selected": "선택 항목 추가", @@ -214,10 +214,10 @@ "delete_permanently": "영구 삭제", "empty_trash": "휴지통 비우기", "open_parent_folder": "상위 폴더로 이동", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "추가", + "apply": "적용", + "clear": "지우기", + "remove": "제거" }, "user_menu": { "appearance": "외관", @@ -265,8 +265,8 @@ "linkNamePlaceholder": "링크 이름(선택사항)", "newLink": "새 링크", "noExpiry": "만료 없음", - "pending": "Pending", - "people": "People", + "pending": "대기 중", + "people": "사람", "publicLinks": "공개 링크", "role": { "canEdit": "편집 가능", @@ -284,7 +284,7 @@ "folders": "폴더", "link_name": "링크 이름(선택사항)", "notifyByEmail": "이메일로 알림", - "revoke": "Remove", + "revoke": "제거", "role_label": "역할", "addPassword": "비밀번호 추가", "add_people": "사용자, 그룹 또는 이메일 추가…", @@ -1214,11 +1214,7 @@ "delete_user_confirm_hint": "확인을 위해 아래에 계정 이메일을 입력하세요: {{email}}", "deleting": "삭제 중…", "storage_backend_audit": "백엔드 일관성", - "storage_backend_audit_triggered": "`{{name}}`에 대해 backend_consistency가 트리거되었습니다. 작업 탭에서 확인하세요.", "jobs": { - "tab": "채용 정보", - "title": "채용정보", - "hint": "이 섹션은 내부 작업(정기 작업 + 주문형 작업)에 관한 것입니다. 일관성 검사는 언제든지 안전하게 실행할 수 있으며 읽기 전용입니다.", "run_all_consistency": "모든 일관성 검사 실행", "run_deep": "깊이 달리다", "run_deep_hint": "또한 느린 변형(블롭 재해시, 비트롯 감지)을 실행합니다.", @@ -1249,11 +1245,10 @@ "findings_title": "조사 결과", "no_runs": "아직 실행이 없습니다.", "no_findings": "발견 항목 없음 - 깨끗하게 실행됩니다.", - "none_registered": "등록된 채용정보가 없습니다.", "on_demand": "주문형", "every_h": "매 {{n}}시간마다", "every_min": "{{n}}분마다", - "every_sec": "every {{n}} s", + "every_sec": "{{n}}초마다", "outcome_ok": "좋아요", "outcome_err": "실수", "outcome_issues": "문제", @@ -1263,7 +1258,6 @@ "notices_present_tooltip": "정보 발견 항목 - 조치가 필요하지 않습니다. 자세한 내용을 보려면 확장하세요.", "purge": "오래된 실행 제거", "purge_hint": "선택한 보존 기간보다 오래된 완료 및 실패한 실행 기록을 삭제합니다. 결과는 상위 실행과 함께 삭제됩니다. 비터미널 실행은 항상 보존됩니다.", - "purge_title": "이전 작업 기록 삭제", "purge_body": "선택한 일수보다 오래된 실행 완료 및 실패 기록을 삭제합니다. 결과는 상위 실행과 함께 삭제됩니다. 비터미널 실행(실행 중, 일시 중지, 취소 요청)은 항상 보존됩니다.", "purge_days_label": "보존 기간(일)", "purge_confirm": "숙청", @@ -1280,8 +1274,14 @@ "cancel_noop": "취소할 사항이 없습니다 — {{name}}이(가) 실행 중이 아닙니다.", "progress_scanned_only": "{{n}} 스캔됨", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" - } + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — 근사치, 백엔드 프록시)", + "tab": "백그라운드 작업", + "title": "백그라운드 작업", + "hint": "이 섹션은 내부 백그라운드 작업(주기적 + 온디맨드)과 관련이 있습니다. 일관성 검사는 언제든지 안전하게 실행할 수 있습니다 — 읽기 전용입니다.", + "none_registered": "등록된 백그라운드 작업이 없습니다.", + "purge_title": "이전 작업 기록 삭제" + }, + "storage_backend_audit_triggered": "backend_consistency이(가) `{{name}}`에 대해 트리거되었습니다 — 백그라운드 작업 탭에서 확인하세요." }, "profile": { "page_title": "프로필", @@ -1359,14 +1359,14 @@ "error_revoke": "취소 실패", "edit_photo": "사진 편집", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", + "photo_tab_upload": "업로드", "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_url_hint": "https://, http://, data:image/…;base64,… 허용", "photo_choose_file": "사진 선택(PNG, JPEG, WebP)", "photo_resize_note": "512 × 512px보다 큰 이미지는 자동으로 크기가 조정됩니다.", "photo_save": "사진 저장", "photo_remove": "사진 삭제", - "photo_cancel": "Cancel", + "photo_cancel": "취소", "photo_save_failed": "사진을 저장하지 못했습니다.", "photo_no_file": "먼저 파일을 선택해주세요", "photo_managed_by_oidc": "귀하의 ID 제공업체가 관리하는 사진입니다.", @@ -1439,7 +1439,7 @@ "create_dialog_title": "새 그룹", "edit_dialog_title": "그룹 이름 변경", "name_label": "이름", - "name_placeholder": "engineering", + "name_placeholder": "엔지니어링", "description_label": "설명(선택사항)", "members_section": "구성원", "add_member_placeholder": "사용자 또는 그룹 추가…", @@ -1495,12 +1495,12 @@ } }, "sort": { - "asc": "ascending", - "desc": "descending", + "asc": "오름차순", + "desc": "내림차순", "direction": "정렬 방향" }, "notif": { - "errorTitle": "Error", + "errorTitle": "오류", "searchError": "검색 수행 중 오류가 발생했습니다.", "cleanupCompleted": "정리 완료", "cleanupCompletedBody": "최근 파일 기록이 삭제되었습니다.", @@ -1584,7 +1584,7 @@ "common": { "add": "추가", "cancel": "취소", - "clear": "Clear", + "clear": "지우기", "close": "닫기", "confirm": "확인", "copy": "복사", @@ -1596,7 +1596,7 @@ "next": "다음", "no": "없음", "previous": "이전", - "remove": "Remove", + "remove": "제거", "rename": "이름 변경", "save": "저장", "search": "검색", diff --git a/frontend/static/locales/nl.json b/frontend/static/locales/nl.json index 17cfa3f6..e052ad8c 100644 --- a/frontend/static/locales/nl.json +++ b/frontend/static/locales/nl.json @@ -81,8 +81,8 @@ "view_monthly": "Maand", "view_yearly": "Jaar", "group_by": "Groeperen op", - "confirm_delete": "Move {{n}} photos to trash?", - "confirm_delete_one": "Delete {{name}}?", + "confirm_delete": "{{n}} foto's naar de prullenbak verplaatsen?", + "confirm_delete_one": "{{name}} verwijderen?", "delete": "Foto's verwijderen", "empty": "Nog geen foto's.", "full_resolution": "Volledige resolutie", @@ -113,7 +113,7 @@ "share": "Delen", "edit": "Bewerken", "play_all": "Alles Afspelen", - "shuffle": "Shuffle", + "shuffle": "Willekeurig", "repeat": "Herhalen", "repeat_one": "Een Herhalen", "queue": "Wachtrij", @@ -153,14 +153,14 @@ "manage_shares": "Beheer aandelen", "no_shares": "Nog geen aandelen", "playback_error": "Afspelen mislukt", - "private": "Private", - "public": "Public", + "private": "Privé", + "public": "Openbaar", "read_only": "Alleen lezen", - "remove": "Remove", + "remove": "Verwijderen", "remove_share": "Deel verwijderen", "set_cover": "Deksel instellen", "share_with_user": "Gebruikers-ID of e-mailadres", - "toggle_public": "Visibility", + "toggle_public": "Zichtbaarheid", "track_removed": "Spoor verwijderd", "prev": "Vorige", "add_selected": "Geselecteerde toevoegen", @@ -214,10 +214,10 @@ "delete_permanently": "Permanent verwijderen", "empty_trash": "Prullenbak legen", "open_parent_folder": "Naar bovenliggende map", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "Toevoegen", + "apply": "Toepassen", + "clear": "Wissen", + "remove": "Verwijderen" }, "user_menu": { "appearance": "Weergave", @@ -232,7 +232,7 @@ "auto": "Zoals systeem" }, "manage_groups": "Groepen beheren", - "admin": "Admin", + "admin": "Beheerder", "mit_license": "MIT-licentie", "title": "Gebruikersmenu" }, @@ -265,8 +265,8 @@ "linkNamePlaceholder": "Linknaam (optioneel)", "newLink": "Nieuwe koppeling", "noExpiry": "Geen vervaldatum", - "pending": "Pending", - "people": "People", + "pending": "In behandeling", + "people": "Personen", "publicLinks": "Openbare links", "role": { "canEdit": "Kan bewerken", @@ -284,7 +284,7 @@ "folders": "Mappen", "link_name": "Linknaam (optioneel)", "notifyByEmail": "Per e-mail notificeren", - "revoke": "Remove", + "revoke": "Verwijderen", "role_label": "Rol", "col_shared_by": "Gedeeld door", "col_shared": "Gedeeld", @@ -309,7 +309,7 @@ "coalesced": "{{n}} onlangs al op de hoogte gesteld.", "rateLimited": "{{n}} Bereik de snelheidslimiet — probeer het later.", "sent": "{{n}} per e-mail op de hoogte gesteld.", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} overgeslagen (geen e-mail / afgemeld)." }, "passwordPrompt": "Stel een wachtwoord in:", "passwordPrompt_clear": "Nieuw wachtwoord (leeg om te verwijderen):", @@ -435,7 +435,7 @@ "pdf": "PDF", "text": "Tekst", "folder": "Map", - "spreadsheet": "Spreadsheet", + "spreadsheet": "Werkblad", "presentation": "Presentatie", "archive": "Archief", "installer": "Installatiebestand", @@ -479,9 +479,9 @@ "batch_delete": "Geselecteerde verwijderen", "breadcrumb": "Broodkruimel", "cancel_selection": "Selectie annuleren", - "confirm_batch_delete": "Move {{n}} items to trash?", + "confirm_batch_delete": "{{n}} items naar de prullenbak verplaatsen?", "confirm_delete": "'{{name}}' naar de prullenbak verplaatsen?", - "confirm_delete_n": "Delete {{count}} item(s)?", + "confirm_delete_n": "{{count}} item(s) verwijderen?", "copied": "Gekopieerd", "copy_here": "Kopieer hier", "copy_n": "Kopieer {{n}} artikelen", @@ -514,7 +514,7 @@ "upload_failed": "Uploaden mislukt", "uploading": "Uploaden…", "uploading_file": "Uploaden {{name}}…", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_n": "{{done}}/{{total}} bestanden uploaden…" }, "dialogs": { "rename_folder": "Map hernoemen", @@ -650,7 +650,7 @@ "have_account": "Heb je al een account?", "login": "Inloggen", "setup_title": "Eerste setup", - "setup_step1": "Admin", + "setup_step1": "Beheerder", "setup_step2": "Systeem", "setup_step3": "Voltooid", "admin_username": "Admin gebruikersnaam", @@ -859,7 +859,7 @@ "callback_url": "Callback-URL", "callback_url_hint": "(registreer bij uw IdP)", "advanced_settings": "Geavanceerde instellingen", - "scopes": "Scopes", + "scopes": "Bereiken", "auto_provision": "Gebruikers automatisch aanmaken bij eerste login", "admin_groups": "Beheergroepen", "admin_groups_hint": "Kommagescheiden OIDC-groepsnamen", @@ -978,7 +978,7 @@ "oidc_client_id": "Client-ID", "oidc_disable_pw": "Wachtwoord-login uitschakelen (alleen OIDC)", "oidc_issuer": "Uitgever-URL", - "oidc_scopes": "Scopes", + "oidc_scopes": "Bereiken", "password": "Wachtwoord", "quotas": "Quota", "reset_pw_for": "Nieuw wachtwoord voor", @@ -1148,7 +1148,7 @@ "plugins_install_hint": "Upload een plug-inbundel (.zip).", "plugins_retention": "Logboekbehoud", "plugins_retention_max": "Maximale grootte (MB)", - "plugins_upload": "Upload .zip", + "plugins_upload": ".zip uploaden", "quota_for": "Quotum voor", "registration": "Registratie", "registration_disabled_warning": "Openbare registratie is uitgeschakeld. Alleen beheerders kunnen nieuwe accounts aanmaken.", @@ -1164,10 +1164,9 @@ "storage_dedup": "Dedup-ratio", "storage_preset": "Voorinstelling", "storage_size": "Opgeslagen", - "storage_test": "Test", + "storage_test": "Testen", "storage_backend_audit": "Consistentie van de backend", - "storage_backend_audit_triggered": "backend_consistency geactiveerd voor `{{name}}` — bekijk het op het tabblad Vacatures.", - "time_day_ago": "{{n}} d ago", + "time_day_ago": "{{n}} d geleden", "time_hour_ago": "{{n}} uur geleden", "time_just_now": "zojuist", "unchanged": "Laat dit leeg om actueel te blijven", @@ -1181,9 +1180,6 @@ "gen_key": "Sleutel genereren", "gen_key_warning": "Bewaar deze sleutel veilig. Als het verloren gaat, zijn de gecodeerde gegevens onherstelbaar verloren.", "jobs": { - "tab": "Banen", - "title": "Banen", - "hint": "Deze rubriek gaat over interne klussen: periodieke + on-demand klussen. Consistentiecontroles kunnen op elk moment veilig worden uitgevoerd: ze zijn alleen-lezen.", "run_all_consistency": "Voer alle consistentiecontroles uit", "run_deep": "Ren diep", "run_deep_hint": "Voert ook langzame varianten uit (blob re-hash, bitrot-detectie).", @@ -1215,7 +1211,6 @@ "findings_title": "Bevindingen", "no_runs": "Nog geen runs.", "no_findings": "Geen bevindingen - schone run.", - "none_registered": "Geen vacatures geregistreerd.", "on_demand": "op aanvraag", "every_h": "elke {{n}} uur", "every_min": "elke {{n}} min", @@ -1224,12 +1219,11 @@ "outcome_err": "fout", "outcome_issues": "problemen", "outcome_notices": "mededelingen", - "n_findings": "{{n}} findings", + "n_findings": "{{n}} bevindingen", "n_notices": "{{n}} mededelingen", "notices_present_tooltip": "Informatieve bevindingen — geen actie vereist. Vouw uit voor details.", "purge": "Oude runs opruimen", "purge_hint": "Verwijder de voltooide en mislukte rungeschiedenis die ouder is dan de gekozen bewaarperiode. De bevindingen dalen naarmate hun ouders rennen. Niet-terminale runs blijven altijd behouden.", - "purge_title": "Oude taakgeschiedenis opschonen", "purge_body": "Verwijder de voltooide en mislukte rungeschiedenis die ouder is dan het gekozen aantal dagen. De bevindingen dalen naarmate hun ouders rennen. Niet-terminale runs (actief, gepauzeerd, opgevraagde annulering) blijven altijd behouden.", "purge_days_label": "Retentie (dagen)", "purge_confirm": "Zuiveren", @@ -1239,17 +1233,22 @@ "just_now": "zojuist", "n_min_ago": "{{n}} min geleden", "n_h_ago": "{{n}} uur geleden", - "n_d_ago": "{{n}} d ago", + "n_d_ago": "{{n}} d geleden", "triggered_ok": "{{name}} succesvol geactiveerd", "triggered_err": "{{name}} mislukt: {{message}}", "cancel_requested": "Annuleren aangevraagd — {{name}} pauzeert bij de volgende veilige grens", "cancel_noop": "Er valt niets te annuleren — {{name}} is niet actief", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — bij benadering, backend-proxy)", + "tab": "Achtergrondtaken", + "title": "Achtergrondtaken", + "hint": "Deze sectie betreft interne achtergrondtaken: periodieke en on-demand taken. Consistentiecontroles kunnen op elk moment veilig worden uitgevoerd — ze zijn alleen-lezen.", + "none_registered": "Geen achtergrondtaken geregistreerd.", + "purge_title": "Oude taakgeschiedenis wissen" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "Testen / ontdekken", + "reextract_done": "{{processed}}/{{total}} verwerkt · {{failed}} mislukt", "sessions": { "filter_user": "Gebruiker (UUID)", "include_revoked": "Ingetrokken / verlopen tonen", @@ -1281,7 +1280,8 @@ "device": "Apparaat", "unknown": "Onbekend" } - } + }, + "storage_backend_audit_triggered": "backend_consistency geactiveerd voor `{{name}}` — volg het op het tabblad Achtergrondtaken." }, "profile": { "page_title": "Profiel", @@ -1359,14 +1359,14 @@ "error_revoke": "Intrekken mislukt", "edit_photo": "Foto bewerken", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", - "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_tab_upload": "Uploaden", + "photo_url_placeholder": "https://voorbeeld.nl/foto.jpg", + "photo_url_hint": "https://, http:// of data:image/…;base64,… geaccepteerd", "photo_choose_file": "Kies een foto (PNG, JPEG, WebP)", "photo_resize_note": "Afbeeldingen groter dan 512 × 512 px worden automatisch aangepast.", "photo_save": "Foto opslaan", "photo_remove": "Foto verwijderen", - "photo_cancel": "Cancel", + "photo_cancel": "Annuleren", "photo_save_failed": "Kan foto niet opslaan", "photo_no_file": "Selecteer eerst een bestand", "photo_managed_by_oidc": "Foto beheerd door uw identiteitsprovider.", @@ -1394,7 +1394,7 @@ "uploading": "Bezig met uploaden...", "files": "bestanden", "complete": "{{count}} / {{total}} geüpload", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} bestanden" }, "storage_quota_exceeded": "Opslagquotum overschreden", "sharedwithme": { @@ -1495,12 +1495,12 @@ "passwordLinks": "Met wachtwoord beveiligde koppelingen" }, "sort": { - "asc": "ascending", - "desc": "descending", + "asc": "oplopend", + "desc": "aflopend", "direction": "Sorteer richting" }, "notif": { - "errorTitle": "Error", + "errorTitle": "Fout", "searchError": "Fout bij het uitvoeren van de zoekopdracht", "cleanupCompleted": "Opruimen voltooid", "cleanupCompletedBody": "De geschiedenis van recente bestanden is gewist", @@ -1578,13 +1578,13 @@ "installers": "Installateurs", "markdown": "Afwaardering", "presentations": "Presentaties", - "spreadsheets": "Spreadsheets", + "spreadsheets": "Werkbladen", "videos": "Video's" }, "common": { "add": "Toevoegen", "cancel": "Annuleren", - "clear": "Clear", + "clear": "Wissen", "close": "Sluiten", "confirm": "Bevestigen", "copy": "Kopiëren", @@ -1596,7 +1596,7 @@ "next": "Volgende", "no": "Nee", "previous": "Vorige", - "remove": "Remove", + "remove": "Verwijderen", "rename": "Hernoemen", "save": "Opslaan", "search": "Zoeken", @@ -1773,7 +1773,7 @@ "not_found_title": "Schijf niet gevonden", "policies": "Regels", "policies_help": "Regels die een OxiCloud-beheerder voor deze schijf heeft ingesteld. Alleen beheerders kunnen ze wijzigen; je ziet de huidige status.", - "quota": "Quota", + "quota": "Quotum", "rename": "Schijf hernoemen", "role": { "commenter": "Reageerder", diff --git a/frontend/static/locales/pl.json b/frontend/static/locales/pl.json index 13d46464..108a37d7 100644 --- a/frontend/static/locales/pl.json +++ b/frontend/static/locales/pl.json @@ -81,7 +81,7 @@ "view_monthly": "Miesiąc", "view_yearly": "Rok", "group_by": "Grupuj według", - "confirm_delete": "Move {{n}} photos to trash?", + "confirm_delete": "Przenieść {{n}} zdjęć do kosza?", "confirm_delete_one": "Usunąć {{name}}?", "delete": "Usuń zdjęcia", "empty": "Nie ma jeszcze zdjęć.", @@ -214,10 +214,10 @@ "delete_permanently": "Usuń trwale", "empty_trash": "Opróżnij kosz", "open_parent_folder": "Przejdź do folderu nadrzędnego", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "Dodaj", + "apply": "Zastosuj", + "clear": "Wyczyść", + "remove": "Usuń" }, "user_menu": { "appearance": "Wygląd", @@ -265,8 +265,8 @@ "linkNamePlaceholder": "Nazwa linku (opcjonalnie)", "newLink": "Nowe łącze", "noExpiry": "Brak wygaśnięcia", - "pending": "Pending", - "people": "People", + "pending": "Oczekujące", + "people": "Osoby", "publicLinks": "Linki publiczne", "role": { "canEdit": "Można edytować", @@ -307,9 +307,9 @@ "none": "Nie ma jeszcze żadnych linków publicznych.", "notify": { "coalesced": "{{n}} został już niedawno powiadomiony.", - "rateLimited": "{{n}} hit the rate limit — try later.", + "rateLimited": "{{n}} osiągnęło limit — spróbuj później.", "sent": "{{n}} powiadomiony e-mailem.", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} pominięte (brak e-maila / rezygnacja)." }, "passwordPrompt": "Ustaw hasło:", "passwordPrompt_clear": "Nowe hasło (puste do usunięcia):", @@ -514,7 +514,7 @@ "upload_failed": "Przesyłanie nie powiodło się", "uploading": "Przesyłanie…", "uploading_file": "Przesyłanie {{name}}…", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_n": "Przesyłanie {{done}}/{{total}} plików…" }, "dialogs": { "rename_folder": "Zmień nazwę folderu", @@ -845,7 +845,7 @@ "deactivate_title": "Dezaktywuj", "activate_title": "Aktywuj", "delete_title": "Usuń", - "sso_title": "Single Sign-On (OIDC / SSO)", + "sso_title": "Logowanie jednokrotne (OIDC / SSO)", "enable_sso": "Włącz uwierzytelnianie SSO", "provider_name": "Nazwa dostawcy", "issuer_url": "URL wystawcy", @@ -1124,7 +1124,7 @@ "logs_time": "Czas", "mig_eta": "~{{min}} pozostała minuta", "mig_failed": "{{n}} nieudane plamy", - "mig_start": "Start", + "mig_start": "Uruchom", "mig_verify": "Sprawdź integralność", "mig_verify_mismatch": "{{n}} niedopasowanie rozmiaru", "mig_verify_missing": "{{n}} brak", @@ -1164,11 +1164,10 @@ "storage_dedup": "Współczynnik deduplikacji", "storage_preset": "Wstępnie ustawione", "storage_size": "Przechowywane", - "storage_test": "Test", + "storage_test": "Testuj", "storage_backend_audit": "Spójność backendu", - "storage_backend_audit_triggered": "backend_consistency uruchomione dla `{{name}}` — obejrzyj na karcie Zadania.", - "time_day_ago": "{{n}} d ago", - "time_hour_ago": "{{n}} h ago", + "time_day_ago": "{{n}} dni temu", + "time_hour_ago": "{{n}} godz temu", "time_just_now": "właśnie", "unchanged": "Pozostaw puste, aby zachować aktualność", "running": "Działanie…", @@ -1181,9 +1180,6 @@ "gen_key": "Wygeneruj klucz", "gen_key_warning": "Przechowuj ten klucz w bezpiecznym miejscu. W przypadku jego utraty zaszyfrowane dane zostaną utracone bezpowrotnie.", "jobs": { - "tab": "Praca", - "title": "Praca", - "hint": "Ta sekcja dotyczy zleceń wewnętrznych: okresowych + na żądanie. Kontrole spójności można bezpiecznie przeprowadzić w dowolnym momencie — są one tylko do odczytu.", "run_all_consistency": "Uruchom wszystkie kontrole spójności", "run_deep": "Biegnij głęboko", "run_deep_hint": "Uruchamia również powolne warianty (ponowne mieszanie obiektów blob, wykrywanie bitrot).", @@ -1215,11 +1211,10 @@ "findings_title": "Ustalenia", "no_runs": "Nie ma jeszcze żadnych biegów.", "no_findings": "Brak wyników – czysty przebieg.", - "none_registered": "Brak zarejestrowanych ofert pracy.", "on_demand": "na żądanie", "every_h": "co {{n}} godz", "every_min": "co {{n}} min", - "every_sec": "every {{n}} s", + "every_sec": "co {{n}} s", "outcome_ok": "OK", "outcome_err": "błądzić", "outcome_issues": "kwestie", @@ -1229,7 +1224,6 @@ "notices_present_tooltip": "Ustalenia informacyjne — nie są wymagane żadne działania. Rozwiń, aby poznać szczegóły.", "purge": "Usuń stare przebiegi", "purge_hint": "Usuń historię zakończonych i nieudanych uruchomień starszą niż wybrane okno przechowywania. Wyniki spadają wraz z przebiegami nadrzędnymi. Przebiegi inne niż terminale są zawsze zachowywane.", - "purge_title": "Usuń starą historię zadań", "purge_body": "Usuń historię zakończonych i nieudanych uruchomień starszą niż wybrana liczba dni. Wyniki spadają wraz z przebiegami nadrzędnymi. Uruchomienia inne niż terminalowe (uruchomione, wstrzymane, z żądaniem anulowania) są zawsze zachowywane.", "purge_days_label": "Przechowywanie (dni)", "purge_confirm": "Oczyszczać", @@ -1237,19 +1231,24 @@ "state_running": "działanie", "never": "nigdy", "just_now": "właśnie", - "n_min_ago": "{{n}} min ago", - "n_h_ago": "{{n}} h ago", - "n_d_ago": "{{n}} d ago", + "n_min_ago": "{{n}} min temu", + "n_h_ago": "{{n}} godz temu", + "n_d_ago": "{{n}} dni temu", "triggered_ok": "{{name}} uruchomiono pomyślnie", "triggered_err": "{{name}} nie powiodło się: {{message}}", "cancel_requested": "Żądano anulowania — {{name}} zatrzyma się przy następnej bezpiecznej granicy", "cancel_noop": "Nie ma nic do anulowania — {{name}} nie działa", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — przybliżone, proxy backendu)", + "tab": "Zadania w tle", + "title": "Zadania w tle", + "hint": "Ta sekcja dotyczy wewnętrznych zadań w tle: zadań okresowych i na żądanie. Kontrole spójności można bezpiecznie uruchamiać w dowolnym momencie — są tylko do odczytu.", + "none_registered": "Brak zarejestrowanych zadań w tle.", + "purge_title": "Usuń starą historię zadań" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "Testuj / wykryj", + "reextract_done": "{{processed}}/{{total}} przetworzono · {{failed}} nieudane", "sessions": { "filter_user": "Użytkownik (UUID)", "include_revoked": "Uwzględnij unieważnione / wygasłe", @@ -1259,7 +1258,7 @@ "col_created": "Utworzono", "col_expires": "Wygasa", "col_ip": "IP", - "col_user_agent": "User agent", + "col_user_agent": "Agent użytkownika", "col_bound": "Powiązana", "col_status": "Stan", "current_tooltip": "To sesja, której obecnie używasz — unieważnienie jej wyloguje Cię.", @@ -1281,7 +1280,8 @@ "device": "Urządzenie", "unknown": "Nieznane" } - } + }, + "storage_backend_audit_triggered": "backend_consistency uruchomiony dla `{{name}}` — obserwuj to na karcie Zadania w tle." }, "profile": { "page_title": "Profil", @@ -1359,14 +1359,14 @@ "error_revoke": "Nie udało się unieważnić hasła aplikacji", "edit_photo": "Edytuj zdjęcie", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", - "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_tab_upload": "Wyślij", + "photo_url_placeholder": "https://przyklad.pl/zdjecie.jpg", + "photo_url_hint": "https://, http:// lub data:image/…;base64,… akceptowane", "photo_choose_file": "Wybierz zdjęcie (PNG, JPEG, WebP)", "photo_resize_note": "Rozmiar obrazów większych niż 512 × 512 pikseli jest zmieniany automatycznie.", "photo_save": "Zapisz zdjęcie", "photo_remove": "Usuń zdjęcie", - "photo_cancel": "Cancel", + "photo_cancel": "Anuluj", "photo_save_failed": "Nie udało się zapisać zdjęcia", "photo_no_file": "Najpierw wybierz plik", "photo_managed_by_oidc": "Zdjęcie zarządzane przez Twojego dostawcę tożsamości.", @@ -1394,7 +1394,7 @@ "uploading": "Przesyłanie...", "files": "plików", "complete": "{{count}} / {{total}} przesłano", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} plików" }, "storage_quota_exceeded": "Przekroczono limit pamięci masowej", "sharedwithme": { @@ -1495,12 +1495,12 @@ "passwordLinks": "Linki chronione hasłem" }, "sort": { - "asc": "ascending", - "desc": "descending", + "asc": "rosnąco", + "desc": "malejąco", "direction": "Kierunek sortowania" }, "notif": { - "errorTitle": "Error", + "errorTitle": "Błąd", "searchError": "Błąd podczas wyszukiwania", "cleanupCompleted": "Czyszczenie zakończone", "cleanupCompletedBody": "Historia ostatnich plików została wyczyszczona", @@ -1584,7 +1584,7 @@ "common": { "add": "Dodaj", "cancel": "Anuluj", - "clear": "Clear", + "clear": "Wyczyść", "close": "Zamknij", "confirm": "Potwierdź", "copy": "Kopiuj", diff --git a/frontend/static/locales/pt.json b/frontend/static/locales/pt.json index 2a557588..f93d6292 100644 --- a/frontend/static/locales/pt.json +++ b/frontend/static/locales/pt.json @@ -81,7 +81,7 @@ "view_monthly": "Mês", "view_yearly": "Ano", "group_by": "Agrupar por", - "confirm_delete": "Move {{n}} photos to trash?", + "confirm_delete": "Mover {{n}} fotos para a lixeira?", "confirm_delete_one": "Excluir {{name}}?", "delete": "Excluir fotos", "empty": "Ainda não há fotos.", @@ -153,14 +153,14 @@ "manage_shares": "Gerenciar compartilhamentos", "no_shares": "Ainda não há compartilhamentos", "playback_error": "Falha na reprodução", - "private": "Private", - "public": "Public", + "private": "Privado", + "public": "Público", "read_only": "Somente leitura", - "remove": "Remove", + "remove": "Remover", "remove_share": "Remover compartilhamento", "set_cover": "Definir capa", "share_with_user": "ID de usuário ou e-mail", - "toggle_public": "Visibility", + "toggle_public": "Visibilidade", "track_removed": "Faixa removida", "prev": "Anterior", "add_selected": "Adicionar selecionado", @@ -214,10 +214,10 @@ "delete_permanently": "Excluir permanentemente", "empty_trash": "Esvaziar lixeira", "open_parent_folder": "Ir para a pasta pai", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "Adicionar", + "apply": "Aplicar", + "clear": "Limpar", + "remove": "Remover" }, "user_menu": { "appearance": "Aparência", @@ -265,8 +265,8 @@ "linkNamePlaceholder": "Nome do link (opcional)", "newLink": "Novo link", "noExpiry": "Sem vencimento", - "pending": "Pending", - "people": "People", + "pending": "Pendente", + "people": "Pessoas", "publicLinks": "Links públicos", "role": { "canEdit": "Pode editar", @@ -284,7 +284,7 @@ "folders": "Pastas", "link_name": "Nome do link (opcional)", "notifyByEmail": "Notificar por e-mail", - "revoke": "Remove", + "revoke": "Remover", "role_label": "Função", "col_shared_by": "Compartilhado por", "col_shared": "Compartilhado", @@ -309,7 +309,7 @@ "coalesced": "{{n}} já notificado recentemente.", "rateLimited": "{{n}} atingiu o limite de taxa – tente mais tarde.", "sent": "{{n}} notificado por e-mail.", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} ignorados (sem e-mail / cancelados)." }, "passwordPrompt": "Defina uma senha:", "passwordPrompt_clear": "Nova senha (em branco para remover):", @@ -514,7 +514,7 @@ "upload_failed": "Falha no upload", "uploading": "Fazendo upload…", "uploading_file": "Carregando {{name}}…", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_n": "Enviando {{done}}/{{total}} arquivos…" }, "dialogs": { "rename_folder": "Renomear pasta", @@ -771,7 +771,7 @@ "item_deleted_permanently": "Item excluído permanentemente", "trash_emptied": "Lixeira esvaziada com sucesso", "empty": "Sem notificações", - "title": "Notifications", + "title": "Notificações", "link_created": "Link criado", "share_success": "Link de partilha criado com sucesso", "upload_files_section_title": "Upload não disponível aqui", @@ -821,7 +821,7 @@ "col_user": "Usuário", "col_role": "Função", "col_auth": "Auth", - "col_status": "Status", + "col_status": "Estado", "col_storage": "Armazenamento", "col_last_login": "Último Login", "col_actions": "Ações", @@ -859,7 +859,7 @@ "callback_url": "URL de Callback", "callback_url_hint": "(registrar no seu IdP)", "advanced_settings": "Configurações Avançadas", - "scopes": "Scopes", + "scopes": "Escopos", "auto_provision": "Provisionar usuários automaticamente", "admin_groups": "Grupos de Admin", "admin_groups_hint": "Nomes de grupos OIDC separados por vírgula", @@ -978,7 +978,7 @@ "oidc_client_id": "ID do cliente", "oidc_disable_pw": "Desabilitar login por senha (apenas OIDC)", "oidc_issuer": "URL do Emissor", - "oidc_scopes": "Scopes", + "oidc_scopes": "Escopos", "password": "Senha", "quotas": "Cotas", "reset_pw_for": "Nova senha para", @@ -987,7 +987,7 @@ "smtp_send": "Enviar", "smtp_test": "Enviar e-mail de teste", "smtp_user_state": "Auth", - "status": "Status", + "status": "Estado", "storage": "Armazenamento", "storage_endpoint": "URL do endpoint", "storage_tab": "Armazenamento", @@ -1071,7 +1071,7 @@ "plugins_col_id": "EU IA", "plugins_col_version": "Versão", "plugins_col_events": "Eventos", - "plugins_col_status": "Status", + "plugins_col_status": "Estado", "plugins_col_actions": "Ações", "plugins_loading": "Carregando plug-ins…", "plugins_none": "Nenhum plug-in instalado.", @@ -1166,7 +1166,6 @@ "storage_size": "Armazenado", "storage_test": "Teste", "storage_backend_audit": "Consistência de back-end", - "storage_backend_audit_triggered": "backend_consistency acionado para `{{name}}` — assista na aba Jobs.", "time_day_ago": "{{n}} dias atrás", "time_hour_ago": "Há {{n}} horas", "time_just_now": "agora mesmo", @@ -1181,9 +1180,6 @@ "gen_key": "Gerar chave", "gen_key_warning": "Armazene esta chave com segurança. Se for perdido, os dados criptografados serão perdidos irrecuperavelmente.", "jobs": { - "tab": "Empregos", - "title": "Empregos", - "hint": "Esta seção diz respeito a trabalhos internos: trabalhos periódicos + sob demanda. As verificações de consistência podem ser executadas com segurança a qualquer momento – elas são somente leitura.", "run_all_consistency": "Execute todas as verificações de consistência", "run_deep": "Corra fundo", "run_deep_hint": "Também executa variantes lentas (re-hash de blob, detecção de bitrot).", @@ -1194,7 +1190,7 @@ "col_state": "Estado", "col_actions": "Ações", "col_started_at": "Iniciado", - "col_status": "Status", + "col_status": "Estado", "col_duration": "Duração", "col_scanned": "Digitalizado", "col_progress": "Progresso", @@ -1215,7 +1211,6 @@ "findings_title": "Descobertas", "no_runs": "Ainda não há corridas.", "no_findings": "Nenhuma descoberta – execução limpa.", - "none_registered": "Nenhuma vaga cadastrada.", "on_demand": "Sob demanda", "every_h": "a cada {{n}} h", "every_min": "a cada {{n}}min", @@ -1229,7 +1224,6 @@ "notices_present_tooltip": "Resultados informativos — nenhuma ação é necessária. Expanda para obter detalhes.", "purge": "Limpar execuções antigas", "purge_hint": "Exclua o histórico de execução concluída e com falha anterior à janela de retenção escolhida. As descobertas diminuem com as execuções dos pais. As execuções não terminais são sempre preservadas.", - "purge_title": "Limpar histórico de empregos antigo", "purge_body": "Exclua o histórico de execução concluída e com falha anterior ao número de dias escolhido. As descobertas diminuem com as execuções dos pais. As execuções não terminais (em execução, pausadas, solicitadas por cancelamento) são sempre preservadas.", "purge_days_label": "Retenção (dias)", "purge_confirm": "Purga", @@ -1245,11 +1239,16 @@ "cancel_requested": "Cancelar solicitado — {{name}} fará uma pausa no próximo limite seguro", "cancel_noop": "Nada para cancelar — {{name}} não está em execução", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — aproximado, proxy do backend)", + "tab": "Tarefas em segundo plano", + "title": "Tarefas em segundo plano", + "hint": "Esta seção diz respeito às tarefas internas em segundo plano: tarefas periódicas e sob demanda. As verificações de consistência são seguras para executar a qualquer momento — são somente leitura.", + "none_registered": "Nenhuma tarefa em segundo plano registrada.", + "purge_title": "Limpar histórico de tarefas antigas" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "Testar / descobrir", + "reextract_done": "{{processed}}/{{total}} processados · {{failed}} falharam", "sessions": { "filter_user": "Utilizador (UUID)", "include_revoked": "Incluir revogadas / expiradas", @@ -1281,7 +1280,8 @@ "device": "Dispositivo", "unknown": "Desconhecido" } - } + }, + "storage_backend_audit_triggered": "backend_consistency acionado para `{{name}}` — acompanhe-o na guia Tarefas em segundo plano." }, "profile": { "page_title": "Perfil", @@ -1313,7 +1313,7 @@ "col_label": "Rótulo", "col_created": "Criado", "col_last_used": "Último uso", - "col_status": "Status", + "col_status": "Estado", "active": "Ativa", "revoked": "Revogada", "revoke_title": "Revogar", @@ -1359,14 +1359,14 @@ "error_revoke": "Falha ao revogar", "edit_photo": "Editar foto", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", - "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_tab_upload": "Enviar", + "photo_url_placeholder": "https://exemplo.com/foto.jpg", + "photo_url_hint": "https://, http:// ou data:image/…;base64,… aceito", "photo_choose_file": "Escolha uma foto (PNG, JPEG, WebP)", "photo_resize_note": "Imagens maiores que 512 × 512 px são redimensionadas automaticamente.", "photo_save": "Salvar foto", "photo_remove": "Remover foto", - "photo_cancel": "Cancel", + "photo_cancel": "Cancelar", "photo_save_failed": "Falha ao salvar a foto", "photo_no_file": "Selecione um arquivo primeiro", "photo_managed_by_oidc": "Foto gerenciada pelo seu provedor de identidade.", @@ -1394,7 +1394,7 @@ "uploading": "A carregar...", "files": "ficheiros", "complete": "{{count}} / {{total}} carregados", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} arquivos" }, "storage_quota_exceeded": "Cota de armazenamento excedida", "sharedwithme": { @@ -1500,7 +1500,7 @@ "direction": "Direção de classificação" }, "notif": { - "errorTitle": "Error", + "errorTitle": "Erro", "searchError": "Erro ao realizar a pesquisa", "cleanupCompleted": "Limpeza concluída", "cleanupCompletedBody": "O histórico de arquivos recentes foi apagado", @@ -1584,7 +1584,7 @@ "common": { "add": "Adicionar", "cancel": "Cancelar", - "clear": "Clear", + "clear": "Limpar", "close": "Fechar", "confirm": "Confirmar", "copy": "Copiar", @@ -1596,7 +1596,7 @@ "next": "Próximo", "no": "Não", "previous": "Anterior", - "remove": "Remove", + "remove": "Remover", "rename": "Renomear", "save": "Salvar", "search": "Pesquisar", @@ -1773,7 +1773,7 @@ "not_found_title": "Unidade não encontrada", "policies": "Regras", "policies_help": "Regras que um administrador do OxiCloud definiu para esta unidade. Apenas administradores podem alterá-las; está a ver o estado atual.", - "quota": "Quota", + "quota": "Cota", "rename": "Renomear unidade", "role": { "commenter": "Comentador", diff --git a/frontend/static/locales/ru.json b/frontend/static/locales/ru.json index 2b9197b6..d68efc52 100644 --- a/frontend/static/locales/ru.json +++ b/frontend/static/locales/ru.json @@ -153,14 +153,14 @@ "manage_shares": "Управление общими ресурсами", "no_shares": "Акций пока нет", "playback_error": "Воспроизведение не удалось", - "private": "Private", - "public": "Public", + "private": "Частный", + "public": "Публичный", "read_only": "Только чтение", - "remove": "Remove", + "remove": "Удалить", "remove_share": "Удалить общий доступ", "set_cover": "Установить крышку", "share_with_user": "Идентификатор пользователя или адрес электронной почты", - "toggle_public": "Visibility", + "toggle_public": "Видимость", "track_removed": "Трек удален.", "prev": "Предыдущий", "add_selected": "Добавить выбранное", @@ -214,10 +214,10 @@ "delete_permanently": "Удалить навсегда", "empty_trash": "Очистить корзину", "open_parent_folder": "Перейти в родительскую папку", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "Добавить", + "apply": "Применить", + "clear": "Очистить", + "remove": "Удалить" }, "user_menu": { "appearance": "Оформление", @@ -265,8 +265,8 @@ "linkNamePlaceholder": "Название ссылки (необязательно)", "newLink": "Новая ссылка", "noExpiry": "Нет срока действия", - "pending": "Pending", - "people": "People", + "pending": "В ожидании", + "people": "Люди", "publicLinks": "Публичные ссылки", "role": { "canEdit": "Можно редактировать", @@ -284,7 +284,7 @@ "folders": "Папки", "link_name": "Название ссылки (необязательно)", "notifyByEmail": "Уведомить по e-mail", - "revoke": "Remove", + "revoke": "Удалить", "role_label": "Роль", "col_shared_by": "Поделился", "col_shared": "Общий доступ", @@ -309,7 +309,7 @@ "coalesced": "{{n}} уже уведомлен недавно.", "rateLimited": "{{n}} достиг предела скорости — попробуйте позже.", "sent": "{{n}} уведомлено по электронной почте.", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} пропущено (нет e-mail / отписались)." }, "passwordPrompt": "Установите пароль:", "passwordPrompt_clear": "Новый пароль (пусто для удаления):", @@ -514,7 +514,7 @@ "upload_failed": "Загрузка не удалась", "uploading": "Загрузка…", "uploading_file": "Загрузка {{name}}…", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_n": "Загрузка {{done}}/{{total}} файлов…" }, "dialogs": { "rename_folder": "Переименовать папку", @@ -642,7 +642,7 @@ "admin_setup": "Первый запуск?", "setup": "Настроить администратора", "register_title": "Создание аккаунта", - "email": "Email", + "email": "Эл. почта", "email_placeholder": "Введите email", "confirm_password": "Подтвердите пароль", "confirm_password_placeholder": "Подтвердите пароль", @@ -667,7 +667,7 @@ "sso_login_provider": "Войти через {{provider}}", "magicLinkHint": "Нет пароля? Введите ваш email, и мы пришлём вам одноразовую ссылку для входа.", "magicLinkEmailLabel": "Адрес электронной почты", - "magicLinkEmailPlaceholder": "you@example.com", + "magicLinkEmailPlaceholder": "вы@пример.com", "magicLinkSubmit": "Отправить ссылку для входа", "magicLinkSent": "Если для этого адреса существует учётная запись, ссылка для входа отправлена. Проверьте входящие.", "magicLinkUnavailable": "Вход по электронной почте недоступен на этом сервере.", @@ -1166,7 +1166,6 @@ "storage_size": "Хранится", "storage_test": "Тест", "storage_backend_audit": "Согласованность серверной части", - "storage_backend_audit_triggered": "backend_consistency срабатывает для `{{name}}` — смотрите его на вкладке «Задания».", "time_day_ago": "{{n}} дня назад", "time_hour_ago": "{{n}} часа назад", "time_just_now": "прямо сейчас", @@ -1181,9 +1180,6 @@ "gen_key": "Сгенерировать ключ", "gen_key_warning": "Храните этот ключ в надежном месте. Если он утерян, зашифрованные данные теряются безвозвратно.", "jobs": { - "tab": "Вакансии", - "title": "Вакансии", - "hint": "В этом разделе речь идет о внутренних работах: периодические + по требованию. Проверки согласованности можно безопасно запускать в любое время — они доступны только для чтения.", "run_all_consistency": "Запустите все проверки согласованности", "run_deep": "Беги глубоко", "run_deep_hint": "Также выполняются медленные варианты (повторное хэширование больших двоичных объектов, обнаружение битротов).", @@ -1215,7 +1211,6 @@ "findings_title": "Выводы", "no_runs": "Пробегов пока нет.", "no_findings": "Никаких результатов — чистый пробег.", - "none_registered": "Вакансий не зарегистрировано.", "on_demand": "по требованию", "every_h": "каждые {{n}} ч", "every_min": "каждые {{n}} мин.", @@ -1229,7 +1224,6 @@ "notices_present_tooltip": "Информационные выводы — никаких действий не требуется. Разверните для подробностей.", "purge": "Очистка старых пробегов", "purge_hint": "Удалить историю завершенных и неудачных запусков старше выбранного периода хранения. Результаты падают вместе с их родительскими запусками. Нетерминальные прогоны всегда сохраняются.", - "purge_title": "Очистить старую историю работы", "purge_body": "Удалить историю завершенных и неудачных запусков старше выбранного количества дней. Результаты падают вместе с их родительскими запусками. Нетерминальные запуски (выполняющиеся, приостановленные, с запросом на отмену) всегда сохраняются.", "purge_days_label": "Хранение (дней)", "purge_confirm": "Удалять", @@ -1245,11 +1239,16 @@ "cancel_requested": "Отмена запроса — {{name}} приостановится на следующей безопасной границе", "cancel_noop": "Отменять нечего — {{name}} не работает", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — приблизительно, прокси бэкенда)", + "tab": "Фоновые задачи", + "title": "Фоновые задачи", + "hint": "Этот раздел касается внутренних фоновых задач: периодических и по требованию. Проверки согласованности можно безопасно запускать в любое время — они доступны только для чтения.", + "none_registered": "Нет зарегистрированных фоновых задач.", + "purge_title": "Очистить старую историю задач" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "Проверить / обнаружить", + "reextract_done": "{{processed}}/{{total}} обработано · {{failed}} не удалось", "sessions": { "filter_user": "Пользователь (UUID)", "include_revoked": "Включая отозванные / истёкшие", @@ -1281,7 +1280,8 @@ "device": "Устройство", "unknown": "Неизвестно" } - } + }, + "storage_backend_audit_triggered": "backend_consistency запущен для `{{name}}` — следите за ним на вкладке Фоновые задачи." }, "profile": { "page_title": "Профиль", @@ -1359,14 +1359,14 @@ "error_revoke": "Не удалось отозвать", "edit_photo": "Редактировать фотографию", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", - "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_tab_upload": "Загрузить", + "photo_url_placeholder": "https://пример.com/фото.jpg", + "photo_url_hint": "https://, http:// или data:image/…;base64,… принимаются", "photo_choose_file": "Выберите фотографию (PNG, JPEG, WebP)", "photo_resize_note": "Размер изображений размером более 512 × 512 пикселей автоматически изменяется.", "photo_save": "Сохранить фото", "photo_remove": "Удалить фото", - "photo_cancel": "Cancel", + "photo_cancel": "Отмена", "photo_save_failed": "Не удалось сохранить фото.", "photo_no_file": "Пожалуйста, сначала выберите файл", "photo_managed_by_oidc": "Фотография управляется вашим поставщиком удостоверений.", @@ -1394,7 +1394,7 @@ "uploading": "Загрузка...", "files": "файлов", "complete": "{{count}} / {{total}} загружено", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} файлов" }, "storage_quota_exceeded": "Превышена квота хранилища", "sharedwithme": { @@ -1495,12 +1495,12 @@ "passwordLinks": "Ссылки, защищенные паролем" }, "sort": { - "asc": "ascending", - "desc": "descending", + "asc": "по возрастанию", + "desc": "по убыванию", "direction": "Направление сортировки" }, "notif": { - "errorTitle": "Error", + "errorTitle": "Ошибка", "searchError": "Ошибка при выполнении поиска", "cleanupCompleted": "Очистка завершена", "cleanupCompletedBody": "История последних файлов очищена", @@ -1584,7 +1584,7 @@ "common": { "add": "Добавить", "cancel": "Отмена", - "clear": "Clear", + "clear": "Очистить", "close": "Закрыть", "confirm": "Подтвердить", "copy": "Копировать", @@ -1596,7 +1596,7 @@ "next": "Следующий", "no": "Нет", "previous": "Предыдущий", - "remove": "Remove", + "remove": "Удалить", "rename": "Переименовать", "save": "Сохранить", "search": "Найти", diff --git a/frontend/static/locales/zh-TW.json b/frontend/static/locales/zh-TW.json index 35f3be18..2caf006f 100644 --- a/frontend/static/locales/zh-TW.json +++ b/frontend/static/locales/zh-TW.json @@ -86,7 +86,7 @@ "delete": "刪除照片", "empty": "還沒有照片。", "full_resolution": "全解析度", - "trash_partial": "{{ok}} of {{total}} moved to trash.", + "trash_partial": "{{ok}} / {{total}} 項已移至垃圾桶。", "trashed": "{{n}} 移至垃圾箱。", "layout_square": "網格", "layout_justified": "有理有據", @@ -214,10 +214,10 @@ "delete_permanently": "永久刪除", "empty_trash": "清空回收站", "open_parent_folder": "轉到父資料夾", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "新增", + "apply": "套用", + "clear": "清除", + "remove": "移除" }, "user_menu": { "appearance": "外觀", @@ -265,8 +265,8 @@ "linkNamePlaceholder": "連結名稱(可選)", "newLink": "新連結", "noExpiry": "無有效期限", - "pending": "Pending", - "people": "People", + "pending": "待處理", + "people": "人物", "publicLinks": "公共連結", "role": { "canEdit": "可以編輯", @@ -309,7 +309,7 @@ "coalesced": "{{n}} 最近已通知。", "rateLimited": "{{n}} 達到速率限制 - 稍後再試。", "sent": "{{n}} 透過電子郵件通知。", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} 已跳過(無電子郵件 / 已退訂)。" }, "passwordPrompt": "設定密碼:", "passwordPrompt_clear": "新密碼(刪除空白):", @@ -509,12 +509,12 @@ "shared": "共享", "uploaded": "上傳完成", "uploaded_saved": "上傳完成 — {{mb}} MB 已刪除重複數據", - "uploaded_partial": "{{ok}} uploaded, {{failed}} failed", - "uploaded_skipped": "{{ok}} uploaded · {{skipped}} skipped (not regular files)", + "uploaded_partial": "{{ok}} 已上傳,{{failed}} 失敗", + "uploaded_skipped": "{{ok}} 已上傳 · {{skipped}} 已跳過(非常規檔案)", "upload_failed": "上傳失敗", "uploading": "正在上傳...", "uploading_file": "正在上傳{{name}}...", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_n": "正在上傳 {{done}}/{{total}} 個檔案…" }, "dialogs": { "rename_folder": "重新命名資料夾", @@ -667,7 +667,7 @@ "sso_login_provider": "使用 {{provider}} 登入", "magicLinkHint": "沒有密碼?輸入您的電子郵件,我們將向您發送一次性登入連結。", "magicLinkEmailLabel": "電子郵件地址", - "magicLinkEmailPlaceholder": "you@example.com", + "magicLinkEmailPlaceholder": "你@example.com", "magicLinkSubmit": "傳送登入連結", "magicLinkSent": "若該電子郵件存在帳號,登入連結已發送。請查收您的收件匣。", "magicLinkUnavailable": "此伺服器不支援電子郵件登入。", @@ -1087,7 +1087,7 @@ "plugins_logs_col_kind": "種類", "plugins_logs_col_invocation": "祈求", "plugins_logs_col_message": "訊息", - "plugins_logs_showing": "Showing {{from}}–{{to}} of {{total}}", + "plugins_logs_showing": "顯示 {{from}}–{{to}} 共 {{total}}", "available": "可用的", "confirm_delete_plugin": "刪除外掛程式{{name}}?", "disable": "停用", @@ -1102,7 +1102,7 @@ "logs_live": "居住", "logs_message": "訊息", "logs_search": "搜尋…", - "logs_showing": "Showing {{from}}–{{to}} of {{total}}", + "logs_showing": "顯示 {{from}}–{{to}} 共 {{total}}", "logs_time": "時間", "mig_eta": "~{{min}} 剩餘分鐘數", "mig_failed": "{{n}} 失敗的斑點", @@ -1110,7 +1110,7 @@ "mig_verify": "驗證完整性", "mig_verify_mismatch": "{{n}} 尺寸不匹配", "mig_verify_missing": "{{n}} 失蹤", - "mig_verify_summary": "{{checked}} blobs checked, {{total}} total in database", + "mig_verify_summary": "已檢查 {{checked}} 個 blob,資料庫共 {{total}} 個", "migration": "儲存遷移", "new_password": "新密碼", "no_plugins": "沒有安裝插件。", @@ -1148,7 +1148,6 @@ "storage_size": "已儲存", "storage_test": "測試", "storage_backend_audit": "後端一致性", - "storage_backend_audit_triggered": "backend_consistency 因「{{name}}」而觸發 - 在「作業」標籤上觀看。", "time_day_ago": "{{n}} d 前", "time_hour_ago": "{{n}} 小時前", "time_just_now": "現在", @@ -1163,9 +1162,6 @@ "gen_key": "產生金鑰", "gen_key_warning": "安全地保存此密鑰。如果遺失,加密資料將無法恢復。", "jobs": { - "tab": "工作機會", - "title": "工作機會", - "hint": "本節涉及內部作業:定期+按需作業。一致性檢查可以隨時安全運行—它們是唯讀的。", "run_all_consistency": "執行所有一致性檢查", "run_deep": "深入運行", "run_deep_hint": "也運行緩慢的變體(blob 重新哈希、bitrot 檢測)。", @@ -1197,7 +1193,6 @@ "findings_title": "發現", "no_runs": "還沒有運行。", "no_findings": "沒有任何發現——乾淨運行。", - "none_registered": "沒有註冊職位。", "on_demand": "一經請求", "every_h": "每 {{n}} 小時", "every_min": "每 {{n}} 分鐘", @@ -1211,11 +1206,10 @@ "notices_present_tooltip": "資訊性調查結果 — 無需採取任何行動。展開查看詳情。", "purge": "清除舊運行", "purge_hint": "刪除早於所選保留視窗的已完成和失敗的運行歷史記錄。結果隨著父母的跑步而下降。非終端運作始終被保留。", - "purge_title": "清除舊的工作歷史記錄", "purge_body": "刪除早於所選天數的已完成和失敗的運行歷史記錄。結果隨著父母的跑步而下降。非終端運作(運行、暫停、取消請求)始終保留。", "purge_days_label": "保留(天)", "purge_confirm": "清除", - "purge_done": "{{n}} old run(s) purged (retention {{days}} days)", + "purge_done": "已清除 {{n}} 次舊執行(保留 {{days}} 天)", "state_running": "跑步", "never": "絕不", "just_now": "現在", @@ -1223,15 +1217,20 @@ "n_h_ago": "{{n}} 小時前", "n_d_ago": "{{n}} d 前", "triggered_ok": "{{name}} 觸發成功", - "triggered_err": "{{name}} failed: {{message}}", + "triggered_err": "{{name}} 失敗:{{message}}", "cancel_requested": "已要求取消 — {{name}} 將在下一個安全邊界處暫停", "cancel_noop": "沒有可取消的內容 — {{name}} 未執行", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — 近似值,後端代理)", + "tab": "背景工作", + "title": "背景工作", + "hint": "本節涉及內部背景工作:定期和按需工作。一致性檢查隨時可以安全執行 — 它們是唯讀的。", + "none_registered": "未註冊背景工作。", + "purge_title": "清除舊工作歷史" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "測試 / 探索", + "reextract_done": "{{processed}}/{{total}} 已處理 · {{failed}} 失敗", "sessions": { "filter_user": "使用者 (UUID)", "include_revoked": "包含已撤銷 / 已過期", @@ -1263,7 +1262,8 @@ "device": "裝置", "unknown": "未知" } - } + }, + "storage_backend_audit_triggered": "backend_consistency 已為 `{{name}}` 觸發 — 在背景工作標籤頁查看。" }, "profile": { "page_title": "個人資料", @@ -1341,14 +1341,14 @@ "error_revoke": "撤銷失敗", "edit_photo": "編輯照片", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", + "photo_tab_upload": "上傳", "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_url_hint": "接受 https://、http:// 或 data:image/…;base64,…", "photo_choose_file": "選擇一張照片(PNG、JPEG、WebP)", "photo_resize_note": "大於 512 × 512 像素的影像會自動調整大小。", "photo_save": "保存照片", "photo_remove": "刪除照片", - "photo_cancel": "Cancel", + "photo_cancel": "取消", "photo_save_failed": "保存照片失敗", "photo_no_file": "請先選擇一個文件", "photo_managed_by_oidc": "由您的身分提供者管理的照片。", @@ -1394,7 +1394,7 @@ "uploading": "正在上傳...", "files": "個檔案", "complete": "已上傳 {{count}} / {{total}}", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} 個檔案" }, "storage_quota_exceeded": "儲存配額已超限", "sharedwithme": { @@ -1439,7 +1439,7 @@ "create_dialog_title": "新群組", "edit_dialog_title": "重新命名群組", "name_label": "名稱", - "name_placeholder": "engineering", + "name_placeholder": "工程", "description_label": "描述(選填)", "members_section": "成員", "add_member_placeholder": "新增使用者或群組…", @@ -1495,25 +1495,25 @@ "passwordLinks": "受密碼保護的連結" }, "sort": { - "asc": "ascending", - "desc": "descending", + "asc": "升序", + "desc": "降序", "direction": "排序方向" }, "notif": { - "errorTitle": "Error", + "errorTitle": "錯誤", "searchError": "執行搜尋時出錯", "cleanupCompleted": "清理完成", "cleanupCompletedBody": "最近的文件歷史記錄已被清除", "batchCopy": "批量複製", - "batchCopyBody": "{{success}} copied, {{errors}} failed", + "batchCopyBody": "{{success}} 已複製,{{errors}} 失敗", "itemsCopied": "複製的項目", "itemsCopiedBody": "{{count}} 專案已成功複製", "batchMove": "大量移動", - "batchMoveBody": "{{success}} moved, {{errors}} failed", + "batchMoveBody": "{{success}} 已移動,{{errors}} 失敗", "itemsMoved": "物品已移動", "itemsMovedBody": "{{count}} 物品移動成功", "batchDelete": "大量刪除", - "batchDeleteBody": "{{success}} moved to trash, {{errors}} failed", + "batchDeleteBody": "{{success}} 已移至垃圾桶,{{errors}} 失敗", "movedToTrash": "已移至垃圾箱", "movedToTrashBody": "{{count}} 物品已移至垃圾箱", "trashItemsError": "無法將項目移至垃圾箱", @@ -1584,7 +1584,7 @@ "common": { "add": "新增", "cancel": "取消", - "clear": "Clear", + "clear": "清除", "close": "關閉", "confirm": "確認", "copy": "複製", diff --git a/frontend/static/locales/zh.json b/frontend/static/locales/zh.json index 335f32c4..d9406a99 100644 --- a/frontend/static/locales/zh.json +++ b/frontend/static/locales/zh.json @@ -86,7 +86,7 @@ "delete": "删除照片", "empty": "还没有照片。", "full_resolution": "全分辨率", - "trash_partial": "{{ok}} of {{total}} moved to trash.", + "trash_partial": "{{ok}} / {{total}} 项已移至回收站。", "trashed": "{{n}} 移至垃圾箱。", "layout_square": "网格", "layout_justified": "有理有据", @@ -153,14 +153,14 @@ "manage_shares": "管理共享", "no_shares": "还没有分享", "playback_error": "播放失败", - "private": "Private", - "public": "Public", + "private": "私有", + "public": "公开", "read_only": "只读", - "remove": "Remove", + "remove": "移除", "remove_share": "删除共享", "set_cover": "设置封面", "share_with_user": "用户 ID 或电子邮件", - "toggle_public": "Visibility", + "toggle_public": "可见性", "track_removed": "轨道已移除", "prev": "上一首", "add_selected": "添加选定的", @@ -214,10 +214,10 @@ "delete_permanently": "永久删除", "empty_trash": "清空垃圾箱", "open_parent_folder": "转到父文件夹", - "add": "Add", - "apply": "Apply", - "clear": "Clear", - "remove": "Remove" + "add": "添加", + "apply": "应用", + "clear": "清除", + "remove": "移除" }, "user_menu": { "appearance": "外观", @@ -265,8 +265,8 @@ "linkNamePlaceholder": "链接名称(可选)", "newLink": "新链接", "noExpiry": "无有效期", - "pending": "Pending", - "people": "People", + "pending": "待处理", + "people": "人物", "publicLinks": "公共链接", "role": { "canEdit": "可以编辑", @@ -284,7 +284,7 @@ "folders": "文件夹", "link_name": "链接名称(可选)", "notifyByEmail": "通过邮件通知", - "revoke": "Remove", + "revoke": "移除", "role_label": "角色", "col_shared_by": "共享者", "col_shared": "共享日期", @@ -309,7 +309,7 @@ "coalesced": "{{n}} 最近已通知。", "rateLimited": "{{n}} 达到速率限制 - 稍后再试。", "sent": "{{n}} 通过电子邮件通知。", - "skipped": "{{n}} skipped (no email / opted out)." + "skipped": "{{n}} 已跳过(无邮箱 / 已退订)。" }, "passwordPrompt": "设置密码:", "passwordPrompt_clear": "新密码(删除空白):", @@ -378,43 +378,43 @@ "notificationSent": "通知已成功发送", "notificationFailed": "发送通知失败", "shared_backToFiles": "返回文件", - "shared_colActions": "Actions", + "shared_colActions": "操作", "shared_colDateShared": "共享日期", - "shared_colExpiration": "Expiration", - "shared_colName": "Name", - "shared_colPassword": "Password", - "shared_colPermissions": "Permissions", - "shared_colType": "Type", + "shared_colExpiration": "过期时间", + "shared_colName": "名称", + "shared_colPassword": "密码", + "shared_colPermissions": "权限", + "shared_colType": "类型", "shared_copyLink": "复制链接", "shared_editShare": "编辑分享", "shared_emptyStateDesc": "当您共享文件或文件夹时,它们将出现在此处", "shared_emptyStateTitle": "还没有共享资源", - "shared_filterAll": "All", - "shared_filterFiles": "Files", - "shared_filterFolders": "Folders", - "shared_filterType": "Type:", + "shared_filterAll": "全部", + "shared_filterFiles": "文件", + "shared_filterFolders": "文件夹", + "shared_filterType": "类型:", "shared_goToFiles": "转到文件", - "shared_hasPassword": "Yes", + "shared_hasPassword": "是", "shared_invalidEmail": "请输入有效的电子邮件地址", "shared_itemRemoved": "分享删除成功", "shared_itemUpdated": "共享设置更新成功", "shared_linkCopied": "链接已复制到剪贴板!", "shared_linkCopyFailed": "复制链接失败", "shared_noExpiration": "没有过期时间", - "shared_noPassword": "No", + "shared_noPassword": "否", "shared_notificationFailed": "发送通知失败", "shared_notificationSent": "通知发送成功", "shared_notifyShare": "通知某人", "shared_pageDescription": "管理您的共享文件和文件夹", "shared_pageTitle": "共享资源", "shared_removeShare": "删除分享", - "shared_search": "Search", + "shared_search": "搜索", "shared_sortBy": "排序方式:", "shared_sortByDate": "共享日期", - "shared_sortByExpiration": "Expiration", - "shared_sortByName": "Name", - "shared_typeFile": "File", - "shared_typeFolder": "Folder" + "shared_sortByExpiration": "过期时间", + "shared_sortByName": "名称", + "shared_typeFile": "文件", + "shared_typeFolder": "文件夹" }, "files": { "name": "名称", @@ -509,12 +509,12 @@ "shared": "共享", "uploaded": "上传完成", "uploaded_saved": "上传完成 — {{mb}} MB 已删除重复数据", - "uploaded_partial": "{{ok}} uploaded, {{failed}} failed", - "uploaded_skipped": "{{ok}} uploaded · {{skipped}} skipped (not regular files)", + "uploaded_partial": "{{ok}} 已上传,{{failed}} 失败", + "uploaded_skipped": "{{ok}} 已上传 · {{skipped}} 已跳过(非常规文件)", "upload_failed": "上传失败", "uploading": "正在上传...", "uploading_file": "正在上传{{name}}...", - "uploading_n": "Uploading {{done}}/{{total}} files…" + "uploading_n": "正在上传 {{done}}/{{total}} 个文件…" }, "dialogs": { "rename_folder": "重命名文件夹", @@ -667,7 +667,7 @@ "sso_login_provider": "使用 {{provider}} 登录", "magicLinkHint": "没有密码?输入您的邮箱,我们将向您发送一次性登录链接。", "magicLinkEmailLabel": "邮箱地址", - "magicLinkEmailPlaceholder": "you@example.com", + "magicLinkEmailPlaceholder": "你@example.com", "magicLinkSubmit": "发送登录链接", "magicLinkSent": "如果该邮箱存在账户,登录链接已发送。请查收您的收件箱。", "magicLinkUnavailable": "此服务器不支持邮箱登录。", @@ -1087,7 +1087,7 @@ "plugins_logs_col_kind": "种类", "plugins_logs_col_invocation": "祈求", "plugins_logs_col_message": "信息", - "plugins_logs_showing": "Showing {{from}}–{{to}} of {{total}}", + "plugins_logs_showing": "显示 {{from}}–{{to}} 共 {{total}}", "available": "可用的", "confirm_delete_plugin": "删除插件{{name}}?", "disable": "禁用", @@ -1102,7 +1102,7 @@ "logs_live": "居住", "logs_message": "信息", "logs_search": "搜索…", - "logs_showing": "Showing {{from}}–{{to}} of {{total}}", + "logs_showing": "显示 {{from}}–{{to}} 共 {{total}}", "logs_time": "时间", "mig_eta": "~{{min}} 剩余分钟数", "mig_failed": "{{n}} 失败的斑点", @@ -1110,7 +1110,7 @@ "mig_verify": "验证完整性", "mig_verify_mismatch": "{{n}} 尺寸不匹配", "mig_verify_missing": "{{n}} 失踪", - "mig_verify_summary": "{{checked}} blobs checked, {{total}} total in database", + "mig_verify_summary": "已检查 {{checked}} 个 blob,数据库共 {{total}} 个", "migration": "存储迁移", "new_password": "新密码", "no_plugins": "没有安装插件。", @@ -1148,7 +1148,6 @@ "storage_size": "已存储", "storage_test": "测试", "storage_backend_audit": "后端一致性", - "storage_backend_audit_triggered": "backend_consistency 因“{{name}}”而触发 - 在“作业”选项卡上观看。", "time_day_ago": "{{n}} d 前", "time_hour_ago": "{{n}} 小时前", "time_just_now": "现在", @@ -1163,9 +1162,6 @@ "gen_key": "生成密钥", "gen_key_warning": "安全地保存此密钥。如果丢失,加密数据将无法恢复。", "jobs": { - "tab": "工作机会", - "title": "工作机会", - "hint": "本节涉及内部作业:定期+按需作业。一致性检查可以随时安全运行——它们是只读的。", "run_all_consistency": "运行所有一致性检查", "run_deep": "深入运行", "run_deep_hint": "还运行缓慢的变体(blob 重新哈希、bitrot 检测)。", @@ -1197,7 +1193,6 @@ "findings_title": "发现", "no_runs": "还没有运行。", "no_findings": "没有任何发现——干净运行。", - "none_registered": "没有注册职位。", "on_demand": "一经请求", "every_h": "每 {{n}} 小时", "every_min": "每 {{n}} 分钟", @@ -1211,11 +1206,10 @@ "notices_present_tooltip": "信息性调查结果 — 无需采取任何行动。展开查看详情。", "purge": "清除旧运行", "purge_hint": "删除早于所选保留窗口的已完成和失败的运行历史记录。结果随着父母的跑步而下降。非终端运行始终被保留。", - "purge_title": "清除旧的工作历史记录", "purge_body": "删除早于所选天数的已完成和失败的运行历史记录。结果随着父母的跑步而下降。非终端运行(运行、暂停、取消请求)始终保留。", "purge_days_label": "保留(天)", "purge_confirm": "清除", - "purge_done": "{{n}} old run(s) purged (retention {{days}} days)", + "purge_done": "已清除 {{n}} 次旧运行(保留 {{days}} 天)", "state_running": "跑步", "never": "绝不", "just_now": "现在", @@ -1223,15 +1217,20 @@ "n_h_ago": "{{n}} 小时前", "n_d_ago": "{{n}} d 前", "triggered_ok": "{{name}} 触发成功", - "triggered_err": "{{name}} failed: {{message}}", + "triggered_err": "{{name}} 失败:{{message}}", "cancel_requested": "已请求取消 — {{name}} 将在下一个安全边界处暂停", "cancel_noop": "没有可取消的内容 — {{name}} 未运行", "progress_exact_tooltip": "{{pct}} ({{scanned}} / {{total}})", - "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — approximate, backend proxy)" + "progress_approx_tooltip": "{{pct}} ({{scanned}} / {{total}} — 近似值,后端代理)", + "tab": "后台任务", + "title": "后台任务", + "hint": "本节涉及内部后台任务:定期和按需任务。一致性检查随时可以安全运行 — 它们是只读的。", + "none_registered": "未注册后台任务。", + "purge_title": "清除旧任务历史" }, "oidc": "OIDC / SSO", - "oidc_discover": "Test / discover", - "reextract_done": "{{processed}}/{{total}} processed · {{failed}} failed", + "oidc_discover": "测试 / 发现", + "reextract_done": "{{processed}}/{{total}} 已处理 · {{failed}} 失败", "sessions": { "filter_user": "用户 (UUID)", "include_revoked": "包含已撤销 / 已过期", @@ -1263,7 +1262,8 @@ "device": "设备", "unknown": "未知" } - } + }, + "storage_backend_audit_triggered": "backend_consistency 已为 `{{name}}` 触发 — 在后台任务标签页查看。" }, "profile": { "page_title": "个人资料", @@ -1341,14 +1341,14 @@ "error_revoke": "撤销失败", "edit_photo": "编辑照片", "photo_tab_url": "URL", - "photo_tab_upload": "Upload", + "photo_tab_upload": "上传", "photo_url_placeholder": "https://example.com/photo.jpg", - "photo_url_hint": "https://, http://, or data:image/…;base64,… accepted", + "photo_url_hint": "接受 https://、http:// 或 data:image/…;base64,…", "photo_choose_file": "选择一张照片(PNG、JPEG、WebP)", "photo_resize_note": "大于 512 × 512 像素的图像会自动调整大小。", "photo_save": "保存照片", "photo_remove": "删除照片", - "photo_cancel": "Cancel", + "photo_cancel": "取消", "photo_save_failed": "保存照片失败", "photo_no_file": "请先选择一个文件", "photo_managed_by_oidc": "由您的身份提供商管理的照片。", @@ -1394,7 +1394,7 @@ "uploading": "正在上传...", "files": "个文件", "complete": "已上传 {{count}} / {{total}}", - "files_counter": "{{completed}} / {{total}} files" + "files_counter": "{{completed}} / {{total}} 个文件" }, "storage_quota_exceeded": "存储配额已超限", "sharedwithme": { @@ -1439,7 +1439,7 @@ "create_dialog_title": "新群组", "edit_dialog_title": "重命名群组", "name_label": "名称", - "name_placeholder": "engineering", + "name_placeholder": "工程", "description_label": "描述(可选)", "members_section": "成员", "add_member_placeholder": "添加用户或群组…", @@ -1495,25 +1495,25 @@ "passwordLinks": "受密码保护的链接" }, "sort": { - "asc": "ascending", - "desc": "descending", + "asc": "升序", + "desc": "降序", "direction": "排序方向" }, "notif": { - "errorTitle": "Error", + "errorTitle": "错误", "searchError": "执行搜索时出错", "cleanupCompleted": "清理完成", "cleanupCompletedBody": "最近的文件历史记录已被清除", "batchCopy": "批量复制", - "batchCopyBody": "{{success}} copied, {{errors}} failed", + "batchCopyBody": "{{success}} 已复制,{{errors}} 失败", "itemsCopied": "复制的项目", "itemsCopiedBody": "{{count}} 项目已成功复制", "batchMove": "批量移动", - "batchMoveBody": "{{success}} moved, {{errors}} failed", + "batchMoveBody": "{{success}} 已移动,{{errors}} 失败", "itemsMoved": "物品已移动", "itemsMovedBody": "{{count}} 物品移动成功", "batchDelete": "批量删除", - "batchDeleteBody": "{{success}} moved to trash, {{errors}} failed", + "batchDeleteBody": "{{success}} 已移至回收站,{{errors}} 失败", "movedToTrash": "已移至垃圾箱", "movedToTrashBody": "{{count}} 物品已移至垃圾箱", "trashItemsError": "无法将项目移至垃圾箱", @@ -1584,7 +1584,7 @@ "common": { "add": "添加", "cancel": "取消", - "clear": "Clear", + "clear": "清除", "close": "关闭", "confirm": "确认", "copy": "复制", @@ -1596,7 +1596,7 @@ "next": "下一首", "no": "无", "previous": "上一首", - "remove": "Remove", + "remove": "移除", "rename": "重命名", "save": "保存", "search": "搜索",