mirror of
https://github.com/shuaiplus/nodewarden.git
synced 2026-08-05 06:50:10 +00:00
fix(i18n): localize audit logs and new validation messages
This commit is contained in:
@@ -129,6 +129,10 @@ function formatReason(reason: string): string {
|
||||
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 {
|
||||
const date = new Date(value);
|
||||
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);
|
||||
}
|
||||
if (key === 'type' && typeof value === 'string') {
|
||||
return translatedOrHumanized(keyFor('txt_log_target_type_', value), value);
|
||||
return formatTargetType(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) {
|
||||
if (category === 'auth') return <ShieldAlert 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_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_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 className="log-detail-json">
|
||||
<h4>{t('txt_metadata')}</h4>
|
||||
|
||||
@@ -1014,6 +1014,8 @@ const en: Record<string, string> = {
|
||||
"txt_totp_qr_scanned": "TOTP value added.",
|
||||
"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_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_camera_unavailable": "Camera is unavailable. Check browser permission, or choose an 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_decrypt_failed": "Failed to decrypt import file.",
|
||||
"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_data_json_not_found": "data.json not found in zip archive.",
|
||||
"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_rotate": "Rotate API key",
|
||||
"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_totp_disable": "Disable 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_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_backup_export": "Export 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_user_inactive": "Login failed: inactive account",
|
||||
"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_cipher_delete_permanent": "Permanently delete vault item",
|
||||
"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_path": "Request path",
|
||||
"txt_log_meta_provider": "Provider",
|
||||
"txt_log_meta_prf_status": "PRF status",
|
||||
"txt_log_meta_prune_error": "Cleanup error",
|
||||
"txt_log_meta_pruned_file_count": "Cleaned files",
|
||||
"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_missing": "User missing",
|
||||
"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_backup": "Backup",
|
||||
"txt_log_target_type_cipher": "Vault item",
|
||||
|
||||
+141
-122
@@ -1014,6 +1014,8 @@ const es: Record<string, string> = {
|
||||
"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_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_camera_unavailable": "La cámara no está disponible. Revise el permiso del navegador o elija una 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_decrypt_failed": "Error al descifrar el archivo de importación.",
|
||||
"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_data_json_not_found": "No se encontró data.json en el archivo ZIP.",
|
||||
"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_security": "Seguridad",
|
||||
"txt_log_level_warn": "Aviso",
|
||||
"txt_log_action_account_api_key_create": "Create 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_profile_update": "Update account profile",
|
||||
"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_recover": "Recover two-step login",
|
||||
"txt_log_action_account_verify_devices_update": "Update device verification",
|
||||
"txt_log_action_admin_audit_settings_update": "Update log retention settings",
|
||||
"txt_log_action_admin_backup_export": "Export backup",
|
||||
"txt_log_action_admin_backup_import": "Import backup",
|
||||
"txt_log_action_admin_backup_remote_delete": "Delete remote backup",
|
||||
"txt_log_action_admin_backup_remote_manual": "Manual remote backup succeeded",
|
||||
"txt_log_action_admin_backup_remote_manual_failed": "Manual remote backup failed",
|
||||
"txt_log_action_admin_backup_remote_scheduled": "Scheduled remote backup succeeded",
|
||||
"txt_log_action_admin_backup_remote_scheduled_failed": "Scheduled remote backup failed",
|
||||
"txt_log_action_admin_backup_settings_repair": "Repair backup settings",
|
||||
"txt_log_action_admin_backup_settings_update": "Update backup settings",
|
||||
"txt_log_action_admin_invite_create": "Create invite",
|
||||
"txt_log_action_admin_invite_delete": "Delete invite",
|
||||
"txt_log_action_admin_invite_delete_all": "Clear invites",
|
||||
"txt_log_action_admin_invite_delete_invalid": "Delete invalid invites",
|
||||
"txt_log_action_admin_invite_revoke": "Revoke invite",
|
||||
"txt_log_action_admin_user_delete": "Delete user",
|
||||
"txt_log_action_admin_user_status": "Change user status",
|
||||
"txt_log_action_attachment_delete": "Delete attachment",
|
||||
"txt_log_action_auth_login_failed_bad_api_key": "Login failed: bad API key",
|
||||
"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_success": "Login succeeded",
|
||||
"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_bulk": "Permanently delete vault items",
|
||||
"txt_log_action_cipher_delete_soft": "Move vault item to trash",
|
||||
"txt_log_action_cipher_delete_soft_bulk": "Move vault items to trash",
|
||||
"txt_log_action_device_deactivate": "Deactivate device",
|
||||
"txt_log_action_device_delete": "Delete device",
|
||||
"txt_log_action_device_delete_all": "Delete all devices",
|
||||
"txt_log_action_device_name_update": "Update device name",
|
||||
"txt_log_action_device_trust_permanent": "Trust device permanently",
|
||||
"txt_log_action_device_trust_revoke": "Revoke device trust",
|
||||
"txt_log_action_device_trust_revoke_batch": "Revoke device trust in bulk",
|
||||
"txt_log_action_folder_delete": "Delete folder",
|
||||
"txt_log_action_folder_delete_bulk": "Delete folders",
|
||||
"txt_log_action_send_auth_remove": "Remove Send authentication",
|
||||
"txt_log_action_send_delete": "Delete Send",
|
||||
"txt_log_action_send_delete_bulk": "Delete Sends",
|
||||
"txt_log_action_send_password_remove": "Remove Send password",
|
||||
"txt_log_action_user_password_change": "Change master password",
|
||||
"txt_log_action_user_register_first_admin": "Register first admin",
|
||||
"txt_log_action_user_register_invite": "Register by invite",
|
||||
"txt_log_meta_attachments": "Attachments",
|
||||
"txt_log_action_account_api_key_create": "Crear clave de API",
|
||||
"txt_log_action_account_api_key_rotate": "Rotar clave de API",
|
||||
"txt_log_action_account_keys_update": "Actualizar claves de cuenta",
|
||||
"txt_log_action_account_passkey_create": "Crear passkey de inicio de sesión",
|
||||
"txt_log_action_account_passkey_delete": "Eliminar passkey de inicio de sesión",
|
||||
"txt_log_action_account_passkey_encryption_enable": "Activar desbloqueo de la bóveda con passkey",
|
||||
"txt_log_action_account_profile_update": "Actualizar perfil de cuenta",
|
||||
"txt_log_action_account_totp_disable": "Desactivar verificación en dos pasos",
|
||||
"txt_log_action_account_totp_enable": "Activar verificación en dos pasos",
|
||||
"txt_log_action_account_totp_recover": "Recuperar verificación en dos pasos",
|
||||
"txt_log_action_account_verify_devices_update": "Actualizar verificación de dispositivos",
|
||||
"txt_log_action_account_webauthn_2fa_delete": "Eliminar clave de verificación en dos pasos con passkey",
|
||||
"txt_log_action_account_webauthn_2fa_enable": "Activar verificación en dos pasos con passkey",
|
||||
"txt_log_action_account_yubikey_enable": "Actualizar configuración de YubiKey OTP",
|
||||
"txt_log_action_admin_audit_clear": "Borrar registros de auditoría",
|
||||
"txt_log_action_admin_audit_settings_update": "Actualizar retención de registros",
|
||||
"txt_log_action_admin_backup_export": "Exportar copia de seguridad",
|
||||
"txt_log_action_admin_backup_import": "Importar copia de seguridad",
|
||||
"txt_log_action_admin_backup_remote_delete": "Eliminar copia remota",
|
||||
"txt_log_action_admin_backup_remote_manual": "Copia remota manual completada",
|
||||
"txt_log_action_admin_backup_remote_manual_failed": "Error en copia remota manual",
|
||||
"txt_log_action_admin_backup_remote_scheduled": "Copia remota programada completada",
|
||||
"txt_log_action_admin_backup_remote_scheduled_failed": "Error en copia remota programada",
|
||||
"txt_log_action_admin_backup_settings_repair": "Reparar configuración de copias",
|
||||
"txt_log_action_admin_backup_settings_update": "Actualizar configuración de copias",
|
||||
"txt_log_action_admin_invite_create": "Crear invitación",
|
||||
"txt_log_action_admin_invite_delete": "Eliminar invitación",
|
||||
"txt_log_action_admin_invite_delete_all": "Borrar invitaciones",
|
||||
"txt_log_action_admin_invite_delete_invalid": "Eliminar invitaciones no válidas",
|
||||
"txt_log_action_admin_invite_revoke": "Revocar invitación",
|
||||
"txt_log_action_admin_user_delete": "Eliminar usuario",
|
||||
"txt_log_action_admin_user_status": "Cambiar estado del usuario",
|
||||
"txt_log_action_attachment_delete": "Eliminar adjunto",
|
||||
"txt_log_action_auth_login_failed_bad_api_key": "Inicio de sesión fallido: clave de API incorrecta",
|
||||
"txt_log_action_auth_login_failed_bad_password": "Inicio de sesión fallido: contraseña incorrecta",
|
||||
"txt_log_action_auth_login_failed_user_inactive": "Inicio de sesión fallido: cuenta inactiva",
|
||||
"txt_log_action_auth_login_success": "Inicio de sesión correcto",
|
||||
"txt_log_action_auth_passkey_login_failed": "Error de inicio de sesión con passkey",
|
||||
"txt_log_action_auth_passkey_login_success": "Inicio de sesión con passkey correcto",
|
||||
"txt_log_action_auth_refresh_failed": "Error al renovar inicio de sesión: {reason}",
|
||||
"txt_log_action_cipher_delete_permanent": "Eliminar elemento de bóveda permanentemente",
|
||||
"txt_log_action_cipher_delete_permanent_bulk": "Eliminar elementos de bóveda permanentemente",
|
||||
"txt_log_action_cipher_delete_soft": "Mover elemento de bóveda a la papelera",
|
||||
"txt_log_action_cipher_delete_soft_bulk": "Mover elementos de bóveda a la papelera",
|
||||
"txt_log_action_device_deactivate": "Desactivar dispositivo",
|
||||
"txt_log_action_device_delete": "Eliminar dispositivo",
|
||||
"txt_log_action_device_delete_all": "Eliminar todos los dispositivos",
|
||||
"txt_log_action_device_name_update": "Actualizar nombre del dispositivo",
|
||||
"txt_log_action_device_trust_permanent": "Confiar permanentemente en el dispositivo",
|
||||
"txt_log_action_device_trust_revoke": "Revocar confianza del dispositivo",
|
||||
"txt_log_action_device_trust_revoke_batch": "Revocar confianza de dispositivos en lote",
|
||||
"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_changed": "Changed fields",
|
||||
"txt_log_meta_checksum_mismatch_accepted": "Accepted checksum mismatch",
|
||||
"txt_log_meta_cipher_id": "Vault item ID",
|
||||
"txt_log_meta_ciphers": "Vault items",
|
||||
"txt_log_meta_compat": "Compatibility",
|
||||
"txt_log_meta_compressed_bytes": "Compressed bytes",
|
||||
"txt_log_meta_count": "Count",
|
||||
"txt_log_meta_deleted": "Deleted count",
|
||||
"txt_log_meta_destination_count": "Destination count",
|
||||
"txt_log_meta_destination_id": "Destination ID",
|
||||
"txt_log_meta_destination_name": "Destination name",
|
||||
"txt_log_meta_destination_type": "Destination type",
|
||||
"txt_log_meta_device_identifier": "Device ID",
|
||||
"txt_log_meta_device_type": "Device type",
|
||||
"txt_log_meta_changed": "Campos modificados",
|
||||
"txt_log_meta_checksum_mismatch_accepted": "Desajuste de checksum aceptado",
|
||||
"txt_log_meta_cipher_id": "ID del elemento de bóveda",
|
||||
"txt_log_meta_ciphers": "Elementos de bóveda",
|
||||
"txt_log_meta_compat": "Compatibilidad",
|
||||
"txt_log_meta_compressed_bytes": "Bytes comprimidos",
|
||||
"txt_log_meta_count": "Cantidad",
|
||||
"txt_log_meta_deleted": "Cantidad eliminada",
|
||||
"txt_log_meta_destination_count": "Cantidad de destinos",
|
||||
"txt_log_meta_destination_id": "ID de destino",
|
||||
"txt_log_meta_destination_name": "Nombre de destino",
|
||||
"txt_log_meta_destination_type": "Tipo de destino",
|
||||
"txt_log_meta_device_identifier": "ID del dispositivo",
|
||||
"txt_log_meta_device_type": "Tipo de dispositivo",
|
||||
"txt_log_meta_email": "Email",
|
||||
"txt_log_meta_error": "Error",
|
||||
"txt_log_meta_expires_in_hours": "Expires in hours",
|
||||
"txt_log_meta_file_bytes": "File bytes",
|
||||
"txt_log_meta_file_name": "File name",
|
||||
"txt_log_meta_folder_id": "Folder ID",
|
||||
"txt_log_meta_grant_type": "Login method",
|
||||
"txt_log_meta_includes_attachments": "Includes attachments",
|
||||
"txt_log_meta_ip": "IP address",
|
||||
"txt_log_meta_max_entries": "Entry limit",
|
||||
"txt_log_meta_method": "Request method",
|
||||
"txt_log_meta_path": "Request path",
|
||||
"txt_log_meta_provider": "Provider",
|
||||
"txt_log_meta_prune_error": "Cleanup error",
|
||||
"txt_log_meta_pruned_file_count": "Cleaned files",
|
||||
"txt_log_meta_raw": "Raw data",
|
||||
"txt_log_meta_reason": "Reason",
|
||||
"txt_log_meta_remote_path": "Remote path",
|
||||
"txt_log_meta_removed": "Removed count",
|
||||
"txt_log_meta_removed_devices": "Removed devices",
|
||||
"txt_log_meta_removed_sessions": "Removed sessions",
|
||||
"txt_log_meta_removed_trusted": "Trust removals",
|
||||
"txt_log_meta_replace_existing": "Replace existing data",
|
||||
"txt_log_meta_requested": "Requested count",
|
||||
"txt_log_meta_requested_count": "Requested count",
|
||||
"txt_log_meta_retention_days": "Retention days",
|
||||
"txt_log_meta_scheduled_destination_count": "Scheduled destinations",
|
||||
"txt_log_meta_size": "Size",
|
||||
"txt_log_meta_skipped_attachments": "Skipped attachments",
|
||||
"txt_log_meta_skipped_reason": "Skip reason",
|
||||
"txt_log_meta_status": "Status",
|
||||
"txt_log_meta_target_email": "Target email",
|
||||
"txt_log_meta_trigger": "Trigger",
|
||||
"txt_log_meta_type": "Type",
|
||||
"txt_log_meta_updated": "Updated count",
|
||||
"txt_log_meta_upload_verification_attempts": "Upload verification attempts",
|
||||
"txt_log_meta_user_agent": "Browser/client",
|
||||
"txt_log_meta_users": "Users",
|
||||
"txt_log_meta_verify_devices": "Verify devices",
|
||||
"txt_log_meta_web_session": "Web session",
|
||||
"txt_log_reason_bad_api_key": "Bad API key",
|
||||
"txt_log_reason_bad_password": "Bad password",
|
||||
"txt_log_reason_device_missing": "Device missing",
|
||||
"txt_log_reason_device_session_mismatch": "Device session mismatch",
|
||||
"txt_log_reason_token_not_found_or_expired": "Token missing or expired",
|
||||
"txt_log_reason_user_inactive": "User inactive",
|
||||
"txt_log_reason_user_missing": "User missing",
|
||||
"txt_log_target_type_attachment": "Attachment",
|
||||
"txt_log_target_type_audit_log": "Log",
|
||||
"txt_log_target_type_backup": "Backup",
|
||||
"txt_log_target_type_cipher": "Vault item",
|
||||
"txt_log_target_type_device": "Device",
|
||||
"txt_log_target_type_folder": "Folder",
|
||||
"txt_log_target_type_invite": "Invite",
|
||||
"txt_log_target_type_refresh_token": "Refresh token",
|
||||
"txt_log_meta_expires_in_hours": "Caduca en horas",
|
||||
"txt_log_meta_file_bytes": "Bytes del archivo",
|
||||
"txt_log_meta_file_name": "Nombre del archivo",
|
||||
"txt_log_meta_folder_id": "ID de carpeta",
|
||||
"txt_log_meta_grant_type": "Método de inicio de sesión",
|
||||
"txt_log_meta_includes_attachments": "Incluye adjuntos",
|
||||
"txt_log_meta_ip": "Dirección IP",
|
||||
"txt_log_meta_max_entries": "Límite de entradas",
|
||||
"txt_log_meta_method": "Método de solicitud",
|
||||
"txt_log_meta_path": "Ruta de solicitud",
|
||||
"txt_log_meta_provider": "Proveedor",
|
||||
"txt_log_meta_prf_status": "Estado de PRF",
|
||||
"txt_log_meta_prune_error": "Error de limpieza",
|
||||
"txt_log_meta_pruned_file_count": "Archivos limpiados",
|
||||
"txt_log_meta_raw": "Datos sin procesar",
|
||||
"txt_log_meta_reason": "Motivo",
|
||||
"txt_log_meta_remote_path": "Ruta remota",
|
||||
"txt_log_meta_removed": "Cantidad quitada",
|
||||
"txt_log_meta_removed_devices": "Dispositivos quitados",
|
||||
"txt_log_meta_removed_sessions": "Sesiones quitadas",
|
||||
"txt_log_meta_removed_trusted": "Confianzas revocadas",
|
||||
"txt_log_meta_replace_existing": "Reemplazar datos existentes",
|
||||
"txt_log_meta_requested": "Cantidad solicitada",
|
||||
"txt_log_meta_requested_count": "Cantidad solicitada",
|
||||
"txt_log_meta_retention_days": "Días de retención",
|
||||
"txt_log_meta_scheduled_destination_count": "Destinos programados",
|
||||
"txt_log_meta_size": "Tamaño",
|
||||
"txt_log_meta_skipped_attachments": "Adjuntos omitidos",
|
||||
"txt_log_meta_skipped_reason": "Motivo de omisión",
|
||||
"txt_log_meta_status": "Estado",
|
||||
"txt_log_meta_target_email": "Correo del destino",
|
||||
"txt_log_meta_trigger": "Disparador",
|
||||
"txt_log_meta_type": "Tipo",
|
||||
"txt_log_meta_updated": "Cantidad actualizada",
|
||||
"txt_log_meta_upload_verification_attempts": "Intentos de verificación de subida",
|
||||
"txt_log_meta_user_agent": "Navegador/cliente",
|
||||
"txt_log_meta_users": "Usuarios",
|
||||
"txt_log_meta_verify_devices": "Verificar dispositivos",
|
||||
"txt_log_meta_web_session": "Sesión web",
|
||||
"txt_log_reason_bad_api_key": "Clave de API incorrecta",
|
||||
"txt_log_reason_bad_password": "Contraseña incorrecta",
|
||||
"txt_log_reason_device_missing": "Dispositivo no encontrado",
|
||||
"txt_log_reason_device_session_mismatch": "La sesión no coincide con el dispositivo",
|
||||
"txt_log_reason_token_not_found_or_expired": "Token no encontrado o caducado",
|
||||
"txt_log_reason_user_inactive": "Usuario inactivo",
|
||||
"txt_log_reason_user_missing": "Usuario no encontrado",
|
||||
"txt_log_target_type_attachment": "Adjunto",
|
||||
"txt_log_target_type_account_passkey": "Passkey de inicio de sesión",
|
||||
"txt_log_target_type_audit_log": "Registro",
|
||||
"txt_log_target_type_backup": "Copia de seguridad",
|
||||
"txt_log_target_type_cipher": "Elemento de bóveda",
|
||||
"txt_log_target_type_device": "Dispositivo",
|
||||
"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_user": "User",
|
||||
"txt_log_target_type_user": "Usuario",
|
||||
"txt_log_trigger_manual": "Manual",
|
||||
"txt_log_trigger_remote": "Remote",
|
||||
"txt_log_trigger_scheduled": "Scheduled",
|
||||
"txt_log_trigger_remote": "Remoto",
|
||||
"txt_log_trigger_scheduled": "Programado",
|
||||
"txt_log_max_1000": "Hasta 1000 entradas",
|
||||
"txt_log_max_5000": "Hasta 5000 entradas",
|
||||
"txt_log_max_10000": "Hasta 10 000 entradas",
|
||||
|
||||
+143
-124
@@ -1014,6 +1014,8 @@ const ru: Record<string, string> = {
|
||||
"txt_totp_qr_scanned": "Значение TOTP добавлено.",
|
||||
"txt_totp_qr_not_found": "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_camera_unavailable": "Камера недоступна. Проверьте разрешение браузера или выберите изображение.",
|
||||
"txt_totp_qr_choose_image": "Выбрать изображение",
|
||||
@@ -1125,6 +1127,12 @@ const ru: Record<string, string> = {
|
||||
"txt_import_invalid_password_protected_file": "Неверный файл экспорта, защищенный паролем.",
|
||||
"txt_import_decrypt_failed": "Не удалось расшифровать файл импорта.",
|
||||
"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_data_json_not_found": "data.json не найден в zip-архиве.",
|
||||
"txt_import_zip_password_required": "Требуется пароль ZIP.",
|
||||
@@ -1216,133 +1224,144 @@ const ru: Record<string, string> = {
|
||||
"txt_log_level_info": "Инфо",
|
||||
"txt_log_level_security": "Безопасность",
|
||||
"txt_log_level_warn": "Предупреждение",
|
||||
"txt_log_action_account_api_key_create": "Create 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_profile_update": "Update account profile",
|
||||
"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_recover": "Recover two-step login",
|
||||
"txt_log_action_account_verify_devices_update": "Update device verification",
|
||||
"txt_log_action_admin_audit_settings_update": "Update log retention settings",
|
||||
"txt_log_action_admin_backup_export": "Export backup",
|
||||
"txt_log_action_admin_backup_import": "Import backup",
|
||||
"txt_log_action_admin_backup_remote_delete": "Delete remote backup",
|
||||
"txt_log_action_admin_backup_remote_manual": "Manual remote backup succeeded",
|
||||
"txt_log_action_admin_backup_remote_manual_failed": "Manual remote backup failed",
|
||||
"txt_log_action_admin_backup_remote_scheduled": "Scheduled remote backup succeeded",
|
||||
"txt_log_action_admin_backup_remote_scheduled_failed": "Scheduled remote backup failed",
|
||||
"txt_log_action_admin_backup_settings_repair": "Repair backup settings",
|
||||
"txt_log_action_admin_backup_settings_update": "Update backup settings",
|
||||
"txt_log_action_admin_invite_create": "Create invite",
|
||||
"txt_log_action_admin_invite_delete": "Delete invite",
|
||||
"txt_log_action_admin_invite_delete_all": "Clear invites",
|
||||
"txt_log_action_admin_invite_delete_invalid": "Delete invalid invites",
|
||||
"txt_log_action_admin_invite_revoke": "Revoke invite",
|
||||
"txt_log_action_admin_user_delete": "Delete user",
|
||||
"txt_log_action_admin_user_status": "Change user status",
|
||||
"txt_log_action_attachment_delete": "Delete attachment",
|
||||
"txt_log_action_auth_login_failed_bad_api_key": "Login failed: bad API key",
|
||||
"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_success": "Login succeeded",
|
||||
"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_bulk": "Permanently delete vault items",
|
||||
"txt_log_action_cipher_delete_soft": "Move vault item to trash",
|
||||
"txt_log_action_cipher_delete_soft_bulk": "Move vault items to trash",
|
||||
"txt_log_action_device_deactivate": "Deactivate device",
|
||||
"txt_log_action_device_delete": "Delete device",
|
||||
"txt_log_action_device_delete_all": "Delete all devices",
|
||||
"txt_log_action_device_name_update": "Update device name",
|
||||
"txt_log_action_device_trust_permanent": "Trust device permanently",
|
||||
"txt_log_action_device_trust_revoke": "Revoke device trust",
|
||||
"txt_log_action_device_trust_revoke_batch": "Revoke device trust in bulk",
|
||||
"txt_log_action_folder_delete": "Delete folder",
|
||||
"txt_log_action_folder_delete_bulk": "Delete folders",
|
||||
"txt_log_action_send_auth_remove": "Remove Send authentication",
|
||||
"txt_log_action_send_delete": "Delete Send",
|
||||
"txt_log_action_send_delete_bulk": "Delete Sends",
|
||||
"txt_log_action_send_password_remove": "Remove Send password",
|
||||
"txt_log_action_user_password_change": "Change master password",
|
||||
"txt_log_action_user_register_first_admin": "Register first admin",
|
||||
"txt_log_action_user_register_invite": "Register by invite",
|
||||
"txt_log_meta_attachments": "Attachments",
|
||||
"txt_log_action_account_api_key_create": "Создание API-ключа",
|
||||
"txt_log_action_account_api_key_rotate": "Ротация API-ключа",
|
||||
"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_totp_disable": "Отключение двухфакторной проверки",
|
||||
"txt_log_action_account_totp_enable": "Включение двухфакторной проверки",
|
||||
"txt_log_action_account_totp_recover": "Восстановление двухфакторной проверки",
|
||||
"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_backup_export": "Экспорт резервной копии",
|
||||
"txt_log_action_admin_backup_import": "Импорт резервной копии",
|
||||
"txt_log_action_admin_backup_remote_delete": "Удаление удаленной резервной копии",
|
||||
"txt_log_action_admin_backup_remote_manual": "Ручное удаленное резервное копирование выполнено",
|
||||
"txt_log_action_admin_backup_remote_manual_failed": "Ошибка ручного удаленного резервного копирования",
|
||||
"txt_log_action_admin_backup_remote_scheduled": "Запланированное удаленное резервное копирование выполнено",
|
||||
"txt_log_action_admin_backup_remote_scheduled_failed": "Ошибка запланированного удаленного резервного копирования",
|
||||
"txt_log_action_admin_backup_settings_repair": "Восстановление настроек резервного копирования",
|
||||
"txt_log_action_admin_backup_settings_update": "Обновление настроек резервного копирования",
|
||||
"txt_log_action_admin_invite_create": "Создание приглашения",
|
||||
"txt_log_action_admin_invite_delete": "Удаление приглашения",
|
||||
"txt_log_action_admin_invite_delete_all": "Очистка приглашений",
|
||||
"txt_log_action_admin_invite_delete_invalid": "Удаление недействительных приглашений",
|
||||
"txt_log_action_admin_invite_revoke": "Отзыв приглашения",
|
||||
"txt_log_action_admin_user_delete": "Удаление пользователя",
|
||||
"txt_log_action_admin_user_status": "Изменение статуса пользователя",
|
||||
"txt_log_action_attachment_delete": "Удаление вложения",
|
||||
"txt_log_action_auth_login_failed_bad_api_key": "Ошибка входа: неверный API-ключ",
|
||||
"txt_log_action_auth_login_failed_bad_password": "Ошибка входа: неверный пароль",
|
||||
"txt_log_action_auth_login_failed_user_inactive": "Ошибка входа: учетная запись неактивна",
|
||||
"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_cipher_delete_permanent": "Окончательное удаление элемента хранилища",
|
||||
"txt_log_action_cipher_delete_permanent_bulk": "Окончательное удаление элементов хранилища",
|
||||
"txt_log_action_cipher_delete_soft": "Перемещение элемента хранилища в корзину",
|
||||
"txt_log_action_cipher_delete_soft_bulk": "Перемещение элементов хранилища в корзину",
|
||||
"txt_log_action_device_deactivate": "Деактивация устройства",
|
||||
"txt_log_action_device_delete": "Удаление устройства",
|
||||
"txt_log_action_device_delete_all": "Удаление всех устройств",
|
||||
"txt_log_action_device_name_update": "Обновление имени устройства",
|
||||
"txt_log_action_device_trust_permanent": "Постоянное доверие устройству",
|
||||
"txt_log_action_device_trust_revoke": "Отзыв доверия устройству",
|
||||
"txt_log_action_device_trust_revoke_batch": "Массовый отзыв доверия устройствам",
|
||||
"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_changed": "Changed fields",
|
||||
"txt_log_meta_checksum_mismatch_accepted": "Accepted checksum mismatch",
|
||||
"txt_log_meta_cipher_id": "Vault item ID",
|
||||
"txt_log_meta_ciphers": "Vault items",
|
||||
"txt_log_meta_compat": "Compatibility",
|
||||
"txt_log_meta_compressed_bytes": "Compressed bytes",
|
||||
"txt_log_meta_count": "Count",
|
||||
"txt_log_meta_deleted": "Deleted count",
|
||||
"txt_log_meta_destination_count": "Destination count",
|
||||
"txt_log_meta_destination_id": "Destination ID",
|
||||
"txt_log_meta_destination_name": "Destination name",
|
||||
"txt_log_meta_destination_type": "Destination type",
|
||||
"txt_log_meta_device_identifier": "Device ID",
|
||||
"txt_log_meta_device_type": "Device type",
|
||||
"txt_log_meta_changed": "Измененные поля",
|
||||
"txt_log_meta_checksum_mismatch_accepted": "Принято несовпадение контрольной суммы",
|
||||
"txt_log_meta_cipher_id": "ID элемента хранилища",
|
||||
"txt_log_meta_ciphers": "Элементы хранилища",
|
||||
"txt_log_meta_compat": "Совместимость",
|
||||
"txt_log_meta_compressed_bytes": "Байт после сжатия",
|
||||
"txt_log_meta_count": "Количество",
|
||||
"txt_log_meta_deleted": "Удалено",
|
||||
"txt_log_meta_destination_count": "Количество назначений",
|
||||
"txt_log_meta_destination_id": "ID назначения",
|
||||
"txt_log_meta_destination_name": "Имя назначения",
|
||||
"txt_log_meta_destination_type": "Тип назначения",
|
||||
"txt_log_meta_device_identifier": "ID устройства",
|
||||
"txt_log_meta_device_type": "Тип устройства",
|
||||
"txt_log_meta_email": "Email",
|
||||
"txt_log_meta_error": "Error",
|
||||
"txt_log_meta_expires_in_hours": "Expires in hours",
|
||||
"txt_log_meta_file_bytes": "File bytes",
|
||||
"txt_log_meta_file_name": "File name",
|
||||
"txt_log_meta_folder_id": "Folder ID",
|
||||
"txt_log_meta_grant_type": "Login method",
|
||||
"txt_log_meta_includes_attachments": "Includes attachments",
|
||||
"txt_log_meta_ip": "IP address",
|
||||
"txt_log_meta_max_entries": "Entry limit",
|
||||
"txt_log_meta_method": "Request method",
|
||||
"txt_log_meta_path": "Request path",
|
||||
"txt_log_meta_provider": "Provider",
|
||||
"txt_log_meta_prune_error": "Cleanup error",
|
||||
"txt_log_meta_pruned_file_count": "Cleaned files",
|
||||
"txt_log_meta_raw": "Raw data",
|
||||
"txt_log_meta_reason": "Reason",
|
||||
"txt_log_meta_remote_path": "Remote path",
|
||||
"txt_log_meta_removed": "Removed count",
|
||||
"txt_log_meta_removed_devices": "Removed devices",
|
||||
"txt_log_meta_removed_sessions": "Removed sessions",
|
||||
"txt_log_meta_removed_trusted": "Trust removals",
|
||||
"txt_log_meta_replace_existing": "Replace existing data",
|
||||
"txt_log_meta_requested": "Requested count",
|
||||
"txt_log_meta_requested_count": "Requested count",
|
||||
"txt_log_meta_retention_days": "Retention days",
|
||||
"txt_log_meta_scheduled_destination_count": "Scheduled destinations",
|
||||
"txt_log_meta_size": "Size",
|
||||
"txt_log_meta_skipped_attachments": "Skipped attachments",
|
||||
"txt_log_meta_skipped_reason": "Skip reason",
|
||||
"txt_log_meta_status": "Status",
|
||||
"txt_log_meta_target_email": "Target email",
|
||||
"txt_log_meta_trigger": "Trigger",
|
||||
"txt_log_meta_type": "Type",
|
||||
"txt_log_meta_updated": "Updated count",
|
||||
"txt_log_meta_upload_verification_attempts": "Upload verification attempts",
|
||||
"txt_log_meta_user_agent": "Browser/client",
|
||||
"txt_log_meta_users": "Users",
|
||||
"txt_log_meta_verify_devices": "Verify devices",
|
||||
"txt_log_meta_web_session": "Web session",
|
||||
"txt_log_reason_bad_api_key": "Bad API key",
|
||||
"txt_log_reason_bad_password": "Bad password",
|
||||
"txt_log_reason_device_missing": "Device missing",
|
||||
"txt_log_reason_device_session_mismatch": "Device session mismatch",
|
||||
"txt_log_reason_token_not_found_or_expired": "Token missing or expired",
|
||||
"txt_log_reason_user_inactive": "User inactive",
|
||||
"txt_log_reason_user_missing": "User missing",
|
||||
"txt_log_target_type_attachment": "Attachment",
|
||||
"txt_log_target_type_audit_log": "Log",
|
||||
"txt_log_target_type_backup": "Backup",
|
||||
"txt_log_target_type_cipher": "Vault item",
|
||||
"txt_log_target_type_device": "Device",
|
||||
"txt_log_target_type_folder": "Folder",
|
||||
"txt_log_target_type_invite": "Invite",
|
||||
"txt_log_target_type_refresh_token": "Refresh token",
|
||||
"txt_log_meta_error": "Ошибка",
|
||||
"txt_log_meta_expires_in_hours": "Истекает через часов",
|
||||
"txt_log_meta_file_bytes": "Байт файла",
|
||||
"txt_log_meta_file_name": "Имя файла",
|
||||
"txt_log_meta_folder_id": "ID папки",
|
||||
"txt_log_meta_grant_type": "Способ входа",
|
||||
"txt_log_meta_includes_attachments": "Включает вложения",
|
||||
"txt_log_meta_ip": "IP-адрес",
|
||||
"txt_log_meta_max_entries": "Лимит записей",
|
||||
"txt_log_meta_method": "Метод запроса",
|
||||
"txt_log_meta_path": "Путь запроса",
|
||||
"txt_log_meta_provider": "Поставщик",
|
||||
"txt_log_meta_prf_status": "Статус PRF",
|
||||
"txt_log_meta_prune_error": "Ошибка очистки",
|
||||
"txt_log_meta_pruned_file_count": "Очищено файлов",
|
||||
"txt_log_meta_raw": "Исходные данные",
|
||||
"txt_log_meta_reason": "Причина",
|
||||
"txt_log_meta_remote_path": "Удаленный путь",
|
||||
"txt_log_meta_removed": "Удалено",
|
||||
"txt_log_meta_removed_devices": "Удалено устройств",
|
||||
"txt_log_meta_removed_sessions": "Удалено сессий",
|
||||
"txt_log_meta_removed_trusted": "Отозвано доверий",
|
||||
"txt_log_meta_replace_existing": "Заменить существующие данные",
|
||||
"txt_log_meta_requested": "Запрошено",
|
||||
"txt_log_meta_requested_count": "Запрошено",
|
||||
"txt_log_meta_retention_days": "Дней хранения",
|
||||
"txt_log_meta_scheduled_destination_count": "Запланированные назначения",
|
||||
"txt_log_meta_size": "Размер",
|
||||
"txt_log_meta_skipped_attachments": "Пропущенные вложения",
|
||||
"txt_log_meta_skipped_reason": "Причина пропуска",
|
||||
"txt_log_meta_status": "Статус",
|
||||
"txt_log_meta_target_email": "Email цели",
|
||||
"txt_log_meta_trigger": "Триггер",
|
||||
"txt_log_meta_type": "Тип",
|
||||
"txt_log_meta_updated": "Обновлено",
|
||||
"txt_log_meta_upload_verification_attempts": "Попытки проверки загрузки",
|
||||
"txt_log_meta_user_agent": "Браузер/клиент",
|
||||
"txt_log_meta_users": "Пользователи",
|
||||
"txt_log_meta_verify_devices": "Проверка устройств",
|
||||
"txt_log_meta_web_session": "Веб-сессия",
|
||||
"txt_log_reason_bad_api_key": "Неверный API-ключ",
|
||||
"txt_log_reason_bad_password": "Неверный пароль",
|
||||
"txt_log_reason_device_missing": "Устройство не найдено",
|
||||
"txt_log_reason_device_session_mismatch": "Сессия не соответствует устройству",
|
||||
"txt_log_reason_token_not_found_or_expired": "Токен отсутствует или истек",
|
||||
"txt_log_reason_user_inactive": "Пользователь неактивен",
|
||||
"txt_log_reason_user_missing": "Пользователь не найден",
|
||||
"txt_log_target_type_attachment": "Вложение",
|
||||
"txt_log_target_type_account_passkey": "Ключ входа",
|
||||
"txt_log_target_type_audit_log": "Журнал",
|
||||
"txt_log_target_type_backup": "Резервная копия",
|
||||
"txt_log_target_type_cipher": "Элемент хранилища",
|
||||
"txt_log_target_type_device": "Устройство",
|
||||
"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_user": "User",
|
||||
"txt_log_trigger_manual": "Manual",
|
||||
"txt_log_trigger_remote": "Remote",
|
||||
"txt_log_trigger_scheduled": "Scheduled",
|
||||
"txt_log_target_type_user": "Пользователь",
|
||||
"txt_log_trigger_manual": "Вручную",
|
||||
"txt_log_trigger_remote": "Удаленно",
|
||||
"txt_log_trigger_scheduled": "По расписанию",
|
||||
"txt_log_max_1000": "До 1 000 записей",
|
||||
"txt_log_max_5000": "До 5 000 записей",
|
||||
"txt_log_max_10000": "До 10 000 записей",
|
||||
|
||||
@@ -1014,6 +1014,8 @@ const zhCN: Record<string, string> = {
|
||||
"txt_totp_qr_scanned": "TOTP 内容已填入。",
|
||||
"txt_totp_qr_not_found": "这张图片里没有识别到二维码。",
|
||||
"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_camera_unavailable": "无法使用摄像头。请检查浏览器权限,或选择图片。",
|
||||
"txt_totp_qr_choose_image": "选择图片",
|
||||
@@ -1125,6 +1127,12 @@ const zhCN: Record<string, string> = {
|
||||
"txt_import_invalid_password_protected_file": "密码保护导出文件格式无效。",
|
||||
"txt_import_decrypt_failed": "导入文件解密失败。",
|
||||
"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_data_json_not_found": "ZIP 内未找到 data.json。",
|
||||
"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_rotate": "轮换 API 密钥",
|
||||
"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_totp_disable": "关闭两步验证",
|
||||
"txt_log_action_account_totp_enable": "开启两步验证",
|
||||
"txt_log_action_account_totp_recover": "恢复两步验证",
|
||||
"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_backup_export": "导出备份",
|
||||
"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_user_inactive": "账号停用登录失败",
|
||||
"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_cipher_delete_permanent": "永久删除密码项",
|
||||
"txt_log_action_cipher_delete_permanent_bulk": "批量永久删除密码项",
|
||||
@@ -1296,6 +1313,7 @@ const zhCN: Record<string, string> = {
|
||||
"txt_log_meta_method": "请求方法",
|
||||
"txt_log_meta_path": "请求路径",
|
||||
"txt_log_meta_provider": "服务提供方",
|
||||
"txt_log_meta_prf_status": "PRF 状态",
|
||||
"txt_log_meta_prune_error": "清理错误",
|
||||
"txt_log_meta_pruned_file_count": "已清理文件数",
|
||||
"txt_log_meta_raw": "原始数据",
|
||||
@@ -1331,6 +1349,7 @@ const zhCN: Record<string, string> = {
|
||||
"txt_log_reason_user_inactive": "用户未启用",
|
||||
"txt_log_reason_user_missing": "用户不存在",
|
||||
"txt_log_target_type_attachment": "附件",
|
||||
"txt_log_target_type_account_passkey": "登录通行密钥",
|
||||
"txt_log_target_type_audit_log": "日志",
|
||||
"txt_log_target_type_backup": "备份",
|
||||
"txt_log_target_type_cipher": "密码项",
|
||||
|
||||
@@ -1014,6 +1014,8 @@ const zhTW: Record<string, string> = {
|
||||
"txt_totp_qr_scanned": "TOTP 內容已填入。",
|
||||
"txt_totp_qr_not_found": "這張圖片裡沒有識別到二維碼。",
|
||||
"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_camera_unavailable": "無法使用攝影機。請檢查瀏覽器權限,或選擇圖片。",
|
||||
"txt_totp_qr_choose_image": "選擇圖片",
|
||||
@@ -1125,6 +1127,12 @@ const zhTW: Record<string, string> = {
|
||||
"txt_import_invalid_password_protected_file": "密碼保護導出文件格式無效。",
|
||||
"txt_import_decrypt_failed": "導入文件解密失敗。",
|
||||
"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_data_json_not_found": "ZIP 內未找到 data.json。",
|
||||
"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_rotate": "輪換 API 金鑰",
|
||||
"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_totp_disable": "關閉兩步驟登入",
|
||||
"txt_log_action_account_totp_enable": "開啟兩步驟登入",
|
||||
"txt_log_action_account_totp_recover": "復原兩步驟登入",
|
||||
"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_backup_export": "匯出備份",
|
||||
"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_user_inactive": "帳號停用登入失敗",
|
||||
"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_cipher_delete_permanent": "永久刪除密碼項",
|
||||
"txt_log_action_cipher_delete_permanent_bulk": "批次永久刪除密碼項",
|
||||
@@ -1296,6 +1313,7 @@ const zhTW: Record<string, string> = {
|
||||
"txt_log_meta_method": "請求方法",
|
||||
"txt_log_meta_path": "請求路徑",
|
||||
"txt_log_meta_provider": "服務提供方",
|
||||
"txt_log_meta_prf_status": "PRF 狀態",
|
||||
"txt_log_meta_prune_error": "清理錯誤",
|
||||
"txt_log_meta_pruned_file_count": "已清理檔案數",
|
||||
"txt_log_meta_raw": "原始資料",
|
||||
@@ -1331,6 +1349,7 @@ const zhTW: Record<string, string> = {
|
||||
"txt_log_reason_user_inactive": "使用者未啟用",
|
||||
"txt_log_reason_user_missing": "使用者不存在",
|
||||
"txt_log_target_type_attachment": "附件",
|
||||
"txt_log_target_type_account_passkey": "登入通行密鑰",
|
||||
"txt_log_target_type_audit_log": "日誌",
|
||||
"txt_log_target_type_backup": "備份",
|
||||
"txt_log_target_type_cipher": "密碼項",
|
||||
|
||||
Reference in New Issue
Block a user