i18n(drive): correct locales for drive sections

This commit is contained in:
Edouard Vanbelle
2026-07-19 15:16:08 +02:00
parent 05dfda9aa3
commit 5982efd783
18 changed files with 794 additions and 74 deletions
+54 -6
View File
@@ -594,14 +594,52 @@ sweep interval (default 10 min).
Changing `drives.quota_bytes` (shared drives only) is **not** in
the drive `owner` role bundle (§4). It requires the tenant-level
OxiCloud admin role (`auth.users.role = 'admin'`), checked at
`PATCH /api/admin/drives/{id}/quota`. Drive owners can rename,
edit policies, and manage members; they cannot self-grant
capacity.
OxiCloud admin role (`auth.users.role = 'admin'`), checked in the
handler for `PATCH /api/drives/{id}/quota` (the admin gate lives
on the endpoint even though the URL follows the `/api/drives/`
prefix — the taxonomy split is by capability, not by URL depth).
Drive owners can rename, edit policies, and manage members; they
cannot self-grant capacity.
Changing `auth.users.storage_quota_bytes` (the personal envelope)
is likewise admin-only — same surface and audit pattern as today.
Shape of the mutation:
- **Request** — `PATCH /api/drives/{id}/quota` with body
`{ "quota_bytes": <int|null> }`. `null` (and defensively `0` or
any negative value the service normalises via `filter(|&q| q > 0)`)
means unlimited on the wire; the DB persists NULL and the
write-time gate short-circuits accordingly.
- **Response** — `200 { "quota_bytes": <persisted_int|null> }`,
read back from the `RETURNING` clause so the admin sees the
authoritative value without a follow-up GET.
- **Personal drives refuse with `400`** and a hint pointing the
operator at the user-envelope endpoint — the per-drive column
is always NULL for personal drives (§7 sum-of-personal invariant).
- **Non-admin callers see `404`** (anti-enumeration; a `403` would
leak the endpoint's existence).
- **Soft-shrink** — a new cap **may be set below the drive's
current `used_bytes`**. Existing content is untouched; the
write-time gate simply keeps refusing new writes until usage
drops back under. Matches xfs/ext4 `xfs_quota` and `edquota`
semantics. Owners can still delete files under an over-quota
state.
- **Cache invalidation** mirrors `update_policies`:
`default_drive_cache.invalidate_all()` +
`invalidate_readable_all()` — both caches embed the full
drive row (including `quota_bytes`) and would otherwise serve a
stale cap for the 30 s TTL. Blow-the-whole-cache is fine because
quota mutation is admin-rare.
- **Frontend** — admin UI at `/admin` drives tab renders a
gauge-icon button on shared-drive rows (personal rows show a
placeholder). The button opens the shared `<QuotaEditor>`
component (`frontend/src/lib/components/QuotaEditor.svelte`),
which the user-envelope modal also reuses. Endpoint-specific
wire encoding (`0` for users, `null` for drives) stays in the
parent `onsave` callback so the shared component never leaks
the magic value.
Why this seam matters:
- **Resource allocation is a tenant concern.** Storage bytes are
@@ -617,8 +655,18 @@ Why this seam matters:
through the admin, not the drive's group owners.
Audit log emits `drive.quota_changed` (shared drives) and
`user.quota_changed` (envelope) with `granted_by=<admin_user_id>`
and the old/new values.
`user.quota_changed` (envelope) with `by=<admin_user_id>`,
`new_quota_bytes`, `used_bytes`, and an `over_quota` boolean
that flags the soft-shrink case. Personal-drive rejections emit
`drive.quota_change_rejected` with `reason =
"personal_drive_uses_user_envelope"`.
Regression coverage — `tests/api/drive_quota.hurl` Steps 12–26
pin the endpoint end-to-end: admin raise/lower, `null`/`0`
unlimited normalisation, non-admin 404, personal-drive 400 with
"envelope" hint, and the soft-shrink cycle (quota < used → new
uploads 507, delete succeeds, sweep drops used_bytes, still 507
until admin raises the cap).
#### Multiple personal drives — schema-ready, no public surface
@@ -388,7 +388,7 @@
{#if !canManageMembers && drive.kind === 'personal'}
<p class="muted members__personal-note">
{t(
'drive.members.personal_immutable',
'drive.members_personal_immutable',
'Personal drives have a fixed single-owner membership.'
)}
</p>
+48 -6
View File
@@ -1153,7 +1153,8 @@
"save": "حفظ",
"search": "بحث",
"yes": "نعم",
"saving": "جارٍ الحفظ…"
"saving": "جارٍ الحفظ…",
"deleting": "جارٍ الحذف…"
},
"device": {
"continue": "متابعة",
@@ -1206,10 +1207,51 @@
},
"drive": {
"read_only_banner": {
"title": "This drive is read-only",
"title_named": "Drive \"{{name}}\" is read-only",
"body": "Uploads, edits, deletes, renames, sharing and membership changes are refused. Reads and downloads keep working. Contact an administrator to un-freeze the drive.",
"aria": "This drive is read-only"
}
"title": "هذا القرص للقراءة فقط",
"title_named": "القرص «{{name}}» للقراءة فقط",
"body": "يُرفض الرفع والتحرير والحذف وإعادة التسمية والمشاركة وتغييرات العضوية. القراءة والتنزيل يعملان بشكل طبيعي. تواصل مع مسؤول لإلغاء تجميد القرص.",
"aria": "هذا القرص للقراءة فقط"
},
"back_to_files": "العودة إلى الملفات",
"danger_zone": "منطقة الخطر",
"delete": "حذف القرص",
"delete_confirm": "حذف القرص «{{name}}»؟ لا يمكن التراجع عن هذا الإجراء — يجب أن يكون القرص فارغًا، وإلا سيرفض الخادم.",
"delete_hint": "حذف القرص يزيله بشكل دائم. يجب أن يكون القرص فارغًا (بدون ملفات أو مجلدات نشطة) قبل السماح بالحذف.",
"deleted": "تم حذف القرص.",
"field": {
"created": "أُنشئ في",
"default": "افتراضي",
"default_yes": "هذا هو قرصك الرئيسي",
"id": "المُعرِّف",
"kind": "النوع",
"updated": "آخر تحديث"
},
"info": "معلومات القرص",
"kind_personal": "قرص شخصي",
"kind_shared": "قرص مشترك",
"manage_members": "إدارة الأعضاء",
"members": "الأعضاء",
"members_empty": "لا يوجد أعضاء.",
"not_found_body": "هذا القرص غير موجود أو ليس لديك صلاحية الوصول إليه.",
"not_found_title": "القرص غير موجود",
"policies": "القواعد",
"policies_help": "قواعد ضبطها مسؤول OxiCloud لهذا القرص. المسؤولون فقط يمكنهم تغييرها؛ أنت ترى الحالة الحالية.",
"quota": "الحصة",
"rename": "إعادة تسمية القرص",
"role": {
"commenter": "معلّق",
"contributor": "مساهم",
"editor": "محرّر",
"owner": "المالك",
"viewer": "مشاهد"
},
"storage": "التخزين",
"usage": "الاستخدام",
"used": "المُستخدَم",
"members_personal_immutable": "الأقراص الشخصية لها عضوية ثابتة بمالك واحد."
},
"group": {
"members_empty": "لا يوجد أعضاء",
"member_count": "{{n}} أعضاء"
}
}
+47 -5
View File
@@ -1153,7 +1153,8 @@
"save": "Speichern",
"search": "Suchen",
"yes": "Ja",
"saving": "Speichern…"
"saving": "Speichern…",
"deleting": "Löschen…"
},
"device": {
"continue": "Weiter",
@@ -1206,10 +1207,51 @@
},
"drive": {
"read_only_banner": {
"title": "Dieses Drive ist schreibgeschützt",
"title_named": "Das Drive „{{name}}\" ist schreibgeschützt",
"title": "Dieses Laufwerk ist schreibgeschützt",
"title_named": "Das Laufwerk „{{name}}\" ist schreibgeschützt",
"body": "Uploads, Bearbeitungen, Löschungen, Umbenennungen, Freigaben und Mitgliedschaftsänderungen werden abgelehnt. Lesen und Herunterladen funktionieren weiterhin. Wende dich an einen Administrator, um die Sperre aufzuheben.",
"aria": "Dieses Drive ist schreibgeschützt"
}
"aria": "Dieses Laufwerk ist schreibgeschützt"
},
"back_to_files": "Zurück zu Dateien",
"danger_zone": "Gefahrenzone",
"delete": "Laufwerk löschen",
"delete_confirm": "Laufwerk „{{name}}“ löschen? Dies kann nicht rückgängig gemacht werden — das Laufwerk muss leer sein, sonst weist der Server es zurück.",
"delete_hint": "Ein Laufwerk zu löschen ist endgültig. Das Laufwerk muss leer sein (keine aktiven Dateien oder Ordner), bevor gelöscht werden kann.",
"deleted": "Laufwerk gelöscht.",
"field": {
"created": "Erstellt",
"default": "Standard",
"default_yes": "Dies ist dein Standard-Laufwerk",
"id": "Kennung",
"kind": "Typ",
"updated": "Zuletzt aktualisiert"
},
"info": "Laufwerksinfo",
"kind_personal": "Persönliches Laufwerk",
"kind_shared": "Gemeinsames Laufwerk",
"manage_members": "Mitglieder verwalten",
"members": "Mitglieder",
"members_empty": "Keine Mitglieder.",
"not_found_body": "Dieses Laufwerk existiert nicht oder du hast keinen Zugriff.",
"not_found_title": "Laufwerk nicht gefunden",
"policies": "Regeln",
"policies_help": "Regeln, die ein OxiCloud-Administrator für dieses Laufwerk gesetzt hat. Nur Administratoren können sie ändern; du siehst den aktuellen Stand.",
"quota": "Kontingent",
"rename": "Laufwerk umbenennen",
"role": {
"commenter": "Kommentator",
"contributor": "Mitwirkender",
"editor": "Bearbeiter",
"owner": "Eigentümer",
"viewer": "Betrachter"
},
"storage": "Speicher",
"usage": "Nutzung",
"used": "Belegt",
"members_personal_immutable": "Persönliche Laufwerke haben eine feste Einzeleigentümer-Mitgliedschaft."
},
"group": {
"members_empty": "Keine Mitglieder",
"member_count": "{{n}} Mitglieder"
}
}
+44 -2
View File
@@ -1468,7 +1468,8 @@
"select_all": "Select all",
"yes": "Yes",
"dismiss": "Dismiss",
"saving": "Saving…"
"saving": "Saving…",
"deleting": "Deleting…"
},
"device": {
"approve": "Approve",
@@ -1611,6 +1612,47 @@
"title_named": "Drive \"{{name}}\" is read-only",
"body": "Uploads, edits, deletes, renames, sharing and membership changes are refused. Reads and downloads keep working. Contact an administrator to un-freeze the drive.",
"aria": "This drive is read-only"
}
},
"back_to_files": "Back to Files",
"danger_zone": "Danger zone",
"delete": "Delete drive",
"delete_confirm": "Delete drive \"{{name}}\"? This cannot be undone — the drive must be empty first or the server will refuse.",
"delete_hint": "Deleting a drive removes it permanently. The drive must be empty (no live files or folders) before delete is allowed.",
"deleted": "Drive deleted.",
"field": {
"created": "Created",
"default": "Default",
"default_yes": "This is your home drive",
"id": "Identifier",
"kind": "Kind",
"updated": "Last updated"
},
"info": "Drive info",
"kind_personal": "Personal drive",
"kind_shared": "Shared drive",
"manage_members": "Manage members",
"members": "Members",
"members_empty": "No members.",
"not_found_body": "This drive doesn't exist or you don't have access to it.",
"not_found_title": "Drive not found",
"policies": "Policies",
"policies_help": "Rules an OxiCloud admin has set for this drive. Only admins can change them; you're seeing the current state.",
"quota": "Quota",
"rename": "Rename drive",
"role": {
"commenter": "Commenter",
"contributor": "Contributor",
"editor": "Editor",
"owner": "Owner",
"viewer": "Viewer"
},
"storage": "Storage",
"usage": "Usage",
"used": "Used",
"members_personal_immutable": "Personal drives have a fixed single-owner membership."
},
"group": {
"members_empty": "No members",
"member_count": "{{n}} members"
}
}
+48 -6
View File
@@ -1168,7 +1168,8 @@
"save": "Guardar",
"search": "Buscar",
"yes": "Sí",
"saving": "Guardando…"
"saving": "Guardando…",
"deleting": "Eliminando…"
},
"device": {
"continue": "Continuar",
@@ -1221,10 +1222,51 @@
},
"drive": {
"read_only_banner": {
"title": "Este Drive es de solo lectura",
"title_named": "El Drive «{{name}}» es de solo lectura",
"body": "Se rechazan subidas, ediciones, eliminaciones, renombrados, compartidos y cambios de miembros. La lectura y descarga siguen funcionando. Contacta con un administrador para descongelar el Drive.",
"aria": "Este Drive es de solo lectura"
}
"title": "Esta unidad es de solo lectura",
"title_named": "La unidad «{{name}}» es de solo lectura",
"body": "Se rechazan subidas, ediciones, eliminaciones, renombrados, compartidos y cambios de miembros. La lectura y descarga siguen funcionando. Contacta con un administrador para descongelar el unidad.",
"aria": "Este unidad es de solo lectura"
},
"back_to_files": "Volver a Archivos",
"danger_zone": "Zona de peligro",
"delete": "Eliminar unidad",
"delete_confirm": "¿Eliminar la unidad «{{name}}»? Esta acción no se puede deshacer: la unidad debe estar vacía o el servidor la rechazará.",
"delete_hint": "Eliminar una unidad la elimina de forma permanente. La unidad debe estar vacía (sin archivos ni carpetas activos) antes de poder eliminarla.",
"deleted": "Unidad eliminada.",
"field": {
"created": "Creada",
"default": "Predeterminada",
"default_yes": "Esta es tu unidad principal",
"id": "Identificador",
"kind": "Tipo",
"updated": "Última actualización"
},
"info": "Información de la unidad",
"kind_personal": "Unidad personal",
"kind_shared": "Unidad compartida",
"manage_members": "Gestionar miembros",
"members": "Miembros",
"members_empty": "Sin miembros.",
"not_found_body": "Esta unidad no existe o no tienes acceso a ella.",
"not_found_title": "Unidad no encontrada",
"policies": "Reglas",
"policies_help": "Reglas que un administrador de OxiCloud ha definido para esta unidad. Solo los administradores pueden modificarlas; ves el estado actual.",
"quota": "Cuota",
"rename": "Renombrar unidad",
"role": {
"commenter": "Comentarista",
"contributor": "Colaborador",
"editor": "Editor",
"owner": "Propietario",
"viewer": "Lector"
},
"storage": "Almacenamiento",
"usage": "Uso",
"used": "Usado",
"members_personal_immutable": "Las unidades personales tienen una membresía fija de un único propietario."
},
"group": {
"members_empty": "Sin miembros",
"member_count": "{{n}} miembros"
}
}
+48 -6
View File
@@ -1153,7 +1153,8 @@
"save": "ذخیره",
"search": "جست‌و‌جو",
"yes": "بله",
"saving": "در حال ذخیره…"
"saving": "در حال ذخیره…",
"deleting": "در حال حذف…"
},
"device": {
"continue": "ادامه",
@@ -1206,10 +1207,51 @@
},
"drive": {
"read_only_banner": {
"title": "This drive is read-only",
"title_named": "Drive \"{{name}}\" is read-only",
"body": "Uploads, edits, deletes, renames, sharing and membership changes are refused. Reads and downloads keep working. Contact an administrator to un-freeze the drive.",
"aria": "This drive is read-only"
}
"title": "این دیسک فقط‌خواندنی است",
"title_named": "دیسک «{{name}}» فقط‌خواندنی است",
"body": "بارگذاری، ویرایش، حذف، تغییر نام، اشتراک‌گذاری و تغییرات عضویت رد می‌شوند. خواندن و دانلود همچنان کار می‌کنند. برای رفع انجماد دیسک با مدیر تماس بگیرید.",
"aria": "این دیسک فقط‌خواندنی است"
},
"back_to_files": "بازگشت به فایل‌ها",
"danger_zone": "منطقه خطر",
"delete": "حذف دیسک",
"delete_confirm": "دیسک «{{name}}» حذف شود؟ این عمل قابل بازگشت نیست — دیسک باید خالی باشد وگرنه سرور رد می‌کند.",
"delete_hint": "حذف دیسک آن را برای همیشه حذف می‌کند. دیسک باید خالی باشد (بدون فایل یا پوشه فعال) قبل از حذف.",
"deleted": "دیسک حذف شد.",
"field": {
"created": "ایجاد شده در",
"default": "پیش‌فرض",
"default_yes": "این دیسک اصلی شماست",
"id": "شناسه",
"kind": "نوع",
"updated": "آخرین به‌روزرسانی"
},
"info": "اطلاعات دیسک",
"kind_personal": "دیسک شخصی",
"kind_shared": "دیسک اشتراکی",
"manage_members": "مدیریت اعضا",
"members": "اعضا",
"members_empty": "بدون عضو.",
"not_found_body": "این دیسک وجود ندارد یا دسترسی به آن ندارید.",
"not_found_title": "دیسک یافت نشد",
"policies": "قوانین",
"policies_help": "قوانینی که مدیر OxiCloud برای این دیسک تنظیم کرده است. فقط مدیران می‌توانند آن‌ها را تغییر دهند؛ شما وضعیت فعلی را می‌بینید.",
"quota": "سهمیه",
"rename": "تغییر نام دیسک",
"role": {
"commenter": "مفسر",
"contributor": "مشارکت‌کننده",
"editor": "ویرایشگر",
"owner": "مالک",
"viewer": "بیننده"
},
"storage": "ذخیره‌سازی",
"usage": "مصرف",
"used": "استفاده‌شده",
"members_personal_immutable": "دیسک‌های شخصی عضویت ثابتی با یک مالک واحد دارند."
},
"group": {
"members_empty": "بدون عضو",
"member_count": "{{n}} عضو"
}
}
+48 -6
View File
@@ -1153,7 +1153,8 @@
"save": "Enregistrer",
"search": "Rechercher",
"yes": "Oui",
"saving": "Enregistrement…"
"saving": "Enregistrement…",
"deleting": "Suppression…"
},
"device": {
"continue": "Continuer",
@@ -1206,10 +1207,51 @@
},
"drive": {
"read_only_banner": {
"title": "Ce Drive est en lecture seule",
"title_named": "Le Drive « {{name}} » est en lecture seule",
"body": "Les téléversements, éditions, suppressions, renommages, partages et changements d'appartenance sont refusés. La lecture et le téléchargement continuent de fonctionner. Contactez un administrateur pour lever le gel du Drive.",
"aria": "Ce Drive est en lecture seule"
}
"title": "Ce disque est en lecture seule",
"title_named": "Le disque « {{name}} » est en lecture seule",
"body": "Les téléversements, éditions, suppressions, renommages, partages et changements d'appartenance sont refusés. La lecture et le téléchargement continuent de fonctionner. Contactez un administrateur pour lever le gel du disque.",
"aria": "Ce disque est en lecture seule"
},
"back_to_files": "Retour aux fichiers",
"danger_zone": "Zone dangereuse",
"delete": "Supprimer le disque",
"delete_confirm": "Supprimer le disque « {{name}} » ? Cette action est irréversible — le disque doit être vide, sinon le serveur refusera.",
"delete_hint": "La suppression d’un disque est définitive. Le disque doit être vide (aucun fichier ni dossier actif) avant la suppression.",
"deleted": "Disque supprimé.",
"field": {
"created": "Créé le",
"default": "Par défaut",
"default_yes": "C’est votre disque principal",
"id": "Identifiant",
"kind": "Type",
"updated": "Dernière mise à jour"
},
"info": "Informations du disque",
"kind_personal": "Disque personnel",
"kind_shared": "Disque partagé",
"manage_members": "Gérer les membres",
"members": "Membres",
"members_empty": "Aucun membre.",
"not_found_body": "Ce disque n’existe pas ou vous n’y avez pas accès.",
"not_found_title": "Disque introuvable",
"policies": "Règles",
"policies_help": "Règles définies par un administrateur d’OxiCloud pour ce disque. Seuls les administrateurs peuvent les modifier ; vous voyez l’état actuel.",
"quota": "Quota",
"rename": "Renommer le disque",
"role": {
"commenter": "Commentateur",
"contributor": "Contributeur",
"editor": "Éditeur",
"owner": "Propriétaire",
"viewer": "Lecteur"
},
"storage": "Stockage",
"usage": "Utilisation",
"used": "Utilisé",
"members_personal_immutable": "Les disques personnels ont une appartenance figée à un unique propriétaire."
},
"group": {
"members_empty": "Aucun membre",
"member_count": "{{n}} membres"
}
}
+48 -6
View File
@@ -1153,7 +1153,8 @@
"save": "सहेजें",
"search": "खोजें",
"yes": "हाँ",
"saving": "सहेजा जा रहा है…"
"saving": "सहेजा जा रहा है…",
"deleting": "हटाया जा रहा है…"
},
"device": {
"continue": "आगे बढ़ें",
@@ -1206,10 +1207,51 @@
},
"drive": {
"read_only_banner": {
"title": "This drive is read-only",
"title_named": "Drive \"{{name}}\" is read-only",
"body": "Uploads, edits, deletes, renames, sharing and membership changes are refused. Reads and downloads keep working. Contact an administrator to un-freeze the drive.",
"aria": "This drive is read-only"
}
"title": "यह ड्राइव केवल पढ़ने योग्य है",
"title_named": "ड्राइव \"{{name}}\" केवल पढ़ने योग्य है",
"body": "अपलोड, संपादन, हटाना, नाम बदलना, साझा करना और सदस्यता परिवर्तन अस्वीकार कर दिए जाते हैं। पढ़ना और डाउनलोड करना काम करते रहते हैं। ड्राइव को अनफ़्रीज़ करने के लिए किसी व्यवस्थापक से संपर्क करें।",
"aria": "यह ड्राइव केवल पढ़ने योग्य है"
},
"back_to_files": "फ़ाइलों पर वापस जाएँ",
"danger_zone": "खतरे का क्षेत्र",
"delete": "ड्राइव हटाएँ",
"delete_confirm": "ड्राइव \"{{name}}\" हटाएँ? यह क्रिया वापस नहीं की जा सकती — ड्राइव खाली होनी चाहिए, अन्यथा सर्वर मना कर देगा।",
"delete_hint": "ड्राइव हटाने से वह स्थायी रूप से हट जाती है। हटाने से पहले ड्राइव खाली होनी चाहिए (कोई सक्रिय फ़ाइल या फ़ोल्डर नहीं)।",
"deleted": "ड्राइव हटा दी गई।",
"field": {
"created": "बनाया गया",
"default": "डिफ़ॉल्ट",
"default_yes": "यह आपकी होम ड्राइव है",
"id": "पहचानकर्ता",
"kind": "प्रकार",
"updated": "अंतिम अद्यतन"
},
"info": "ड्राइव जानकारी",
"kind_personal": "व्यक्तिगत ड्राइव",
"kind_shared": "साझा ड्राइव",
"manage_members": "सदस्य प्रबंधित करें",
"members": "सदस्य",
"members_empty": "कोई सदस्य नहीं।",
"not_found_body": "यह ड्राइव मौजूद नहीं है या आपके पास इसका एक्सेस नहीं है।",
"not_found_title": "ड्राइव नहीं मिली",
"policies": "नीतियाँ",
"policies_help": "OxiCloud व्यवस्थापक ने इस ड्राइव के लिए जो नियम सेट किए हैं। केवल व्यवस्थापक ही उन्हें बदल सकते हैं; आप वर्तमान स्थिति देख रहे हैं।",
"quota": "कोटा",
"rename": "ड्राइव का नाम बदलें",
"role": {
"commenter": "टिप्पणीकर्ता",
"contributor": "योगदानकर्ता",
"editor": "संपादक",
"owner": "स्वामी",
"viewer": "दर्शक"
},
"storage": "स्टोरेज",
"usage": "उपयोग",
"used": "उपयोग किया गया",
"members_personal_immutable": "व्यक्तिगत ड्राइव में एकल स्वामी वाली स्थायी सदस्यता होती है।"
},
"group": {
"members_empty": "कोई सदस्य नहीं",
"member_count": "{{n}} सदस्य"
}
}
+48 -6
View File
@@ -1153,7 +1153,8 @@
"save": "Salva",
"search": "Cerca",
"yes": "Sì",
"saving": "Salvataggio…"
"saving": "Salvataggio…",
"deleting": "Eliminazione…"
},
"device": {
"continue": "Continua",
@@ -1206,10 +1207,51 @@
},
"drive": {
"read_only_banner": {
"title": "Questo Drive è in sola lettura",
"title_named": "Il Drive «{{name}}» è in sola lettura",
"body": "Caricamenti, modifiche, eliminazioni, rinominazioni, condivisioni e cambi di appartenenza sono rifiutati. Lettura e download continuano a funzionare. Contatta un amministratore per sbloccare il Drive.",
"aria": "Questo Drive è in sola lettura"
}
"title": "Questa unità è in sola lettura",
"title_named": "L'unità «{{name}}» è in sola lettura",
"body": "Caricamenti, modifiche, eliminazioni, rinominazioni, condivisioni e cambi di appartenenza sono rifiutati. Lettura e download continuano a funzionare. Contatta un amministratore per sbloccare il unità.",
"aria": "Questo unità è in sola lettura"
},
"back_to_files": "Torna a File",
"danger_zone": "Zona pericolosa",
"delete": "Elimina unità",
"delete_confirm": "Eliminare l'unità «{{name}}»? Operazione irreversibile — l'unità deve essere vuota, altrimenti il server la rifiuterà.",
"delete_hint": "Eliminare un'unità la rimuove definitivamente. L'unità deve essere vuota (nessun file o cartella attivo) prima dell'eliminazione.",
"deleted": "Unità eliminata.",
"field": {
"created": "Creata",
"default": "Predefinita",
"default_yes": "Questa è la tua unità principale",
"id": "Identificativo",
"kind": "Tipo",
"updated": "Ultimo aggiornamento"
},
"info": "Informazioni unità",
"kind_personal": "Unità personale",
"kind_shared": "Unità condivisa",
"manage_members": "Gestisci membri",
"members": "Membri",
"members_empty": "Nessun membro.",
"not_found_body": "Questa unità non esiste o non hai accesso ad essa.",
"not_found_title": "Unità non trovata",
"policies": "Regole",
"policies_help": "Regole impostate da un amministratore di OxiCloud per questa unità. Solo gli amministratori possono modificarle; stai vedendo lo stato attuale.",
"quota": "Quota",
"rename": "Rinomina unità",
"role": {
"commenter": "Commentatore",
"contributor": "Contributore",
"editor": "Editor",
"owner": "Proprietario",
"viewer": "Lettore"
},
"storage": "Archiviazione",
"usage": "Utilizzo",
"used": "Utilizzato",
"members_personal_immutable": "Le unità personali hanno un'appartenenza fissa con un unico proprietario."
},
"group": {
"members_empty": "Nessun membro",
"member_count": "{{n}} membri"
}
}
+44 -2
View File
@@ -1153,7 +1153,8 @@
"save": "保存",
"search": "検索",
"yes": "あり",
"saving": "保存中…"
"saving": "保存中…",
"deleting": "削除中…"
},
"device": {
"continue": "続行",
@@ -1210,6 +1211,47 @@
"title_named": "ドライブ「{{name}}」は読み取り専用です",
"body": "アップロード、編集、削除、名前変更、共有、メンバーシップの変更は拒否されます。読み取りとダウンロードは引き続き機能します。ドライブの凍結を解除するには管理者にお問い合わせください。",
"aria": "このドライブは読み取り専用です"
}
},
"back_to_files": "ファイルに戻る",
"danger_zone": "危険な操作",
"delete": "ドライブを削除",
"delete_confirm": "ドライブ「{{name}}」を削除しますか?この操作は取り消せません — ドライブが空でない場合、サーバーは拒否します。",
"delete_hint": "ドライブを削除すると完全に削除されます。削除するにはドライブが空(有効なファイルやフォルダーがない状態)である必要があります。",
"deleted": "ドライブを削除しました。",
"field": {
"created": "作成日",
"default": "デフォルト",
"default_yes": "これはあなたのホームドライブです",
"id": "識別子",
"kind": "種類",
"updated": "最終更新"
},
"info": "ドライブ情報",
"kind_personal": "個人ドライブ",
"kind_shared": "共有ドライブ",
"manage_members": "メンバーを管理",
"members": "メンバー",
"members_empty": "メンバーはいません。",
"not_found_body": "このドライブは存在しないか、アクセス権がありません。",
"not_found_title": "ドライブが見つかりません",
"policies": "ポリシー",
"policies_help": "OxiCloud 管理者がこのドライブに設定したルールです。変更できるのは管理者のみで、現在の状態を表示しています。",
"quota": "クォータ",
"rename": "ドライブ名を変更",
"role": {
"commenter": "コメンター",
"contributor": "投稿者",
"editor": "編集者",
"owner": "所有者",
"viewer": "閲覧者"
},
"storage": "ストレージ",
"usage": "使用量",
"used": "使用済み",
"members_personal_immutable": "個人ドライブは所有者が固定された単独メンバーシップです。"
},
"group": {
"members_empty": "メンバーなし",
"member_count": "{{n}} 人のメンバー"
}
}
+44 -2
View File
@@ -1449,7 +1449,8 @@
"retry": "다시 시도",
"select": "선택",
"select_all": "전체 선택",
"dismiss": "닫기"
"dismiss": "닫기",
"deleting": "삭제 중…"
},
"device": {
"continue": "계속",
@@ -1607,6 +1608,47 @@
"title_named": "드라이브 \"{{name}}\"은(는) 읽기 전용입니다",
"body": "업로드, 편집, 삭제, 이름 바꾸기, 공유 및 멤버십 변경이 거부됩니다. 읽기와 다운로드는 계속 작동합니다. 드라이브 동결을 해제하려면 관리자에게 문의하세요.",
"aria": "이 드라이브는 읽기 전용입니다"
}
},
"back_to_files": "파일로 돌아가기",
"danger_zone": "위험 구역",
"delete": "드라이브 삭제",
"delete_confirm": "드라이브 \"{{name}}\"을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다 — 드라이브가 비어 있어야 하며, 그렇지 않으면 서버가 거부합니다.",
"delete_hint": "드라이브를 삭제하면 영구적으로 제거됩니다. 삭제하려면 드라이브가 비어 있어야 합니다(활성 파일이나 폴더 없음).",
"deleted": "드라이브가 삭제되었습니다.",
"field": {
"created": "생성일",
"default": "기본",
"default_yes": "내 기본 드라이브입니다",
"id": "식별자",
"kind": "종류",
"updated": "최근 업데이트"
},
"info": "드라이브 정보",
"kind_personal": "개인 드라이브",
"kind_shared": "공유 드라이브",
"manage_members": "구성원 관리",
"members": "구성원",
"members_empty": "구성원 없음.",
"not_found_body": "이 드라이브는 존재하지 않거나 접근 권한이 없습니다.",
"not_found_title": "드라이브를 찾을 수 없음",
"policies": "정책",
"policies_help": "OxiCloud 관리자가 이 드라이브에 설정한 규칙입니다. 관리자만 변경할 수 있으며, 현재 상태가 표시됩니다.",
"quota": "할당량",
"rename": "드라이브 이름 변경",
"role": {
"commenter": "댓글 작성자",
"contributor": "기여자",
"editor": "편집자",
"owner": "소유자",
"viewer": "뷰어"
},
"storage": "저장소",
"usage": "사용량",
"used": "사용됨",
"members_personal_immutable": "개인 드라이브는 단일 소유자로 고정된 구성원 구조를 가집니다."
},
"group": {
"members_empty": "구성원 없음",
"member_count": "구성원 {{n}}명"
}
}
+48 -6
View File
@@ -1153,7 +1153,8 @@
"save": "Opslaan",
"search": "Zoeken",
"yes": "Ja",
"saving": "Opslaan…"
"saving": "Opslaan…",
"deleting": "Verwijderen…"
},
"device": {
"continue": "Doorgaan",
@@ -1206,10 +1207,51 @@
},
"drive": {
"read_only_banner": {
"title": "Deze Drive is alleen-lezen",
"title_named": "Drive \"{{name}}\" is alleen-lezen",
"body": "Uploads, bewerkingen, verwijderingen, hernoemingen, delen en lidmaatschapswijzigingen worden geweigerd. Lezen en downloaden blijven werken. Neem contact op met een beheerder om de Drive te ontdooien.",
"aria": "Deze Drive is alleen-lezen"
}
"title": "Deze schijf is alleen-lezen",
"title_named": "Schijf \"{{name}}\" is alleen-lezen",
"body": "Uploads, bewerkingen, verwijderingen, hernoemingen, delen en lidmaatschapswijzigingen worden geweigerd. Lezen en downloaden blijven werken. Neem contact op met een beheerder om de schijf te ontdooien.",
"aria": "Deze schijf is alleen-lezen"
},
"back_to_files": "Terug naar Bestanden",
"danger_zone": "Gevarenzone",
"delete": "Schijf verwijderen",
"delete_confirm": "Schijf \"{{name}}\" verwijderen? Dit kan niet ongedaan worden gemaakt — de schijf moet leeg zijn, anders weigert de server.",
"delete_hint": "Een schijf verwijderen is definitief. De schijf moet leeg zijn (geen actieve bestanden of mappen) voordat verwijderen is toegestaan.",
"deleted": "Schijf verwijderd.",
"field": {
"created": "Aangemaakt",
"default": "Standaard",
"default_yes": "Dit is je hoofdschijf",
"id": "Identificatie",
"kind": "Type",
"updated": "Laatst bijgewerkt"
},
"info": "Schijfinfo",
"kind_personal": "Persoonlijke schijf",
"kind_shared": "Gedeelde schijf",
"manage_members": "Leden beheren",
"members": "Leden",
"members_empty": "Geen leden.",
"not_found_body": "Deze schijf bestaat niet of je hebt er geen toegang toe.",
"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",
"rename": "Schijf hernoemen",
"role": {
"commenter": "Reageerder",
"contributor": "Bijdrager",
"editor": "Bewerker",
"owner": "Eigenaar",
"viewer": "Kijker"
},
"storage": "Opslag",
"usage": "Gebruik",
"used": "Gebruikt",
"members_personal_immutable": "Persoonlijke schijven hebben een vaste eigenaarsstructuur met één eigenaar."
},
"group": {
"members_empty": "Geen leden",
"member_count": "{{n}} leden"
}
}
+44 -2
View File
@@ -1153,7 +1153,8 @@
"save": "Zapisz",
"search": "Szukaj",
"yes": "Tak",
"saving": "Zapisywanie…"
"saving": "Zapisywanie…",
"deleting": "Usuwanie…"
},
"device": {
"continue": "Kontynuuj",
@@ -1210,6 +1211,47 @@
"title_named": "Dysk \"{{name}}\" jest tylko do odczytu",
"body": "Wysyłki, edycje, usunięcia, zmiany nazw, udostępnianie i zmiany członkostwa są odrzucane. Odczyt i pobieranie nadal działają. Skontaktuj się z administratorem, aby odblokować Dysk.",
"aria": "Ten Dysk jest tylko do odczytu"
}
},
"back_to_files": "Powrót do plików",
"danger_zone": "Strefa niebezpieczna",
"delete": "Usuń dysk",
"delete_confirm": "Usunąć dysk „{{name}}\"? Tej operacji nie można cofnąć — dysk musi być pusty, w przeciwnym razie serwer odmówi.",
"delete_hint": "Usunięcie dysku jest trwałe. Dysk musi być pusty (bez aktywnych plików ani folderów) przed usunięciem.",
"deleted": "Dysk usunięty.",
"field": {
"created": "Utworzono",
"default": "Domyślny",
"default_yes": "To jest twój dysk domowy",
"id": "Identyfikator",
"kind": "Typ",
"updated": "Ostatnia aktualizacja"
},
"info": "Informacje o dysku",
"kind_personal": "Dysk osobisty",
"kind_shared": "Dysk współdzielony",
"manage_members": "Zarządzaj członkami",
"members": "Członkowie",
"members_empty": "Brak członków.",
"not_found_body": "Ten dysk nie istnieje lub nie masz do niego dostępu.",
"not_found_title": "Dysk nie znaleziony",
"policies": "Reguły",
"policies_help": "Reguły ustawione przez administratora OxiCloud dla tego dysku. Tylko administratorzy mogą je zmieniać; widzisz obecny stan.",
"quota": "Limit",
"rename": "Zmień nazwę dysku",
"role": {
"commenter": "Komentujący",
"contributor": "Współpracownik",
"editor": "Edytor",
"owner": "Właściciel",
"viewer": "Obserwator"
},
"storage": "Pamięć",
"usage": "Użycie",
"used": "Wykorzystano",
"members_personal_immutable": "Osobiste dyski mają stałe członkostwo z jednym właścicielem."
},
"group": {
"members_empty": "Brak członków",
"member_count": "{{n}} członków"
}
}
+48 -6
View File
@@ -1153,7 +1153,8 @@
"save": "Salvar",
"search": "Pesquisar",
"yes": "Sim",
"saving": "Salvando…"
"saving": "Salvando…",
"deleting": "A eliminar…"
},
"device": {
"continue": "Continuar",
@@ -1206,10 +1207,51 @@
},
"drive": {
"read_only_banner": {
"title": "Este Drive é somente leitura",
"title_named": "O Drive \"{{name}}\" é somente leitura",
"body": "Envios, edições, exclusões, renomeações, compartilhamentos e mudanças de membros são recusados. Leitura e download continuam funcionando. Contate um administrador para descongelar o Drive.",
"aria": "Este Drive é somente leitura"
}
"title": "Esta unidade é somente leitura",
"title_named": "A unidade \"{{name}}\" é somente leitura",
"body": "Envios, edições, exclusões, renomeações, compartilhamentos e mudanças de membros são recusados. Leitura e download continuam funcionando. Contate um administrador para descongelar o unidade.",
"aria": "Este unidade é somente leitura"
},
"back_to_files": "Voltar aos Ficheiros",
"danger_zone": "Zona de perigo",
"delete": "Eliminar unidade",
"delete_confirm": "Eliminar a unidade «{{name}}»? Esta ação é irreversível — a unidade tem de estar vazia, ou o servidor recusará.",
"delete_hint": "Eliminar uma unidade remove-a permanentemente. A unidade tem de estar vazia (sem ficheiros nem pastas ativos) antes de poder ser eliminada.",
"deleted": "Unidade eliminada.",
"field": {
"created": "Criada",
"default": "Predefinida",
"default_yes": "Esta é a sua unidade principal",
"id": "Identificador",
"kind": "Tipo",
"updated": "Última atualização"
},
"info": "Informação da unidade",
"kind_personal": "Unidade pessoal",
"kind_shared": "Unidade partilhada",
"manage_members": "Gerir membros",
"members": "Membros",
"members_empty": "Sem membros.",
"not_found_body": "Esta unidade não existe ou não tem acesso a ela.",
"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",
"rename": "Renomear unidade",
"role": {
"commenter": "Comentador",
"contributor": "Contribuidor",
"editor": "Editor",
"owner": "Proprietário",
"viewer": "Leitor"
},
"storage": "Armazenamento",
"usage": "Utilização",
"used": "Utilizado",
"members_personal_immutable": "As unidades pessoais têm uma associação fixa a um único proprietário."
},
"group": {
"members_empty": "Sem membros",
"member_count": "{{n}} membros"
}
}
+44 -2
View File
@@ -1153,7 +1153,8 @@
"save": "Сохранить",
"search": "Найти",
"yes": "Да",
"saving": "Сохранение…"
"saving": "Сохранение…",
"deleting": "Удаление…"
},
"device": {
"continue": "Продолжить",
@@ -1210,6 +1211,47 @@
"title_named": "Диск «{{name}}» доступен только для чтения",
"body": "Загрузки, редактирование, удаления, переименования, публикация и изменения участников отклоняются. Чтение и скачивание продолжают работать. Обратитесь к администратору, чтобы разморозить Диск.",
"aria": "Этот Диск доступен только для чтения"
}
},
"back_to_files": "Вернуться к Файлам",
"danger_zone": "Опасная зона",
"delete": "Удалить диск",
"delete_confirm": "Удалить диск «{{name}}»? Действие необратимо — диск должен быть пуст, иначе сервер откажет.",
"delete_hint": "Удаление диска необратимо. Диск должен быть пуст (без активных файлов и папок) до удаления.",
"deleted": "Диск удалён.",
"field": {
"created": "Создан",
"default": "По умолчанию",
"default_yes": "Это ваш основной диск",
"id": "Идентификатор",
"kind": "Тип",
"updated": "Последнее обновление"
},
"info": "Сведения о диске",
"kind_personal": "Личный диск",
"kind_shared": "Общий диск",
"manage_members": "Управление участниками",
"members": "Участники",
"members_empty": "Нет участников.",
"not_found_body": "Этот диск не существует или у вас нет доступа.",
"not_found_title": "Диск не найден",
"policies": "Правила",
"policies_help": "Правила, установленные администратором OxiCloud для этого диска. Изменять их могут только администраторы; вы видите текущее состояние.",
"quota": "Квота",
"rename": "Переименовать диск",
"role": {
"commenter": "Комментатор",
"contributor": "Соавтор",
"editor": "Редактор",
"owner": "Владелец",
"viewer": "Читатель"
},
"storage": "Хранилище",
"usage": "Использование",
"used": "Использовано",
"members_personal_immutable": "У личных дисков фиксированное единоличное владение."
},
"group": {
"members_empty": "Нет участников",
"member_count": "{{n}} участников"
}
}
+44 -2
View File
@@ -1153,7 +1153,8 @@
"save": "儲存",
"search": "搜尋",
"yes": "有",
"saving": "儲存中…"
"saving": "儲存中…",
"deleting": "刪除中…"
},
"device": {
"continue": "繼續",
@@ -1210,6 +1211,47 @@
"title_named": "雲端硬碟「{{name}}」為唯讀",
"body": "上傳、編輯、刪除、重新命名、分享和成員變更均被拒絕。讀取和下載仍可正常使用。請聯絡管理員解凍此雲端硬碟。",
"aria": "此雲端硬碟為唯讀"
}
},
"back_to_files": "返回檔案",
"danger_zone": "危險操作",
"delete": "刪除雲端硬碟",
"delete_confirm": "刪除雲端硬碟「{{name}}」?此操作無法復原 — 雲端硬碟必須為空,否則伺服器將拒絕。",
"delete_hint": "刪除雲端硬碟會永久移除。刪除前雲端硬碟必須為空(沒有作用中的檔案或資料夾)。",
"deleted": "雲端硬碟已刪除。",
"field": {
"created": "建立時間",
"default": "預設",
"default_yes": "這是您的主要雲端硬碟",
"id": "識別碼",
"kind": "類型",
"updated": "最後更新"
},
"info": "雲端硬碟資訊",
"kind_personal": "個人雲端硬碟",
"kind_shared": "共用雲端硬碟",
"manage_members": "管理成員",
"members": "成員",
"members_empty": "尚無成員。",
"not_found_body": "此雲端硬碟不存在或您無權存取。",
"not_found_title": "找不到雲端硬碟",
"policies": "規則",
"policies_help": "OxiCloud 管理員為此雲端硬碟設定的規則。只有管理員可以變更;您看到的是目前狀態。",
"quota": "配額",
"rename": "重新命名雲端硬碟",
"role": {
"commenter": "評論者",
"contributor": "貢獻者",
"editor": "編輯者",
"owner": "擁有者",
"viewer": "檢視者"
},
"storage": "儲存",
"usage": "使用量",
"used": "已使用",
"members_personal_immutable": "個人雲端硬碟的成員關係固定為單一擁有者。"
},
"group": {
"members_empty": "無成員",
"member_count": "{{n}} 位成員"
}
}
+44 -2
View File
@@ -1153,7 +1153,8 @@
"save": "保存",
"search": "搜索",
"yes": "有",
"saving": "保存中…"
"saving": "保存中…",
"deleting": "删除中…"
},
"device": {
"continue": "继续",
@@ -1210,6 +1211,47 @@
"title_named": "云盘 \"{{name}}\" 为只读",
"body": "上传、编辑、删除、重命名、分享和成员变更均被拒绝。读取和下载仍可正常使用。请联系管理员解冻此云盘。",
"aria": "此云盘为只读"
}
},
"back_to_files": "返回文件",
"danger_zone": "危险操作",
"delete": "删除云盘",
"delete_confirm": "删除云盘\"{{name}}\"?此操作无法撤销 — 云盘必须为空,否则服务器将拒绝。",
"delete_hint": "删除云盘会永久移除。删除前云盘必须为空(没有活动的文件或文件夹)。",
"deleted": "云盘已删除。",
"field": {
"created": "创建时间",
"default": "默认",
"default_yes": "这是你的主云盘",
"id": "标识符",
"kind": "类型",
"updated": "最近更新"
},
"info": "云盘信息",
"kind_personal": "个人云盘",
"kind_shared": "共享云盘",
"manage_members": "管理成员",
"members": "成员",
"members_empty": "暂无成员。",
"not_found_body": "此云盘不存在或你无权访问。",
"not_found_title": "未找到云盘",
"policies": "策略",
"policies_help": "OxiCloud 管理员为此云盘设置的规则。只有管理员可以更改;你看到的是当前状态。",
"quota": "配额",
"rename": "重命名云盘",
"role": {
"commenter": "评论者",
"contributor": "贡献者",
"editor": "编辑者",
"owner": "所有者",
"viewer": "查看者"
},
"storage": "存储",
"usage": "使用情况",
"used": "已用",
"members_personal_immutable": "个人云盘的成员关系固定为单一所有者。"
},
"group": {
"members_empty": "无成员",
"member_count": "{{n}} 名成员"
}
}