fix(i18n): localize audit logs and new validation messages

This commit is contained in:
shuaiplus
2026-07-05 23:45:26 +08:00
parent d028b194e7
commit 01ff627ac6
6 changed files with 352 additions and 248 deletions
+11 -2
View File
@@ -129,6 +129,10 @@ function formatReason(reason: string): string {
return translatedOrHumanized(keyFor('txt_log_reason_', reason), reason); return translatedOrHumanized(keyFor('txt_log_reason_', reason), reason);
} }
function formatTargetType(type: string): string {
return translatedOrHumanized(keyFor('txt_log_target_type_', type), type);
}
function formatTime(value: string): string { function formatTime(value: string): string {
const date = new Date(value); const date = new Date(value);
return Number.isNaN(date.getTime()) ? value : date.toLocaleString(); return Number.isNaN(date.getTime()) ? value : date.toLocaleString();
@@ -148,11 +152,16 @@ function formatMetaValueForKey(key: string, value: unknown): string {
return translatedOrHumanized(keyFor('txt_log_trigger_', value), value); return translatedOrHumanized(keyFor('txt_log_trigger_', value), value);
} }
if (key === 'type' && typeof value === 'string') { if (key === 'type' && typeof value === 'string') {
return translatedOrHumanized(keyFor('txt_log_target_type_', value), value); return formatTargetType(value);
} }
return formatMetaValue(value); return formatMetaValue(value);
} }
function formatLogTarget(log: AuditLogEntry, metadata: Record<string, unknown>): string {
const targetEmail = typeof metadata.targetEmail === 'string' ? metadata.targetEmail : '';
return log.targetUserEmail || targetEmail || log.targetId || (log.targetType ? formatTargetType(log.targetType) : t('txt_dash'));
}
function iconForCategory(category: AuditLogCategory) { function iconForCategory(category: AuditLogCategory) {
if (category === 'auth') return <ShieldAlert size={16} />; if (category === 'auth') return <ShieldAlert size={16} />;
if (category === 'security') return <UserRound size={16} />; if (category === 'security') return <UserRound size={16} />;
@@ -550,7 +559,7 @@ export default function LogCenterPage(props: LogCenterPageProps) {
<div><span>{t('txt_time')}</span><strong>{formatTime(selectedLog.createdAt)}</strong></div> <div><span>{t('txt_time')}</span><strong>{formatTime(selectedLog.createdAt)}</strong></div>
<div><span>{t('txt_log_category')}</span><strong>{t(`txt_log_category_${selectedCategory}`)}</strong></div> <div><span>{t('txt_log_category')}</span><strong>{t(`txt_log_category_${selectedCategory}`)}</strong></div>
<div><span>{t('txt_actor')}</span><strong>{selectedLog.actorEmail || selectedLog.actorUserId || t('txt_dash')}</strong></div> <div><span>{t('txt_actor')}</span><strong>{selectedLog.actorEmail || selectedLog.actorUserId || t('txt_dash')}</strong></div>
<div><span>{t('txt_target')}</span><strong>{selectedLog.targetUserEmail || String(selectedMetadata.targetEmail || '') || selectedLog.targetId || selectedLog.targetType || t('txt_dash')}</strong></div> <div><span>{t('txt_target')}</span><strong>{formatLogTarget(selectedLog, selectedMetadata)}</strong></div>
</div> </div>
<div className="log-detail-json"> <div className="log-detail-json">
<h4>{t('txt_metadata')}</h4> <h4>{t('txt_metadata')}</h4>
+19
View File
@@ -1014,6 +1014,8 @@ const en: Record<string, string> = {
"txt_totp_qr_scanned": "TOTP value added.", "txt_totp_qr_scanned": "TOTP value added.",
"txt_totp_qr_not_found": "No QR code found in that image.", "txt_totp_qr_not_found": "No QR code found in that image.",
"txt_totp_qr_scan_failed": "Failed to scan QR code.", "txt_totp_qr_scan_failed": "Failed to scan QR code.",
"txt_totp_qr_invalid_image_type": "Choose an image file.",
"txt_totp_qr_image_too_large": "Choose an image smaller than 8 MB.",
"txt_totp_qr_unsupported": "This browser does not support QR scanning. Try Chrome or Edge, or paste the TOTP link or secret manually.", "txt_totp_qr_unsupported": "This browser does not support QR scanning. Try Chrome or Edge, or paste the TOTP link or secret manually.",
"txt_totp_qr_camera_unavailable": "Camera is unavailable. Check browser permission, or choose an image.", "txt_totp_qr_camera_unavailable": "Camera is unavailable. Check browser permission, or choose an image.",
"txt_totp_qr_choose_image": "Choose image", "txt_totp_qr_choose_image": "Choose image",
@@ -1125,6 +1127,12 @@ const en: Record<string, string> = {
"txt_import_invalid_password_protected_file": "Invalid password-protected export file.", "txt_import_invalid_password_protected_file": "Invalid password-protected export file.",
"txt_import_decrypt_failed": "Failed to decrypt import file.", "txt_import_decrypt_failed": "Failed to decrypt import file.",
"txt_import_empty_zip_archive": "Empty zip archive.", "txt_import_empty_zip_archive": "Empty zip archive.",
"txt_import_zip_too_large": "ZIP archive is too large. Maximum size is {size} MiB.",
"txt_import_file_too_large": "Import file is too large. Maximum size is {size} MiB.",
"txt_import_zip_too_many_files": "ZIP archive contains too many files.",
"txt_import_zip_entry_too_large": "ZIP archive contains a file larger than {size} MiB.",
"txt_import_zip_expands_too_large": "ZIP archive expands beyond the current import limit of {size} MiB.",
"txt_import_zip_unsafe_file_name": "ZIP archive contains an unsafe file name.",
"txt_import_no_json_found_in_zip": "No importable JSON data found in zip archive.", "txt_import_no_json_found_in_zip": "No importable JSON data found in zip archive.",
"txt_import_data_json_not_found": "data.json not found in zip archive.", "txt_import_data_json_not_found": "data.json not found in zip archive.",
"txt_import_zip_password_required": "ZIP password is required.", "txt_import_zip_password_required": "ZIP password is required.",
@@ -1219,11 +1227,18 @@ const en: Record<string, string> = {
"txt_log_action_account_api_key_create": "Create API key", "txt_log_action_account_api_key_create": "Create API key",
"txt_log_action_account_api_key_rotate": "Rotate API key", "txt_log_action_account_api_key_rotate": "Rotate API key",
"txt_log_action_account_keys_update": "Update account keys", "txt_log_action_account_keys_update": "Update account keys",
"txt_log_action_account_passkey_create": "Create login passkey",
"txt_log_action_account_passkey_delete": "Delete login passkey",
"txt_log_action_account_passkey_encryption_enable": "Enable passkey vault unlock",
"txt_log_action_account_profile_update": "Update account profile", "txt_log_action_account_profile_update": "Update account profile",
"txt_log_action_account_totp_disable": "Disable two-step login", "txt_log_action_account_totp_disable": "Disable two-step login",
"txt_log_action_account_totp_enable": "Enable two-step login", "txt_log_action_account_totp_enable": "Enable two-step login",
"txt_log_action_account_totp_recover": "Recover two-step login", "txt_log_action_account_totp_recover": "Recover two-step login",
"txt_log_action_account_verify_devices_update": "Update device verification", "txt_log_action_account_verify_devices_update": "Update device verification",
"txt_log_action_account_webauthn_2fa_delete": "Delete passkey two-step login key",
"txt_log_action_account_webauthn_2fa_enable": "Enable passkey two-step login",
"txt_log_action_account_yubikey_enable": "Update YubiKey OTP settings",
"txt_log_action_admin_audit_clear": "Clear audit logs",
"txt_log_action_admin_audit_settings_update": "Update log retention settings", "txt_log_action_admin_audit_settings_update": "Update log retention settings",
"txt_log_action_admin_backup_export": "Export backup", "txt_log_action_admin_backup_export": "Export backup",
"txt_log_action_admin_backup_import": "Import backup", "txt_log_action_admin_backup_import": "Import backup",
@@ -1246,6 +1261,8 @@ const en: Record<string, string> = {
"txt_log_action_auth_login_failed_bad_password": "Login failed: bad password", "txt_log_action_auth_login_failed_bad_password": "Login failed: bad password",
"txt_log_action_auth_login_failed_user_inactive": "Login failed: inactive account", "txt_log_action_auth_login_failed_user_inactive": "Login failed: inactive account",
"txt_log_action_auth_login_success": "Login succeeded", "txt_log_action_auth_login_success": "Login succeeded",
"txt_log_action_auth_passkey_login_failed": "Passkey login failed",
"txt_log_action_auth_passkey_login_success": "Passkey login succeeded",
"txt_log_action_auth_refresh_failed": "Refresh login failed: {reason}", "txt_log_action_auth_refresh_failed": "Refresh login failed: {reason}",
"txt_log_action_cipher_delete_permanent": "Permanently delete vault item", "txt_log_action_cipher_delete_permanent": "Permanently delete vault item",
"txt_log_action_cipher_delete_permanent_bulk": "Permanently delete vault items", "txt_log_action_cipher_delete_permanent_bulk": "Permanently delete vault items",
@@ -1296,6 +1313,7 @@ const en: Record<string, string> = {
"txt_log_meta_method": "Request method", "txt_log_meta_method": "Request method",
"txt_log_meta_path": "Request path", "txt_log_meta_path": "Request path",
"txt_log_meta_provider": "Provider", "txt_log_meta_provider": "Provider",
"txt_log_meta_prf_status": "PRF status",
"txt_log_meta_prune_error": "Cleanup error", "txt_log_meta_prune_error": "Cleanup error",
"txt_log_meta_pruned_file_count": "Cleaned files", "txt_log_meta_pruned_file_count": "Cleaned files",
"txt_log_meta_raw": "Raw data", "txt_log_meta_raw": "Raw data",
@@ -1331,6 +1349,7 @@ const en: Record<string, string> = {
"txt_log_reason_user_inactive": "User inactive", "txt_log_reason_user_inactive": "User inactive",
"txt_log_reason_user_missing": "User missing", "txt_log_reason_user_missing": "User missing",
"txt_log_target_type_attachment": "Attachment", "txt_log_target_type_attachment": "Attachment",
"txt_log_target_type_account_passkey": "Login passkey",
"txt_log_target_type_audit_log": "Log", "txt_log_target_type_audit_log": "Log",
"txt_log_target_type_backup": "Backup", "txt_log_target_type_backup": "Backup",
"txt_log_target_type_cipher": "Vault item", "txt_log_target_type_cipher": "Vault item",
+141 -122
View File
@@ -1014,6 +1014,8 @@ const es: Record<string, string> = {
"txt_totp_qr_scanned": "Valor TOTP agregado.", "txt_totp_qr_scanned": "Valor TOTP agregado.",
"txt_totp_qr_not_found": "No se encontró ningún código QR en esa imagen.", "txt_totp_qr_not_found": "No se encontró ningún código QR en esa imagen.",
"txt_totp_qr_scan_failed": "No se pudo escanear el código QR.", "txt_totp_qr_scan_failed": "No se pudo escanear el código QR.",
"txt_totp_qr_invalid_image_type": "Elija un archivo de imagen.",
"txt_totp_qr_image_too_large": "Elija una imagen de menos de 8 MB.",
"txt_totp_qr_unsupported": "Este navegador no admite escaneo QR. Pruebe Chrome o Edge, o pegue manualmente el enlace o secreto TOTP.", "txt_totp_qr_unsupported": "Este navegador no admite escaneo QR. Pruebe Chrome o Edge, o pegue manualmente el enlace o secreto TOTP.",
"txt_totp_qr_camera_unavailable": "La cámara no está disponible. Revise el permiso del navegador o elija una imagen.", "txt_totp_qr_camera_unavailable": "La cámara no está disponible. Revise el permiso del navegador o elija una imagen.",
"txt_totp_qr_choose_image": "Elegir imagen", "txt_totp_qr_choose_image": "Elegir imagen",
@@ -1125,6 +1127,12 @@ const es: Record<string, string> = {
"txt_import_invalid_password_protected_file": "Archivo de exportación protegido con contraseña no válido.", "txt_import_invalid_password_protected_file": "Archivo de exportación protegido con contraseña no válido.",
"txt_import_decrypt_failed": "Error al descifrar el archivo de importación.", "txt_import_decrypt_failed": "Error al descifrar el archivo de importación.",
"txt_import_empty_zip_archive": "El archivo ZIP está vacío.", "txt_import_empty_zip_archive": "El archivo ZIP está vacío.",
"txt_import_zip_too_large": "El archivo ZIP es demasiado grande. El tamaño máximo es {size} MiB.",
"txt_import_file_too_large": "El archivo de importación es demasiado grande. El tamaño máximo es {size} MiB.",
"txt_import_zip_too_many_files": "El archivo ZIP contiene demasiados archivos.",
"txt_import_zip_entry_too_large": "El archivo ZIP contiene un archivo mayor que {size} MiB.",
"txt_import_zip_expands_too_large": "El archivo ZIP se descomprime por encima del límite actual de importación de {size} MiB.",
"txt_import_zip_unsafe_file_name": "El archivo ZIP contiene un nombre de archivo no seguro.",
"txt_import_no_json_found_in_zip": "No se encontraron datos JSON importables en el archivo zip.", "txt_import_no_json_found_in_zip": "No se encontraron datos JSON importables en el archivo zip.",
"txt_import_data_json_not_found": "No se encontró data.json en el archivo ZIP.", "txt_import_data_json_not_found": "No se encontró data.json en el archivo ZIP.",
"txt_import_zip_password_required": "La contraseña ZIP es obligatoria.", "txt_import_zip_password_required": "La contraseña ZIP es obligatoria.",
@@ -1216,133 +1224,144 @@ const es: Record<string, string> = {
"txt_log_level_info": "Info", "txt_log_level_info": "Info",
"txt_log_level_security": "Seguridad", "txt_log_level_security": "Seguridad",
"txt_log_level_warn": "Aviso", "txt_log_level_warn": "Aviso",
"txt_log_action_account_api_key_create": "Create API key", "txt_log_action_account_api_key_create": "Crear clave de API",
"txt_log_action_account_api_key_rotate": "Rotate API key", "txt_log_action_account_api_key_rotate": "Rotar clave de API",
"txt_log_action_account_keys_update": "Update account keys", "txt_log_action_account_keys_update": "Actualizar claves de cuenta",
"txt_log_action_account_profile_update": "Update account profile", "txt_log_action_account_passkey_create": "Crear passkey de inicio de sesión",
"txt_log_action_account_totp_disable": "Disable two-step login", "txt_log_action_account_passkey_delete": "Eliminar passkey de inicio de sesión",
"txt_log_action_account_totp_enable": "Enable two-step login", "txt_log_action_account_passkey_encryption_enable": "Activar desbloqueo de la bóveda con passkey",
"txt_log_action_account_totp_recover": "Recover two-step login", "txt_log_action_account_profile_update": "Actualizar perfil de cuenta",
"txt_log_action_account_verify_devices_update": "Update device verification", "txt_log_action_account_totp_disable": "Desactivar verificación en dos pasos",
"txt_log_action_admin_audit_settings_update": "Update log retention settings", "txt_log_action_account_totp_enable": "Activar verificación en dos pasos",
"txt_log_action_admin_backup_export": "Export backup", "txt_log_action_account_totp_recover": "Recuperar verificación en dos pasos",
"txt_log_action_admin_backup_import": "Import backup", "txt_log_action_account_verify_devices_update": "Actualizar verificación de dispositivos",
"txt_log_action_admin_backup_remote_delete": "Delete remote backup", "txt_log_action_account_webauthn_2fa_delete": "Eliminar clave de verificación en dos pasos con passkey",
"txt_log_action_admin_backup_remote_manual": "Manual remote backup succeeded", "txt_log_action_account_webauthn_2fa_enable": "Activar verificación en dos pasos con passkey",
"txt_log_action_admin_backup_remote_manual_failed": "Manual remote backup failed", "txt_log_action_account_yubikey_enable": "Actualizar configuración de YubiKey OTP",
"txt_log_action_admin_backup_remote_scheduled": "Scheduled remote backup succeeded", "txt_log_action_admin_audit_clear": "Borrar registros de auditoría",
"txt_log_action_admin_backup_remote_scheduled_failed": "Scheduled remote backup failed", "txt_log_action_admin_audit_settings_update": "Actualizar retención de registros",
"txt_log_action_admin_backup_settings_repair": "Repair backup settings", "txt_log_action_admin_backup_export": "Exportar copia de seguridad",
"txt_log_action_admin_backup_settings_update": "Update backup settings", "txt_log_action_admin_backup_import": "Importar copia de seguridad",
"txt_log_action_admin_invite_create": "Create invite", "txt_log_action_admin_backup_remote_delete": "Eliminar copia remota",
"txt_log_action_admin_invite_delete": "Delete invite", "txt_log_action_admin_backup_remote_manual": "Copia remota manual completada",
"txt_log_action_admin_invite_delete_all": "Clear invites", "txt_log_action_admin_backup_remote_manual_failed": "Error en copia remota manual",
"txt_log_action_admin_invite_delete_invalid": "Delete invalid invites", "txt_log_action_admin_backup_remote_scheduled": "Copia remota programada completada",
"txt_log_action_admin_invite_revoke": "Revoke invite", "txt_log_action_admin_backup_remote_scheduled_failed": "Error en copia remota programada",
"txt_log_action_admin_user_delete": "Delete user", "txt_log_action_admin_backup_settings_repair": "Reparar configuración de copias",
"txt_log_action_admin_user_status": "Change user status", "txt_log_action_admin_backup_settings_update": "Actualizar configuración de copias",
"txt_log_action_attachment_delete": "Delete attachment", "txt_log_action_admin_invite_create": "Crear invitación",
"txt_log_action_auth_login_failed_bad_api_key": "Login failed: bad API key", "txt_log_action_admin_invite_delete": "Eliminar invitación",
"txt_log_action_auth_login_failed_bad_password": "Login failed: bad password", "txt_log_action_admin_invite_delete_all": "Borrar invitaciones",
"txt_log_action_auth_login_failed_user_inactive": "Login failed: inactive account", "txt_log_action_admin_invite_delete_invalid": "Eliminar invitaciones no válidas",
"txt_log_action_auth_login_success": "Login succeeded", "txt_log_action_admin_invite_revoke": "Revocar invitación",
"txt_log_action_auth_refresh_failed": "Refresh login failed: {reason}", "txt_log_action_admin_user_delete": "Eliminar usuario",
"txt_log_action_cipher_delete_permanent": "Permanently delete vault item", "txt_log_action_admin_user_status": "Cambiar estado del usuario",
"txt_log_action_cipher_delete_permanent_bulk": "Permanently delete vault items", "txt_log_action_attachment_delete": "Eliminar adjunto",
"txt_log_action_cipher_delete_soft": "Move vault item to trash", "txt_log_action_auth_login_failed_bad_api_key": "Inicio de sesión fallido: clave de API incorrecta",
"txt_log_action_cipher_delete_soft_bulk": "Move vault items to trash", "txt_log_action_auth_login_failed_bad_password": "Inicio de sesión fallido: contraseña incorrecta",
"txt_log_action_device_deactivate": "Deactivate device", "txt_log_action_auth_login_failed_user_inactive": "Inicio de sesión fallido: cuenta inactiva",
"txt_log_action_device_delete": "Delete device", "txt_log_action_auth_login_success": "Inicio de sesión correcto",
"txt_log_action_device_delete_all": "Delete all devices", "txt_log_action_auth_passkey_login_failed": "Error de inicio de sesión con passkey",
"txt_log_action_device_name_update": "Update device name", "txt_log_action_auth_passkey_login_success": "Inicio de sesión con passkey correcto",
"txt_log_action_device_trust_permanent": "Trust device permanently", "txt_log_action_auth_refresh_failed": "Error al renovar inicio de sesión: {reason}",
"txt_log_action_device_trust_revoke": "Revoke device trust", "txt_log_action_cipher_delete_permanent": "Eliminar elemento de bóveda permanentemente",
"txt_log_action_device_trust_revoke_batch": "Revoke device trust in bulk", "txt_log_action_cipher_delete_permanent_bulk": "Eliminar elementos de bóveda permanentemente",
"txt_log_action_folder_delete": "Delete folder", "txt_log_action_cipher_delete_soft": "Mover elemento de bóveda a la papelera",
"txt_log_action_folder_delete_bulk": "Delete folders", "txt_log_action_cipher_delete_soft_bulk": "Mover elementos de bóveda a la papelera",
"txt_log_action_send_auth_remove": "Remove Send authentication", "txt_log_action_device_deactivate": "Desactivar dispositivo",
"txt_log_action_send_delete": "Delete Send", "txt_log_action_device_delete": "Eliminar dispositivo",
"txt_log_action_send_delete_bulk": "Delete Sends", "txt_log_action_device_delete_all": "Eliminar todos los dispositivos",
"txt_log_action_send_password_remove": "Remove Send password", "txt_log_action_device_name_update": "Actualizar nombre del dispositivo",
"txt_log_action_user_password_change": "Change master password", "txt_log_action_device_trust_permanent": "Confiar permanentemente en el dispositivo",
"txt_log_action_user_register_first_admin": "Register first admin", "txt_log_action_device_trust_revoke": "Revocar confianza del dispositivo",
"txt_log_action_user_register_invite": "Register by invite", "txt_log_action_device_trust_revoke_batch": "Revocar confianza de dispositivos en lote",
"txt_log_meta_attachments": "Attachments", "txt_log_action_folder_delete": "Eliminar carpeta",
"txt_log_action_folder_delete_bulk": "Eliminar carpetas",
"txt_log_action_send_auth_remove": "Quitar autenticación de Send",
"txt_log_action_send_delete": "Eliminar Send",
"txt_log_action_send_delete_bulk": "Eliminar Sends",
"txt_log_action_send_password_remove": "Quitar contraseña de Send",
"txt_log_action_user_password_change": "Cambiar contraseña maestra",
"txt_log_action_user_register_first_admin": "Registrar primer administrador",
"txt_log_action_user_register_invite": "Registrarse por invitación",
"txt_log_meta_attachments": "Adjuntos",
"txt_log_meta_bytes": "Bytes", "txt_log_meta_bytes": "Bytes",
"txt_log_meta_changed": "Changed fields", "txt_log_meta_changed": "Campos modificados",
"txt_log_meta_checksum_mismatch_accepted": "Accepted checksum mismatch", "txt_log_meta_checksum_mismatch_accepted": "Desajuste de checksum aceptado",
"txt_log_meta_cipher_id": "Vault item ID", "txt_log_meta_cipher_id": "ID del elemento de bóveda",
"txt_log_meta_ciphers": "Vault items", "txt_log_meta_ciphers": "Elementos de bóveda",
"txt_log_meta_compat": "Compatibility", "txt_log_meta_compat": "Compatibilidad",
"txt_log_meta_compressed_bytes": "Compressed bytes", "txt_log_meta_compressed_bytes": "Bytes comprimidos",
"txt_log_meta_count": "Count", "txt_log_meta_count": "Cantidad",
"txt_log_meta_deleted": "Deleted count", "txt_log_meta_deleted": "Cantidad eliminada",
"txt_log_meta_destination_count": "Destination count", "txt_log_meta_destination_count": "Cantidad de destinos",
"txt_log_meta_destination_id": "Destination ID", "txt_log_meta_destination_id": "ID de destino",
"txt_log_meta_destination_name": "Destination name", "txt_log_meta_destination_name": "Nombre de destino",
"txt_log_meta_destination_type": "Destination type", "txt_log_meta_destination_type": "Tipo de destino",
"txt_log_meta_device_identifier": "Device ID", "txt_log_meta_device_identifier": "ID del dispositivo",
"txt_log_meta_device_type": "Device type", "txt_log_meta_device_type": "Tipo de dispositivo",
"txt_log_meta_email": "Email", "txt_log_meta_email": "Email",
"txt_log_meta_error": "Error", "txt_log_meta_error": "Error",
"txt_log_meta_expires_in_hours": "Expires in hours", "txt_log_meta_expires_in_hours": "Caduca en horas",
"txt_log_meta_file_bytes": "File bytes", "txt_log_meta_file_bytes": "Bytes del archivo",
"txt_log_meta_file_name": "File name", "txt_log_meta_file_name": "Nombre del archivo",
"txt_log_meta_folder_id": "Folder ID", "txt_log_meta_folder_id": "ID de carpeta",
"txt_log_meta_grant_type": "Login method", "txt_log_meta_grant_type": "Método de inicio de sesión",
"txt_log_meta_includes_attachments": "Includes attachments", "txt_log_meta_includes_attachments": "Incluye adjuntos",
"txt_log_meta_ip": "IP address", "txt_log_meta_ip": "Dirección IP",
"txt_log_meta_max_entries": "Entry limit", "txt_log_meta_max_entries": "Límite de entradas",
"txt_log_meta_method": "Request method", "txt_log_meta_method": "Método de solicitud",
"txt_log_meta_path": "Request path", "txt_log_meta_path": "Ruta de solicitud",
"txt_log_meta_provider": "Provider", "txt_log_meta_provider": "Proveedor",
"txt_log_meta_prune_error": "Cleanup error", "txt_log_meta_prf_status": "Estado de PRF",
"txt_log_meta_pruned_file_count": "Cleaned files", "txt_log_meta_prune_error": "Error de limpieza",
"txt_log_meta_raw": "Raw data", "txt_log_meta_pruned_file_count": "Archivos limpiados",
"txt_log_meta_reason": "Reason", "txt_log_meta_raw": "Datos sin procesar",
"txt_log_meta_remote_path": "Remote path", "txt_log_meta_reason": "Motivo",
"txt_log_meta_removed": "Removed count", "txt_log_meta_remote_path": "Ruta remota",
"txt_log_meta_removed_devices": "Removed devices", "txt_log_meta_removed": "Cantidad quitada",
"txt_log_meta_removed_sessions": "Removed sessions", "txt_log_meta_removed_devices": "Dispositivos quitados",
"txt_log_meta_removed_trusted": "Trust removals", "txt_log_meta_removed_sessions": "Sesiones quitadas",
"txt_log_meta_replace_existing": "Replace existing data", "txt_log_meta_removed_trusted": "Confianzas revocadas",
"txt_log_meta_requested": "Requested count", "txt_log_meta_replace_existing": "Reemplazar datos existentes",
"txt_log_meta_requested_count": "Requested count", "txt_log_meta_requested": "Cantidad solicitada",
"txt_log_meta_retention_days": "Retention days", "txt_log_meta_requested_count": "Cantidad solicitada",
"txt_log_meta_scheduled_destination_count": "Scheduled destinations", "txt_log_meta_retention_days": "Días de retención",
"txt_log_meta_size": "Size", "txt_log_meta_scheduled_destination_count": "Destinos programados",
"txt_log_meta_skipped_attachments": "Skipped attachments", "txt_log_meta_size": "Tamaño",
"txt_log_meta_skipped_reason": "Skip reason", "txt_log_meta_skipped_attachments": "Adjuntos omitidos",
"txt_log_meta_status": "Status", "txt_log_meta_skipped_reason": "Motivo de omisión",
"txt_log_meta_target_email": "Target email", "txt_log_meta_status": "Estado",
"txt_log_meta_trigger": "Trigger", "txt_log_meta_target_email": "Correo del destino",
"txt_log_meta_type": "Type", "txt_log_meta_trigger": "Disparador",
"txt_log_meta_updated": "Updated count", "txt_log_meta_type": "Tipo",
"txt_log_meta_upload_verification_attempts": "Upload verification attempts", "txt_log_meta_updated": "Cantidad actualizada",
"txt_log_meta_user_agent": "Browser/client", "txt_log_meta_upload_verification_attempts": "Intentos de verificación de subida",
"txt_log_meta_users": "Users", "txt_log_meta_user_agent": "Navegador/cliente",
"txt_log_meta_verify_devices": "Verify devices", "txt_log_meta_users": "Usuarios",
"txt_log_meta_web_session": "Web session", "txt_log_meta_verify_devices": "Verificar dispositivos",
"txt_log_reason_bad_api_key": "Bad API key", "txt_log_meta_web_session": "Sesión web",
"txt_log_reason_bad_password": "Bad password", "txt_log_reason_bad_api_key": "Clave de API incorrecta",
"txt_log_reason_device_missing": "Device missing", "txt_log_reason_bad_password": "Contraseña incorrecta",
"txt_log_reason_device_session_mismatch": "Device session mismatch", "txt_log_reason_device_missing": "Dispositivo no encontrado",
"txt_log_reason_token_not_found_or_expired": "Token missing or expired", "txt_log_reason_device_session_mismatch": "La sesión no coincide con el dispositivo",
"txt_log_reason_user_inactive": "User inactive", "txt_log_reason_token_not_found_or_expired": "Token no encontrado o caducado",
"txt_log_reason_user_missing": "User missing", "txt_log_reason_user_inactive": "Usuario inactivo",
"txt_log_target_type_attachment": "Attachment", "txt_log_reason_user_missing": "Usuario no encontrado",
"txt_log_target_type_audit_log": "Log", "txt_log_target_type_attachment": "Adjunto",
"txt_log_target_type_backup": "Backup", "txt_log_target_type_account_passkey": "Passkey de inicio de sesión",
"txt_log_target_type_cipher": "Vault item", "txt_log_target_type_audit_log": "Registro",
"txt_log_target_type_device": "Device", "txt_log_target_type_backup": "Copia de seguridad",
"txt_log_target_type_folder": "Folder", "txt_log_target_type_cipher": "Elemento de bóveda",
"txt_log_target_type_invite": "Invite", "txt_log_target_type_device": "Dispositivo",
"txt_log_target_type_refresh_token": "Refresh token", "txt_log_target_type_folder": "Carpeta",
"txt_log_target_type_invite": "Invitación",
"txt_log_target_type_refresh_token": "Token de renovación",
"txt_log_target_type_send": "Send", "txt_log_target_type_send": "Send",
"txt_log_target_type_user": "User", "txt_log_target_type_user": "Usuario",
"txt_log_trigger_manual": "Manual", "txt_log_trigger_manual": "Manual",
"txt_log_trigger_remote": "Remote", "txt_log_trigger_remote": "Remoto",
"txt_log_trigger_scheduled": "Scheduled", "txt_log_trigger_scheduled": "Programado",
"txt_log_max_1000": "Hasta 1000 entradas", "txt_log_max_1000": "Hasta 1000 entradas",
"txt_log_max_5000": "Hasta 5000 entradas", "txt_log_max_5000": "Hasta 5000 entradas",
"txt_log_max_10000": "Hasta 10 000 entradas", "txt_log_max_10000": "Hasta 10 000 entradas",
+143 -124
View File
@@ -1014,6 +1014,8 @@ const ru: Record<string, string> = {
"txt_totp_qr_scanned": "Значение TOTP добавлено.", "txt_totp_qr_scanned": "Значение TOTP добавлено.",
"txt_totp_qr_not_found": "QR-код на этом изображении не найден.", "txt_totp_qr_not_found": "QR-код на этом изображении не найден.",
"txt_totp_qr_scan_failed": "Не удалось отсканировать QR-код.", "txt_totp_qr_scan_failed": "Не удалось отсканировать QR-код.",
"txt_totp_qr_invalid_image_type": "Выберите файл изображения.",
"txt_totp_qr_image_too_large": "Выберите изображение меньше 8 МБ.",
"txt_totp_qr_unsupported": "Этот браузер не поддерживает сканирование QR. Попробуйте Chrome или Edge либо вставьте ссылку или секрет TOTP вручную.", "txt_totp_qr_unsupported": "Этот браузер не поддерживает сканирование QR. Попробуйте Chrome или Edge либо вставьте ссылку или секрет TOTP вручную.",
"txt_totp_qr_camera_unavailable": "Камера недоступна. Проверьте разрешение браузера или выберите изображение.", "txt_totp_qr_camera_unavailable": "Камера недоступна. Проверьте разрешение браузера или выберите изображение.",
"txt_totp_qr_choose_image": "Выбрать изображение", "txt_totp_qr_choose_image": "Выбрать изображение",
@@ -1125,6 +1127,12 @@ const ru: Record<string, string> = {
"txt_import_invalid_password_protected_file": "Неверный файл экспорта, защищенный паролем.", "txt_import_invalid_password_protected_file": "Неверный файл экспорта, защищенный паролем.",
"txt_import_decrypt_failed": "Не удалось расшифровать файл импорта.", "txt_import_decrypt_failed": "Не удалось расшифровать файл импорта.",
"txt_import_empty_zip_archive": "Пустой zip-архив.", "txt_import_empty_zip_archive": "Пустой zip-архив.",
"txt_import_zip_too_large": "ZIP-архив слишком большой. Максимальный размер: {size} MiB.",
"txt_import_file_too_large": "Файл импорта слишком большой. Максимальный размер: {size} MiB.",
"txt_import_zip_too_many_files": "ZIP-архив содержит слишком много файлов.",
"txt_import_zip_entry_too_large": "ZIP-архив содержит файл больше {size} MiB.",
"txt_import_zip_expands_too_large": "ZIP-архив распаковывается за текущий лимит импорта {size} MiB.",
"txt_import_zip_unsafe_file_name": "ZIP-архив содержит небезопасное имя файла.",
"txt_import_no_json_found_in_zip": "В zip-архиве не найдены импортируемые данные JSON.", "txt_import_no_json_found_in_zip": "В zip-архиве не найдены импортируемые данные JSON.",
"txt_import_data_json_not_found": "data.json не найден в zip-архиве.", "txt_import_data_json_not_found": "data.json не найден в zip-архиве.",
"txt_import_zip_password_required": "Требуется пароль ZIP.", "txt_import_zip_password_required": "Требуется пароль ZIP.",
@@ -1216,133 +1224,144 @@ const ru: Record<string, string> = {
"txt_log_level_info": "Инфо", "txt_log_level_info": "Инфо",
"txt_log_level_security": "Безопасность", "txt_log_level_security": "Безопасность",
"txt_log_level_warn": "Предупреждение", "txt_log_level_warn": "Предупреждение",
"txt_log_action_account_api_key_create": "Create API key", "txt_log_action_account_api_key_create": "Создание API-ключа",
"txt_log_action_account_api_key_rotate": "Rotate API key", "txt_log_action_account_api_key_rotate": "Ротация API-ключа",
"txt_log_action_account_keys_update": "Update account keys", "txt_log_action_account_keys_update": "Обновление ключей учетной записи",
"txt_log_action_account_profile_update": "Update account profile", "txt_log_action_account_passkey_create": "Создание ключа входа",
"txt_log_action_account_totp_disable": "Disable two-step login", "txt_log_action_account_passkey_delete": "Удаление ключа входа",
"txt_log_action_account_totp_enable": "Enable two-step login", "txt_log_action_account_passkey_encryption_enable": "Включение разблокировки хранилища ключом доступа",
"txt_log_action_account_totp_recover": "Recover two-step login", "txt_log_action_account_profile_update": "Обновление профиля учетной записи",
"txt_log_action_account_verify_devices_update": "Update device verification", "txt_log_action_account_totp_disable": "Отключение двухфакторной проверки",
"txt_log_action_admin_audit_settings_update": "Update log retention settings", "txt_log_action_account_totp_enable": "Включение двухфакторной проверки",
"txt_log_action_admin_backup_export": "Export backup", "txt_log_action_account_totp_recover": "Восстановление двухфакторной проверки",
"txt_log_action_admin_backup_import": "Import backup", "txt_log_action_account_verify_devices_update": "Обновление проверки устройств",
"txt_log_action_admin_backup_remote_delete": "Delete remote backup", "txt_log_action_account_webauthn_2fa_delete": "Удаление ключа двухфакторной проверки",
"txt_log_action_admin_backup_remote_manual": "Manual remote backup succeeded", "txt_log_action_account_webauthn_2fa_enable": "Включение двухфакторной проверки ключом доступа",
"txt_log_action_admin_backup_remote_manual_failed": "Manual remote backup failed", "txt_log_action_account_yubikey_enable": "Обновление настроек YubiKey OTP",
"txt_log_action_admin_backup_remote_scheduled": "Scheduled remote backup succeeded", "txt_log_action_admin_audit_clear": "Очистка журнала аудита",
"txt_log_action_admin_backup_remote_scheduled_failed": "Scheduled remote backup failed", "txt_log_action_admin_audit_settings_update": "Обновление хранения журналов",
"txt_log_action_admin_backup_settings_repair": "Repair backup settings", "txt_log_action_admin_backup_export": "Экспорт резервной копии",
"txt_log_action_admin_backup_settings_update": "Update backup settings", "txt_log_action_admin_backup_import": "Импорт резервной копии",
"txt_log_action_admin_invite_create": "Create invite", "txt_log_action_admin_backup_remote_delete": "Удаление удаленной резервной копии",
"txt_log_action_admin_invite_delete": "Delete invite", "txt_log_action_admin_backup_remote_manual": "Ручное удаленное резервное копирование выполнено",
"txt_log_action_admin_invite_delete_all": "Clear invites", "txt_log_action_admin_backup_remote_manual_failed": "Ошибка ручного удаленного резервного копирования",
"txt_log_action_admin_invite_delete_invalid": "Delete invalid invites", "txt_log_action_admin_backup_remote_scheduled": "Запланированное удаленное резервное копирование выполнено",
"txt_log_action_admin_invite_revoke": "Revoke invite", "txt_log_action_admin_backup_remote_scheduled_failed": "Ошибка запланированного удаленного резервного копирования",
"txt_log_action_admin_user_delete": "Delete user", "txt_log_action_admin_backup_settings_repair": "Восстановление настроек резервного копирования",
"txt_log_action_admin_user_status": "Change user status", "txt_log_action_admin_backup_settings_update": "Обновление настроек резервного копирования",
"txt_log_action_attachment_delete": "Delete attachment", "txt_log_action_admin_invite_create": "Создание приглашения",
"txt_log_action_auth_login_failed_bad_api_key": "Login failed: bad API key", "txt_log_action_admin_invite_delete": "Удаление приглашения",
"txt_log_action_auth_login_failed_bad_password": "Login failed: bad password", "txt_log_action_admin_invite_delete_all": "Очистка приглашений",
"txt_log_action_auth_login_failed_user_inactive": "Login failed: inactive account", "txt_log_action_admin_invite_delete_invalid": "Удаление недействительных приглашений",
"txt_log_action_auth_login_success": "Login succeeded", "txt_log_action_admin_invite_revoke": "Отзыв приглашения",
"txt_log_action_auth_refresh_failed": "Refresh login failed: {reason}", "txt_log_action_admin_user_delete": "Удаление пользователя",
"txt_log_action_cipher_delete_permanent": "Permanently delete vault item", "txt_log_action_admin_user_status": "Изменение статуса пользователя",
"txt_log_action_cipher_delete_permanent_bulk": "Permanently delete vault items", "txt_log_action_attachment_delete": "Удаление вложения",
"txt_log_action_cipher_delete_soft": "Move vault item to trash", "txt_log_action_auth_login_failed_bad_api_key": "Ошибка входа: неверный API-ключ",
"txt_log_action_cipher_delete_soft_bulk": "Move vault items to trash", "txt_log_action_auth_login_failed_bad_password": "Ошибка входа: неверный пароль",
"txt_log_action_device_deactivate": "Deactivate device", "txt_log_action_auth_login_failed_user_inactive": "Ошибка входа: учетная запись неактивна",
"txt_log_action_device_delete": "Delete device", "txt_log_action_auth_login_success": "Вход выполнен",
"txt_log_action_device_delete_all": "Delete all devices", "txt_log_action_auth_passkey_login_failed": "Ошибка входа по ключу доступа",
"txt_log_action_device_name_update": "Update device name", "txt_log_action_auth_passkey_login_success": "Вход по ключу доступа выполнен",
"txt_log_action_device_trust_permanent": "Trust device permanently", "txt_log_action_auth_refresh_failed": "Не удалось обновить вход: {reason}",
"txt_log_action_device_trust_revoke": "Revoke device trust", "txt_log_action_cipher_delete_permanent": "Окончательное удаление элемента хранилища",
"txt_log_action_device_trust_revoke_batch": "Revoke device trust in bulk", "txt_log_action_cipher_delete_permanent_bulk": "Окончательное удаление элементов хранилища",
"txt_log_action_folder_delete": "Delete folder", "txt_log_action_cipher_delete_soft": "Перемещение элемента хранилища в корзину",
"txt_log_action_folder_delete_bulk": "Delete folders", "txt_log_action_cipher_delete_soft_bulk": "Перемещение элементов хранилища в корзину",
"txt_log_action_send_auth_remove": "Remove Send authentication", "txt_log_action_device_deactivate": "Деактивация устройства",
"txt_log_action_send_delete": "Delete Send", "txt_log_action_device_delete": "Удаление устройства",
"txt_log_action_send_delete_bulk": "Delete Sends", "txt_log_action_device_delete_all": "Удаление всех устройств",
"txt_log_action_send_password_remove": "Remove Send password", "txt_log_action_device_name_update": "Обновление имени устройства",
"txt_log_action_user_password_change": "Change master password", "txt_log_action_device_trust_permanent": "Постоянное доверие устройству",
"txt_log_action_user_register_first_admin": "Register first admin", "txt_log_action_device_trust_revoke": "Отзыв доверия устройству",
"txt_log_action_user_register_invite": "Register by invite", "txt_log_action_device_trust_revoke_batch": "Массовый отзыв доверия устройствам",
"txt_log_meta_attachments": "Attachments", "txt_log_action_folder_delete": "Удаление папки",
"txt_log_action_folder_delete_bulk": "Удаление папок",
"txt_log_action_send_auth_remove": "Удаление проверки Send",
"txt_log_action_send_delete": "Удаление Send",
"txt_log_action_send_delete_bulk": "Удаление Send",
"txt_log_action_send_password_remove": "Удаление пароля Send",
"txt_log_action_user_password_change": "Изменение мастер-пароля",
"txt_log_action_user_register_first_admin": "Регистрация первого администратора",
"txt_log_action_user_register_invite": "Регистрация по приглашению",
"txt_log_meta_attachments": "Вложения",
"txt_log_meta_bytes": "Bytes", "txt_log_meta_bytes": "Bytes",
"txt_log_meta_changed": "Changed fields", "txt_log_meta_changed": "Измененные поля",
"txt_log_meta_checksum_mismatch_accepted": "Accepted checksum mismatch", "txt_log_meta_checksum_mismatch_accepted": "Принято несовпадение контрольной суммы",
"txt_log_meta_cipher_id": "Vault item ID", "txt_log_meta_cipher_id": "ID элемента хранилища",
"txt_log_meta_ciphers": "Vault items", "txt_log_meta_ciphers": "Элементы хранилища",
"txt_log_meta_compat": "Compatibility", "txt_log_meta_compat": "Совместимость",
"txt_log_meta_compressed_bytes": "Compressed bytes", "txt_log_meta_compressed_bytes": "Байт после сжатия",
"txt_log_meta_count": "Count", "txt_log_meta_count": "Количество",
"txt_log_meta_deleted": "Deleted count", "txt_log_meta_deleted": "Удалено",
"txt_log_meta_destination_count": "Destination count", "txt_log_meta_destination_count": "Количество назначений",
"txt_log_meta_destination_id": "Destination ID", "txt_log_meta_destination_id": "ID назначения",
"txt_log_meta_destination_name": "Destination name", "txt_log_meta_destination_name": "Имя назначения",
"txt_log_meta_destination_type": "Destination type", "txt_log_meta_destination_type": "Тип назначения",
"txt_log_meta_device_identifier": "Device ID", "txt_log_meta_device_identifier": "ID устройства",
"txt_log_meta_device_type": "Device type", "txt_log_meta_device_type": "Тип устройства",
"txt_log_meta_email": "Email", "txt_log_meta_email": "Email",
"txt_log_meta_error": "Error", "txt_log_meta_error": "Ошибка",
"txt_log_meta_expires_in_hours": "Expires in hours", "txt_log_meta_expires_in_hours": "Истекает через часов",
"txt_log_meta_file_bytes": "File bytes", "txt_log_meta_file_bytes": "Байт файла",
"txt_log_meta_file_name": "File name", "txt_log_meta_file_name": "Имя файла",
"txt_log_meta_folder_id": "Folder ID", "txt_log_meta_folder_id": "ID папки",
"txt_log_meta_grant_type": "Login method", "txt_log_meta_grant_type": "Способ входа",
"txt_log_meta_includes_attachments": "Includes attachments", "txt_log_meta_includes_attachments": "Включает вложения",
"txt_log_meta_ip": "IP address", "txt_log_meta_ip": "IP-адрес",
"txt_log_meta_max_entries": "Entry limit", "txt_log_meta_max_entries": "Лимит записей",
"txt_log_meta_method": "Request method", "txt_log_meta_method": "Метод запроса",
"txt_log_meta_path": "Request path", "txt_log_meta_path": "Путь запроса",
"txt_log_meta_provider": "Provider", "txt_log_meta_provider": "Поставщик",
"txt_log_meta_prune_error": "Cleanup error", "txt_log_meta_prf_status": "Статус PRF",
"txt_log_meta_pruned_file_count": "Cleaned files", "txt_log_meta_prune_error": "Ошибка очистки",
"txt_log_meta_raw": "Raw data", "txt_log_meta_pruned_file_count": "Очищено файлов",
"txt_log_meta_reason": "Reason", "txt_log_meta_raw": "Исходные данные",
"txt_log_meta_remote_path": "Remote path", "txt_log_meta_reason": "Причина",
"txt_log_meta_removed": "Removed count", "txt_log_meta_remote_path": "Удаленный путь",
"txt_log_meta_removed_devices": "Removed devices", "txt_log_meta_removed": "Удалено",
"txt_log_meta_removed_sessions": "Removed sessions", "txt_log_meta_removed_devices": "Удалено устройств",
"txt_log_meta_removed_trusted": "Trust removals", "txt_log_meta_removed_sessions": "Удалено сессий",
"txt_log_meta_replace_existing": "Replace existing data", "txt_log_meta_removed_trusted": "Отозвано доверий",
"txt_log_meta_requested": "Requested count", "txt_log_meta_replace_existing": "Заменить существующие данные",
"txt_log_meta_requested_count": "Requested count", "txt_log_meta_requested": "Запрошено",
"txt_log_meta_retention_days": "Retention days", "txt_log_meta_requested_count": "Запрошено",
"txt_log_meta_scheduled_destination_count": "Scheduled destinations", "txt_log_meta_retention_days": "Дней хранения",
"txt_log_meta_size": "Size", "txt_log_meta_scheduled_destination_count": "Запланированные назначения",
"txt_log_meta_skipped_attachments": "Skipped attachments", "txt_log_meta_size": "Размер",
"txt_log_meta_skipped_reason": "Skip reason", "txt_log_meta_skipped_attachments": "Пропущенные вложения",
"txt_log_meta_status": "Status", "txt_log_meta_skipped_reason": "Причина пропуска",
"txt_log_meta_target_email": "Target email", "txt_log_meta_status": "Статус",
"txt_log_meta_trigger": "Trigger", "txt_log_meta_target_email": "Email цели",
"txt_log_meta_type": "Type", "txt_log_meta_trigger": "Триггер",
"txt_log_meta_updated": "Updated count", "txt_log_meta_type": "Тип",
"txt_log_meta_upload_verification_attempts": "Upload verification attempts", "txt_log_meta_updated": "Обновлено",
"txt_log_meta_user_agent": "Browser/client", "txt_log_meta_upload_verification_attempts": "Попытки проверки загрузки",
"txt_log_meta_users": "Users", "txt_log_meta_user_agent": "Браузер/клиент",
"txt_log_meta_verify_devices": "Verify devices", "txt_log_meta_users": "Пользователи",
"txt_log_meta_web_session": "Web session", "txt_log_meta_verify_devices": "Проверка устройств",
"txt_log_reason_bad_api_key": "Bad API key", "txt_log_meta_web_session": "Веб-сессия",
"txt_log_reason_bad_password": "Bad password", "txt_log_reason_bad_api_key": "Неверный API-ключ",
"txt_log_reason_device_missing": "Device missing", "txt_log_reason_bad_password": "Неверный пароль",
"txt_log_reason_device_session_mismatch": "Device session mismatch", "txt_log_reason_device_missing": "Устройство не найдено",
"txt_log_reason_token_not_found_or_expired": "Token missing or expired", "txt_log_reason_device_session_mismatch": "Сессия не соответствует устройству",
"txt_log_reason_user_inactive": "User inactive", "txt_log_reason_token_not_found_or_expired": "Токен отсутствует или истек",
"txt_log_reason_user_missing": "User missing", "txt_log_reason_user_inactive": "Пользователь неактивен",
"txt_log_target_type_attachment": "Attachment", "txt_log_reason_user_missing": "Пользователь не найден",
"txt_log_target_type_audit_log": "Log", "txt_log_target_type_attachment": "Вложение",
"txt_log_target_type_backup": "Backup", "txt_log_target_type_account_passkey": "Ключ входа",
"txt_log_target_type_cipher": "Vault item", "txt_log_target_type_audit_log": "Журнал",
"txt_log_target_type_device": "Device", "txt_log_target_type_backup": "Резервная копия",
"txt_log_target_type_folder": "Folder", "txt_log_target_type_cipher": "Элемент хранилища",
"txt_log_target_type_invite": "Invite", "txt_log_target_type_device": "Устройство",
"txt_log_target_type_refresh_token": "Refresh token", "txt_log_target_type_folder": "Папка",
"txt_log_target_type_invite": "Приглашение",
"txt_log_target_type_refresh_token": "Токен обновления",
"txt_log_target_type_send": "Send", "txt_log_target_type_send": "Send",
"txt_log_target_type_user": "User", "txt_log_target_type_user": "Пользователь",
"txt_log_trigger_manual": "Manual", "txt_log_trigger_manual": "Вручную",
"txt_log_trigger_remote": "Remote", "txt_log_trigger_remote": "Удаленно",
"txt_log_trigger_scheduled": "Scheduled", "txt_log_trigger_scheduled": "По расписанию",
"txt_log_max_1000": "До 1 000 записей", "txt_log_max_1000": "До 1 000 записей",
"txt_log_max_5000": "До 5 000 записей", "txt_log_max_5000": "До 5 000 записей",
"txt_log_max_10000": "До 10 000 записей", "txt_log_max_10000": "До 10 000 записей",
+19
View File
@@ -1014,6 +1014,8 @@ const zhCN: Record<string, string> = {
"txt_totp_qr_scanned": "TOTP 内容已填入。", "txt_totp_qr_scanned": "TOTP 内容已填入。",
"txt_totp_qr_not_found": "这张图片里没有识别到二维码。", "txt_totp_qr_not_found": "这张图片里没有识别到二维码。",
"txt_totp_qr_scan_failed": "二维码扫描失败。", "txt_totp_qr_scan_failed": "二维码扫描失败。",
"txt_totp_qr_invalid_image_type": "请选择图片文件。",
"txt_totp_qr_image_too_large": "请选择小于 8 MB 的图片。",
"txt_totp_qr_unsupported": "当前浏览器不支持二维码扫描。可尝试 Chrome 或 Edge,或手动粘贴 TOTP 链接/密钥。", "txt_totp_qr_unsupported": "当前浏览器不支持二维码扫描。可尝试 Chrome 或 Edge,或手动粘贴 TOTP 链接/密钥。",
"txt_totp_qr_camera_unavailable": "无法使用摄像头。请检查浏览器权限,或选择图片。", "txt_totp_qr_camera_unavailable": "无法使用摄像头。请检查浏览器权限,或选择图片。",
"txt_totp_qr_choose_image": "选择图片", "txt_totp_qr_choose_image": "选择图片",
@@ -1125,6 +1127,12 @@ const zhCN: Record<string, string> = {
"txt_import_invalid_password_protected_file": "密码保护导出文件格式无效。", "txt_import_invalid_password_protected_file": "密码保护导出文件格式无效。",
"txt_import_decrypt_failed": "导入文件解密失败。", "txt_import_decrypt_failed": "导入文件解密失败。",
"txt_import_empty_zip_archive": "ZIP 压缩包为空。", "txt_import_empty_zip_archive": "ZIP 压缩包为空。",
"txt_import_zip_too_large": "ZIP 压缩包过大,最大允许 {size} MiB。",
"txt_import_file_too_large": "导入文件过大,最大允许 {size} MiB。",
"txt_import_zip_too_many_files": "ZIP 压缩包内文件过多。",
"txt_import_zip_entry_too_large": "ZIP 压缩包内存在超过 {size} MiB 的文件。",
"txt_import_zip_expands_too_large": "ZIP 解压后超过当前导入限制 {size} MiB。",
"txt_import_zip_unsafe_file_name": "ZIP 压缩包包含不安全的文件名。",
"txt_import_no_json_found_in_zip": "ZIP 内未找到可导入的 JSON 数据。", "txt_import_no_json_found_in_zip": "ZIP 内未找到可导入的 JSON 数据。",
"txt_import_data_json_not_found": "ZIP 内未找到 data.json。", "txt_import_data_json_not_found": "ZIP 内未找到 data.json。",
"txt_import_zip_password_required": "该 ZIP 需要密码。", "txt_import_zip_password_required": "该 ZIP 需要密码。",
@@ -1219,11 +1227,18 @@ const zhCN: Record<string, string> = {
"txt_log_action_account_api_key_create": "创建 API 密钥", "txt_log_action_account_api_key_create": "创建 API 密钥",
"txt_log_action_account_api_key_rotate": "轮换 API 密钥", "txt_log_action_account_api_key_rotate": "轮换 API 密钥",
"txt_log_action_account_keys_update": "更新账户密钥", "txt_log_action_account_keys_update": "更新账户密钥",
"txt_log_action_account_passkey_create": "创建登录通行密钥",
"txt_log_action_account_passkey_delete": "删除登录通行密钥",
"txt_log_action_account_passkey_encryption_enable": "开启通行密钥解锁密码库",
"txt_log_action_account_profile_update": "更新账户资料", "txt_log_action_account_profile_update": "更新账户资料",
"txt_log_action_account_totp_disable": "关闭两步验证", "txt_log_action_account_totp_disable": "关闭两步验证",
"txt_log_action_account_totp_enable": "开启两步验证", "txt_log_action_account_totp_enable": "开启两步验证",
"txt_log_action_account_totp_recover": "恢复两步验证", "txt_log_action_account_totp_recover": "恢复两步验证",
"txt_log_action_account_verify_devices_update": "更新设备验证设置", "txt_log_action_account_verify_devices_update": "更新设备验证设置",
"txt_log_action_account_webauthn_2fa_delete": "删除通行密钥两步验证密钥",
"txt_log_action_account_webauthn_2fa_enable": "开启通行密钥两步验证",
"txt_log_action_account_yubikey_enable": "更新 YubiKey OTP 设置",
"txt_log_action_admin_audit_clear": "清空审计日志",
"txt_log_action_admin_audit_settings_update": "更新日志保留设置", "txt_log_action_admin_audit_settings_update": "更新日志保留设置",
"txt_log_action_admin_backup_export": "导出备份", "txt_log_action_admin_backup_export": "导出备份",
"txt_log_action_admin_backup_import": "导入备份", "txt_log_action_admin_backup_import": "导入备份",
@@ -1246,6 +1261,8 @@ const zhCN: Record<string, string> = {
"txt_log_action_auth_login_failed_bad_password": "密码错误登录失败", "txt_log_action_auth_login_failed_bad_password": "密码错误登录失败",
"txt_log_action_auth_login_failed_user_inactive": "账号停用登录失败", "txt_log_action_auth_login_failed_user_inactive": "账号停用登录失败",
"txt_log_action_auth_login_success": "登录成功", "txt_log_action_auth_login_success": "登录成功",
"txt_log_action_auth_passkey_login_failed": "通行密钥登录失败",
"txt_log_action_auth_passkey_login_success": "通行密钥登录成功",
"txt_log_action_auth_refresh_failed": "刷新登录失败:{reason}", "txt_log_action_auth_refresh_failed": "刷新登录失败:{reason}",
"txt_log_action_cipher_delete_permanent": "永久删除密码项", "txt_log_action_cipher_delete_permanent": "永久删除密码项",
"txt_log_action_cipher_delete_permanent_bulk": "批量永久删除密码项", "txt_log_action_cipher_delete_permanent_bulk": "批量永久删除密码项",
@@ -1296,6 +1313,7 @@ const zhCN: Record<string, string> = {
"txt_log_meta_method": "请求方法", "txt_log_meta_method": "请求方法",
"txt_log_meta_path": "请求路径", "txt_log_meta_path": "请求路径",
"txt_log_meta_provider": "服务提供方", "txt_log_meta_provider": "服务提供方",
"txt_log_meta_prf_status": "PRF 状态",
"txt_log_meta_prune_error": "清理错误", "txt_log_meta_prune_error": "清理错误",
"txt_log_meta_pruned_file_count": "已清理文件数", "txt_log_meta_pruned_file_count": "已清理文件数",
"txt_log_meta_raw": "原始数据", "txt_log_meta_raw": "原始数据",
@@ -1331,6 +1349,7 @@ const zhCN: Record<string, string> = {
"txt_log_reason_user_inactive": "用户未启用", "txt_log_reason_user_inactive": "用户未启用",
"txt_log_reason_user_missing": "用户不存在", "txt_log_reason_user_missing": "用户不存在",
"txt_log_target_type_attachment": "附件", "txt_log_target_type_attachment": "附件",
"txt_log_target_type_account_passkey": "登录通行密钥",
"txt_log_target_type_audit_log": "日志", "txt_log_target_type_audit_log": "日志",
"txt_log_target_type_backup": "备份", "txt_log_target_type_backup": "备份",
"txt_log_target_type_cipher": "密码项", "txt_log_target_type_cipher": "密码项",
+19
View File
@@ -1014,6 +1014,8 @@ const zhTW: Record<string, string> = {
"txt_totp_qr_scanned": "TOTP 內容已填入。", "txt_totp_qr_scanned": "TOTP 內容已填入。",
"txt_totp_qr_not_found": "這張圖片裡沒有識別到二維碼。", "txt_totp_qr_not_found": "這張圖片裡沒有識別到二維碼。",
"txt_totp_qr_scan_failed": "二維碼掃描失敗。", "txt_totp_qr_scan_failed": "二維碼掃描失敗。",
"txt_totp_qr_invalid_image_type": "請選擇圖片檔案。",
"txt_totp_qr_image_too_large": "請選擇小於 8 MB 的圖片。",
"txt_totp_qr_unsupported": "目前瀏覽器不支援二維碼掃描。可嘗試 Chrome 或 Edge,或手動貼上 TOTP 連結/密鑰。", "txt_totp_qr_unsupported": "目前瀏覽器不支援二維碼掃描。可嘗試 Chrome 或 Edge,或手動貼上 TOTP 連結/密鑰。",
"txt_totp_qr_camera_unavailable": "無法使用攝影機。請檢查瀏覽器權限,或選擇圖片。", "txt_totp_qr_camera_unavailable": "無法使用攝影機。請檢查瀏覽器權限,或選擇圖片。",
"txt_totp_qr_choose_image": "選擇圖片", "txt_totp_qr_choose_image": "選擇圖片",
@@ -1125,6 +1127,12 @@ const zhTW: Record<string, string> = {
"txt_import_invalid_password_protected_file": "密碼保護導出文件格式無效。", "txt_import_invalid_password_protected_file": "密碼保護導出文件格式無效。",
"txt_import_decrypt_failed": "導入文件解密失敗。", "txt_import_decrypt_failed": "導入文件解密失敗。",
"txt_import_empty_zip_archive": "ZIP 壓縮包為空。", "txt_import_empty_zip_archive": "ZIP 壓縮包為空。",
"txt_import_zip_too_large": "ZIP 壓縮包過大,最大允許 {size} MiB。",
"txt_import_file_too_large": "導入文件過大,最大允許 {size} MiB。",
"txt_import_zip_too_many_files": "ZIP 壓縮包內文件過多。",
"txt_import_zip_entry_too_large": "ZIP 壓縮包內存在超過 {size} MiB 的文件。",
"txt_import_zip_expands_too_large": "ZIP 解壓後超過目前導入限制 {size} MiB。",
"txt_import_zip_unsafe_file_name": "ZIP 壓縮包包含不安全的文件名。",
"txt_import_no_json_found_in_zip": "ZIP 內未找到可導入的 JSON 數據。", "txt_import_no_json_found_in_zip": "ZIP 內未找到可導入的 JSON 數據。",
"txt_import_data_json_not_found": "ZIP 內未找到 data.json。", "txt_import_data_json_not_found": "ZIP 內未找到 data.json。",
"txt_import_zip_password_required": "該 ZIP 需要密碼。", "txt_import_zip_password_required": "該 ZIP 需要密碼。",
@@ -1219,11 +1227,18 @@ const zhTW: Record<string, string> = {
"txt_log_action_account_api_key_create": "建立 API 金鑰", "txt_log_action_account_api_key_create": "建立 API 金鑰",
"txt_log_action_account_api_key_rotate": "輪換 API 金鑰", "txt_log_action_account_api_key_rotate": "輪換 API 金鑰",
"txt_log_action_account_keys_update": "更新帳戶金鑰", "txt_log_action_account_keys_update": "更新帳戶金鑰",
"txt_log_action_account_passkey_create": "建立登入通行密鑰",
"txt_log_action_account_passkey_delete": "刪除登入通行密鑰",
"txt_log_action_account_passkey_encryption_enable": "開啟通行密鑰解鎖密碼庫",
"txt_log_action_account_profile_update": "更新帳戶資料", "txt_log_action_account_profile_update": "更新帳戶資料",
"txt_log_action_account_totp_disable": "關閉兩步驟登入", "txt_log_action_account_totp_disable": "關閉兩步驟登入",
"txt_log_action_account_totp_enable": "開啟兩步驟登入", "txt_log_action_account_totp_enable": "開啟兩步驟登入",
"txt_log_action_account_totp_recover": "復原兩步驟登入", "txt_log_action_account_totp_recover": "復原兩步驟登入",
"txt_log_action_account_verify_devices_update": "更新裝置驗證設定", "txt_log_action_account_verify_devices_update": "更新裝置驗證設定",
"txt_log_action_account_webauthn_2fa_delete": "刪除通行密鑰兩步驟驗證密鑰",
"txt_log_action_account_webauthn_2fa_enable": "開啟通行密鑰兩步驟驗證",
"txt_log_action_account_yubikey_enable": "更新 YubiKey OTP 設定",
"txt_log_action_admin_audit_clear": "清空稽核日誌",
"txt_log_action_admin_audit_settings_update": "更新日誌保留設定", "txt_log_action_admin_audit_settings_update": "更新日誌保留設定",
"txt_log_action_admin_backup_export": "匯出備份", "txt_log_action_admin_backup_export": "匯出備份",
"txt_log_action_admin_backup_import": "匯入備份", "txt_log_action_admin_backup_import": "匯入備份",
@@ -1246,6 +1261,8 @@ const zhTW: Record<string, string> = {
"txt_log_action_auth_login_failed_bad_password": "密碼錯誤登入失敗", "txt_log_action_auth_login_failed_bad_password": "密碼錯誤登入失敗",
"txt_log_action_auth_login_failed_user_inactive": "帳號停用登入失敗", "txt_log_action_auth_login_failed_user_inactive": "帳號停用登入失敗",
"txt_log_action_auth_login_success": "登入成功", "txt_log_action_auth_login_success": "登入成功",
"txt_log_action_auth_passkey_login_failed": "通行密鑰登入失敗",
"txt_log_action_auth_passkey_login_success": "通行密鑰登入成功",
"txt_log_action_auth_refresh_failed": "刷新登入失敗:{reason}", "txt_log_action_auth_refresh_failed": "刷新登入失敗:{reason}",
"txt_log_action_cipher_delete_permanent": "永久刪除密碼項", "txt_log_action_cipher_delete_permanent": "永久刪除密碼項",
"txt_log_action_cipher_delete_permanent_bulk": "批次永久刪除密碼項", "txt_log_action_cipher_delete_permanent_bulk": "批次永久刪除密碼項",
@@ -1296,6 +1313,7 @@ const zhTW: Record<string, string> = {
"txt_log_meta_method": "請求方法", "txt_log_meta_method": "請求方法",
"txt_log_meta_path": "請求路徑", "txt_log_meta_path": "請求路徑",
"txt_log_meta_provider": "服務提供方", "txt_log_meta_provider": "服務提供方",
"txt_log_meta_prf_status": "PRF 狀態",
"txt_log_meta_prune_error": "清理錯誤", "txt_log_meta_prune_error": "清理錯誤",
"txt_log_meta_pruned_file_count": "已清理檔案數", "txt_log_meta_pruned_file_count": "已清理檔案數",
"txt_log_meta_raw": "原始資料", "txt_log_meta_raw": "原始資料",
@@ -1331,6 +1349,7 @@ const zhTW: Record<string, string> = {
"txt_log_reason_user_inactive": "使用者未啟用", "txt_log_reason_user_inactive": "使用者未啟用",
"txt_log_reason_user_missing": "使用者不存在", "txt_log_reason_user_missing": "使用者不存在",
"txt_log_target_type_attachment": "附件", "txt_log_target_type_attachment": "附件",
"txt_log_target_type_account_passkey": "登入通行密鑰",
"txt_log_target_type_audit_log": "日誌", "txt_log_target_type_audit_log": "日誌",
"txt_log_target_type_backup": "備份", "txt_log_target_type_backup": "備份",
"txt_log_target_type_cipher": "密碼項", "txt_log_target_type_cipher": "密碼項",