#23: show real data, unify the surfaces and make enrolment scannable

The interface was reporting things that were not true. Several screens were
mockups wired to nothing, and a reader with the console in Portuguese was
served a mixture of two languages.

Fabricated data, removed:

- The outbound queue was two invented jobs held in component state. Retry and
  Freeze only edited that local array, so the screen showed the same two rows
  on every deployment and reported success for actions that never happened.
  "Freeze" named an operation the backend has never implemented. It now reads
  /api/v1/admin/queue, which was already serving the real thing, and offers
  retry and cancel, which exist.
- Every dashboard KPI fell back to an invented constant (1420 received, 890
  sent, 3 queued, 18.4% disk), so an unreachable API produced a dashboard of
  plausible traffic for a server that might have delivered nothing. Two of
  those fields were never returned by the endpoint at all, so the fake disk
  figure was what everyone always saw. DMARC did the same with 1250/98%/97%.
- The domains screen showed thirteen DNS records for example.com, all marked
  VERIFIED, and posted {domain_id: "default-domain"} to endpoints expecting a
  real id. DKIM rotation sends "domain", not "domain_id", so its 400 was
  swallowed and a made-up TXT record displayed as though a key had been
  issued: rotation had never once worked from this screen.
- The TLS panel asserted a Let's Encrypt RSA 4096 certificate and verified
  DANE from static markup, on a deployment currently serving a self-signed
  one. It now reads the cert watcher via /api/v1/admin/tls.
- The readiness scorecard printed "10 / 10 all checks passed" regardless of
  what preflight reported, including failures.
- A message trace that found nothing invented a five-step delivery - TLS 1.3
  accepted, SPF pass, spam score 0.8 - for a message that does not exist.
- Both sidebars showed a fixed admin@lambdamail.local with a hardcoded
  "SUPER_ADMIN (2FA)", claiming a second factor whether or not one existed.
- Settings seeded a "[Boletim]" Sieve rule. Saving posts the whole list, so
  the first edit wrote that invented filter into the account's real script.

The reconcile endpoint itself answered {records_verified: 13, status:
"VERIFIED"} for any domain id, including one that does not exist, without
resolving a name. It now reports what it does, which is record the request.

Surfaces:

The root was a chooser listing webmail and the console side by side, which
asked visitors a question they should not have to answer and advertised cookie
names and audiences to anonymous readers. It now redirects into the mail
client. Accounts that may administer the server get a link to the console from
inside the app - a link to /admin/login, so crossing over still costs the
second factor the admin audience requires - and the console gets a plain link
back, since the webmail session was never given up to get there.

Enrolment:

Both enrolment screens printed the base32 secret as text and left the operator
to type 32 characters into their phone. The enrol endpoint already returned an
otpauth:// URI; it simply was not drawn. Added a shared component that renders
it as a QR locally - the seed is already in the page, and sending it to an
image service would put it in another request log for nothing.

The recovery-code step rendered its own "sign in" button while the form's
submit button stayed visible below it: two identical buttons, and no way to
copy the codes it insisted you save. It is now terminal, with copy and
continue.

Language:

translate() had no interpolation, so "Undo Send ({seconds}s remaining)" showed
the placeholder and a second hardcoded countdown was appended after it. It now
substitutes, leaving an unmatched token visible rather than blanking it.

The pt-BR bundle had lost its diacritics - "Destinatario", "Ultimo erro",
"Acoes" - from the ASCII-source rule being applied to the translations, which
are data. Restored, and the three bundles are back in key parity at 270 each,
with roughly 120 strings that were hardcoded in the source now keyed.

Healthchecks:

web had none, despite being the only service users reach directly: a wedged
Next process kept its container running and Traefik kept routing to it. Added,
using node's own fetch since the image ships no curl. rspamd and clamav gained
the timeouts and start_periods whose absence would fail them during startup.
migrate stays without one and says why: it is a one-shot job, and a probe
would report unhealthy exactly when it has succeeded.

Verified: 36 webmail tests and 41 auth tests against a real Postgres, both new
admin/me cases confirmed to fail without the route (404). lang-lint clean,
production build clean, 0 vulnerabilities, compose validates.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Lucas RayanandClaude Opus 5 committed 2026-08-02 19:13:53 -03:00
1 parent f7e93275d5
commit ee240ae227
29 files changed
+2201 -1221

No files matched your search

+271 -133
View File
@@ -1,148 +1,286 @@
{
"common": {
"appName": "LambdaMail",
"userPortal": "Webmail",
"adminPortal": "Management Console",
"loading": "Loading...",
"save": "Save Changes",
"cancel": "Cancel",
"delete": "Delete",
"confirm": "Confirm",
"search": "Search",
"status": "Status",
"actions": "Actions",
"refresh": "Refresh",
"logout": "Log Out"
"admin": {
"addAlias": "Add alias",
"aliasesTitle": "Aliases",
"auditLog": "Audit log",
"backToWebmail": "Back to webmail",
"cancelJob": "Cancel",
"certificateState": "Certificate",
"checksPassed": "{passed} of {total} passed",
"createAccount": "Create account",
"createAlias": "Create a routing alias",
"csvPreview": "Preview",
"dashboardSubtitle": "Live figures read from the database.",
"dashboardTitle": "Overview",
"dkimAlgorithm": "Key type",
"dkimOverlap": "Both keys sign outbound mail for {days} days so nothing fails while DNS propagates.",
"dkimPublishRecord": "Publish this record in DNS:",
"dkimRotate": "Generate a new key",
"dkimSelector": "Selector",
"dkimTitle": "DKIM key rotation",
"dmarcSubtitle": "Breakdown of the aggregate XML reports that have been ingested.",
"dmarcTitle": "DMARC reports",
"dnsRecordsFor": "DNS records for {domain}",
"dnsStatusDrift": "Drift",
"dnsStatusPartial": "Partial",
"dnsStatusVerified": "Verified",
"domainName": "Domain name",
"domainsTitle": "Domains",
"expiresInDays": "Expires in {days} days",
"freezeDomain": "Freeze domain",
"greylistScore": "Greylist score",
"headerScore": "Header-tagging score",
"jobCancelled": "Job {id} was cancelled.",
"jobRetried": "Job {id} was queued for another attempt.",
"lastChecked": "Last checked: {when}",
"lastReload": "Last reload",
"mailHost": "Mail host",
"mailboxCount": "{count} mailboxes",
"mailboxesSubtitle": "Accounts, aliases, CSV import and the second-factor policy.",
"mailboxesTitle": "Mailboxes",
"mfaAdmins": "Required for admins",
"mfaEveryone": "Required for everyone",
"mfaOptional": "Optional",
"mfaPolicyIntro": "Choose how strictly this domain requires a second factor.",
"mfaPolicyTitle": "Second-factor requirement",
"noCertificate": "No certificate is loaded for this host.",
"noChecks": "No checks reported.",
"noDomains": "No domains have been onboarded yet.",
"onboardIntro": "Creates the domain and its standard RFC 2142 aliases, pointed at your address.",
"onboardTitle": "Add a domain",
"openAdmin": "Admin console",
"preflightTitle": "Readiness checks",
"queueEmpty": "The outbound queue is empty.",
"queueSubtitle": "Inspect the outbound queue, retry a job, or cancel one.",
"queueTitle": "Outbound queue",
"readinessIntro": "Checks the server reports about itself before it carries production mail.",
"reconcileDns": "Reconcile DNS",
"reconcileNotImplemented": "Per-record DNS verification is not implemented yet: this records the request and re-reads the stored status, it does not query a resolver.",
"rejectScore": "Reject score",
"retryJob": "Retry",
"rspamdIntro": "Scores that trigger greylisting, header tagging and rejection.",
"rspamdSaved": "Thresholds saved.",
"saveThresholds": "Save thresholds",
"securitySubtitle": "Readiness checks, TLS state, spam thresholds and the audit trail.",
"securityTitle": "Security",
"tabAudit": "Audit trail",
"tabReadiness": "Readiness",
"tabRspamd": "Spam thresholds",
"tabTls": "TLS",
"tlsMode": "TLS mode",
"tlsTitle": "Certificate and transport",
"traceNoResults": "No trace found for that queue ID.",
"tracePlaceholder": "Queue ID",
"traceTitle": "Trace a message",
"unknownSni": "Unknown SNI requests",
"watcherHealthy": "Certificate watcher"
},
"auth": {
"userLoginTitle": "Webmail Sign In",
"adminLoginTitle": "Admin Console Sign In",
"emailLabel": "Email Address",
"passwordLabel": "Password",
"signInButton": "Sign In",
"totpCodeLabel": "6-Digit Authenticator Code",
"verifyCodeButton": "Verify Code",
"adminLoginTitle": "Admin console",
"adminStepUpNote": "The admin console asks for your second factor again, even though you are already signed in to webmail.",
"authFailed": "Authentication failed",
"cantScanQr": "Cannot scan? Enter this key manually:",
"emailLabel": "Email address",
"enrolmentFailed": "Could not start the second-factor setup",
"enrolmentIntro": "The admin console requires a second factor. Set one up now to continue.",
"genericError": "Something went wrong",
"invalidCredentials": "Invalid email or password",
"mfaRequired": "Two-factor authentication code required"
"mfaRequired": "Enter the six-digit code from your authenticator app.",
"passwordLabel": "Password",
"qrCodeAlt": "QR code for two-factor setup",
"scanQr": "Scan this code with Google Authenticator, Aegis, Authy or 1Password.",
"signInButton": "Sign in",
"signOutOfAdmin": "Leave admin",
"totpCodeLabel": "Authentication code",
"userLoginTitle": "Sign in to your mailbox",
"verificationFailed": "Verification failed",
"verifyCodeButton": "Verify code"
},
"mail": {
"inbox": "Inbox",
"sent": "Sent",
"drafts": "Drafts",
"trash": "Trash",
"junk": "Spam",
"archive": "Archive",
"compose": "Compose Email",
"noMessages": "No messages in this folder",
"unreadCount": "{count, plural, =0 {No unread messages} one {# unread message} other {# unread messages}}",
"loadImages": "Load Remote Images",
"reply": "Reply",
"forward": "Forward",
"undoSend": "Undo Send ({seconds}s remaining)"
},
"settings": {
"title": "Account Settings",
"security": "Security & 2FA",
"appPasswords": "App Passwords",
"sessions": "Active Sessions",
"mfaStatus": "Two-Factor Authentication Status",
"mfaEnabled": "2FA is Active",
"mfaDisabled": "2FA is Disabled",
"enableMfa": "Enable 2FA",
"generateAppPassword": "Generate App Password",
"recoveryCodesTitle": "Recovery Codes",
"saveRecoveryCodes": "Save these recovery codes in a safe place. They will not be shown again.",
"language": "Language",
"signOut": "Sign out",
"langEn": "English",
"langPtBR": "Portuguese (Brazil)",
"langEs": "Spanish"
},
"admin": {
"dashboardTitle": "System Dashboard",
"domainsTitle": "Domains & DNS (13 Records)",
"mailboxesTitle": "Mailboxes & Accounts",
"aliasesTitle": "Aliases & Routing",
"queueTitle": "Outbound Delivery Queue",
"dmarcTitle": "DMARC Analytics",
"securityTitle": "Security & Audit Log",
"preflightTitle": "Preflight Diagnostics",
"reconcileDns": "Reconcile DNS Records",
"dnsStatusVerified": "VERIFIED",
"dnsStatusDrift": "DRIFT DETECTED",
"dnsStatusPartial": "PARTIAL",
"retryJob": "Retry Delivery",
"cancelJob": "Cancel Job",
"freezeDomain": "Freeze Destination"
"common": {
"actions": "Actions",
"add": "Add",
"adminPortal": "Admin",
"appName": "LambdaMail",
"back": "Back",
"cancel": "Cancel",
"confirm": "Confirm",
"continue": "Continue",
"copied": "Copied",
"copy": "Copy",
"delete": "Delete",
"loading": "Loading...",
"logout": "Sign out",
"never": "Never",
"none": "None",
"refresh": "Refresh",
"retry": "Retry",
"save": "Save",
"search": "Search",
"status": "Status",
"unavailable": "Unavailable",
"userPortal": "Webmail"
},
"errors": {
"unauthorized": "Session expired or unauthorized",
"forbidden": "Access forbidden for this account surface",
"serverError": "Internal server error occurred"
"forbidden": "You do not have access to this",
"loadFailed": "Could not load the data",
"serverError": "Something went wrong on the server",
"unauthorized": "Please sign in again"
},
"mail": {
"addFiles": "Add files...",
"allMessages": "All",
"archive": "Archive",
"attachments": "Attachments ({count})",
"attachmentsFilter": "With attachments",
"attachmentsUnsupported": "Attachments are listed by name only; file upload is not wired up yet.",
"backToList": "Back to the message list",
"bold": "Bold",
"bulletList": "Bulleted list",
"compose": "Compose",
"discard": "Discard",
"draftSaved": "Draft saved automatically",
"drafts": "Drafts",
"forward": "Forward",
"hideCcBcc": "- Hide Cc/Bcc",
"inbox": "Inbox",
"insertLink": "Insert link",
"insertUrl": "Enter the URL:",
"italic": "Italic",
"junk": "Spam",
"loadImages": "Load images",
"noMessages": "No messages",
"numberedList": "Numbered list",
"reply": "Reply",
"sendMessage": "Send message",
"sending": "Sending...",
"sent": "Sent",
"showCcBcc": "+ Add Cc/Bcc",
"strikethrough": "Strikethrough",
"trash": "Trash",
"underline": "Underline",
"undoSend": "Sending in {seconds}s",
"undoSendAction": "Undo",
"unreadCount": "{count} unread",
"unreadFilter": "Unread"
},
"settings": {
"actionDiscard": "Discard",
"actionFlag": "Flag message",
"actionMove": "Move to Archive",
"addRule": "Add rule",
"appPasswordPlaceholder": "Thunderbird / Outlook Mobile",
"appPasswords": "App passwords",
"autoReplySaveFailed": "Could not save the auto-reply",
"enableMfa": "Enable two-factor",
"fieldFrom": "From",
"fieldHeader": "Header",
"fieldSubject": "Subject",
"generateAppPassword": "Generate",
"langEn": "English",
"langEs": "Español",
"langPtBR": "Português (Brasil)",
"language": "Language",
"matchContains": "contains",
"matchEquals": "is exactly",
"matchRegex": "matches regex",
"mfaDisabled": "Disabled",
"mfaEnabled": "Enabled",
"mfaStatus": "Two-factor status",
"recoveryCodesTitle": "Recovery codes",
"ruleIf": "IF",
"ruleThen": "THEN",
"saveAutoReply": "Save auto-reply",
"saveRecoveryCodes": "Save these somewhere safe. Each one works once, and they are shown only now.",
"security": "Security",
"sessions": "Sessions",
"settingsSaved": "Settings saved.",
"sieveIntro": "Rules that sort incoming mail automatically.",
"sieveTitle": "Filters (Sieve)",
"signOut": "Sign out",
"signatureIntro": "Appended automatically to the messages you compose.",
"signaturePlaceholder": "Kind regards,\nYour name\nYour role",
"signatureSaveFailed": "Could not save the signature",
"signatureSaved": "Signature saved.",
"signatureTitle": "Email signature",
"sixDigitCode": "Six-digit code",
"subtitle": "Two-factor authentication, filters, auto-reply and your signature.",
"title": "Settings",
"twoFactorIntro": "Protect your account with Google Authenticator, Aegis, Authy or 1Password.",
"vacationBodyLabel": "Reply message",
"vacationDefaultBody": "Thank you for your message. I am currently away and will reply when I return.",
"vacationDefaultSubject": "Out of office",
"vacationIntro": "Reply automatically to incoming mail while you are away.",
"vacationSubjectLabel": "Reply subject",
"vacationTitle": "Out-of-office auto-reply",
"valuePlaceholder": "Value to match..."
},
"ui": {
"accountStatus": "Account Status",
"accountStatus": "Account status",
"actions": "Actions",
"active": "ACTIVE",
"activeSessions": "Active Webmail Sessions",
"actor": "Actor / Account",
"actualRecord": "Actual DNS Record (Cloudflare)",
"allChecksPassed": "ALL CHECKS PASSED",
"appPasswordGenerated": "App Password Generated:",
"appPasswordsSection": "App Passwords (IMAP / SMTP Clients)",
"active": "Active",
"activeSessions": "Active sessions",
"actor": "Actor",
"actualRecord": "Actual value",
"allChecksPassed": "All checks passed",
"appPasswordGenerated": "App password generated",
"appPasswordsSection": "App passwords",
"attempts": "Attempts",
"clientIp": "Client IP",
"copyPasswordNow": "Copy this password now. It will not be shown again.",
"coreInfra": "Core Infrastructure Status",
"currentSession": "Current Webmail Browser Session",
"daneVerified": "DANE / MTA-STS verified",
"destination": "Destination",
"diskUsed": "Disk Capacity Used",
"dkimResult": "DKIM Result",
"dkimAlignment": "DKIM Signature Alignment",
"dmarcEnforcement": "DMARC Policy Enforcement",
"domainVerification": "Domain Verification Status",
"emailAddress": "Email Address",
"eventAction": "Event Action",
"expectedValue": "Expected Specification Value",
"healthy": "HEALTHY",
"imapEngine": "IMAP Protocol Engine (143/993)",
"inboundVolume": "Inbound Volume (24h)",
"jobId": "Job ID",
"lastError": "Last Error",
"liveMetrics": "Live operational metrics for LambdaMail mail node.",
"localDisk": "Local disk storage driver",
"preflightTitle": "Mail Server Preflight Diagnostics",
"messageBody": "Message Body",
"messageVolume": "Message Volume",
"noAppPasswords": "No app passwords generated yet.",
"online": "ONLINE",
"outboundDelivered": "Outbound Delivered (24h)",
"queueDepth": "Outbound Queue Depth",
"postgresRunner": "Postgres job runner active",
"provisionMailbox": "Provision New Mailbox Account",
"recipient": "Recipient",
"recordName": "Record Name",
"reportingOrg": "Reporting Organization",
"scanners": "Rspamd Anti-Spam Scanner & ClamAV",
"sender": "Sender",
"smtpListener": "SMTP Protocols Listener (25/587/465)",
"sourceIp": "Source IP",
"spfRatio": "SPF Alignment Pass Ratio",
"spfResult": "SPF Result",
"storageQuota": "Storage Quota",
"subject": "Subject",
"targetObject": "Target Object",
"timestamp": "Timestamp",
"toRecipients": "To (Recipients)",
"totalEvaluated": "Total Evaluated Messages",
"twoFactorSection": "Two-Factor Authentication (TOTP RFC 6238)",
"watching": "WATCHING",
"passwordChanged": "Password changed",
"signOutOthers": "Sign out other sessions",
"bounceRate": "Bounce rate",
"changePassword": "Change password",
"clientIp": "Client IP",
"copyPasswordNow": "Copy it now. It is not shown again.",
"coreInfra": "Core services",
"currentPassword": "Current password",
"newPassword": "New password (min. 12 characters)",
"toggleMenu": "Toggle navigation menu"
"currentSession": "This device",
"daneVerified": "DANE verified",
"destination": "Destination",
"diskUsed": "Storage used",
"dkimAlignment": "DKIM alignment",
"dkimResult": "DKIM",
"dmarcEnforcement": "DMARC policy",
"domainVerification": "Domain verification",
"domainsVerified": "Domains verified",
"emailAddress": "Email address",
"eventAction": "Action",
"expectedValue": "Expected value",
"healthy": "Healthy",
"imapEngine": "IMAP service",
"inboundVolume": "Received (24h)",
"jobId": "Job",
"lastError": "Last error",
"liveMetrics": "Live metrics",
"localDisk": "Local disk",
"mailboxesActive": "Active mailboxes",
"messageBody": "Message",
"messageVolume": "Messages",
"newPassword": "New password",
"noAppPasswords": "No app passwords yet.",
"noData": "No data yet",
"online": "Online",
"outboundDelivered": "Sent (24h)",
"passwordChanged": "Password changed.",
"postgresRunner": "Postgres-backed queue",
"preflightTitle": "Readiness",
"provisionMailbox": "Create mailbox",
"queueDepth": "Queue depth",
"recipient": "Recipient",
"recordName": "Record",
"reportingOrg": "Reporting organisation",
"scanners": "Spam and virus scanning",
"sender": "Sender",
"signOutOthers": "Sign out other devices",
"smtpListener": "SMTP service",
"sourceIp": "Source IP",
"spfRatio": "SPF pass rate",
"spfResult": "SPF",
"storageQuota": "Storage quota",
"subject": "Subject",
"targetObject": "Target",
"timestamp": "Time",
"toRecipients": "To",
"toggleMenu": "Toggle menu",
"totalEvaluated": "Messages evaluated",
"twoFactorSection": "Two-factor authentication",
"watching": "Watching"
}
}
+265 -127
View File
@@ -1,148 +1,286 @@
{
"common": {
"appName": "LambdaMail",
"userPortal": "Webmail",
"adminPortal": "Consola de Gestión",
"loading": "Cargando...",
"save": "Guardar Cambios",
"cancel": "Cancelar",
"delete": "Eliminar",
"confirm": "Confirmar",
"search": "Buscar",
"status": "Estado",
"actions": "Acciones",
"refresh": "Actualizar",
"logout": "Cerrar Sesión"
"admin": {
"addAlias": "Añadir apelido",
"aliasesTitle": "Alias",
"auditLog": "Registro de auditoría",
"backToWebmail": "Volver al webmail",
"cancelJob": "Cancelar",
"certificateState": "Certificado",
"checksPassed": "{passed} de {total} aprobadas",
"createAccount": "Crear cuenta",
"createAlias": "Crear un alias de enrutamiento",
"csvPreview": "Vista previa",
"dashboardSubtitle": "Cifras en vivo leídas de la base de datos.",
"dashboardTitle": "Resumen",
"dkimAlgorithm": "Tipo de clave",
"dkimOverlap": "Ambas claves firman el correo saliente durante {days} días para que nada falle mientras el DNS se propaga.",
"dkimPublishRecord": "Publique este registro en DNS:",
"dkimRotate": "Generar una nueva clave",
"dkimSelector": "Selector",
"dkimTitle": "Rotación de clave DKIM",
"dmarcSubtitle": "Desglose de los informes XML agregados procesados.",
"dmarcTitle": "Informes DMARC",
"dnsRecordsFor": "Registros DNS de {domain}",
"dnsStatusDrift": "Divergente",
"dnsStatusPartial": "Parcial",
"dnsStatusVerified": "Verificado",
"domainName": "Nombre del dominio",
"domainsTitle": "Dominios",
"expiresInDays": "Caduca en {days} días",
"freezeDomain": "Congelar dominio",
"greylistScore": "Puntuación de greylist",
"headerScore": "Puntuación de etiquetado de cabecera",
"jobCancelled": "El trabajo {id} fue cancelado.",
"jobRetried": "El trabajo {id} se volvió a poner en cola para otro intento.",
"lastChecked": "Última comprobación: {when}",
"lastReload": "Última recarga",
"mailHost": "Host de correo",
"mailboxCount": "{count} buzones",
"mailboxesSubtitle": "Cuentas, alias, importación CSV y la política de segundo factor.",
"mailboxesTitle": "Buzones",
"mfaAdmins": "Obligatorio para administradores",
"mfaEveryone": "Obligatorio para todos",
"mfaOptional": "Opcional",
"mfaPolicyIntro": "Elija con qué rigor este dominio exige un segundo factor.",
"mfaPolicyTitle": "Requisito de segundo factor",
"noCertificate": "No hay certificado cargado para este host.",
"noChecks": "No se informaron verificaciones.",
"noDomains": "Aún no se ha dado de alta ningún dominio.",
"onboardIntro": "Crea el dominio y sus alias estándar RFC 2142, apuntados a su dirección.",
"onboardTitle": "Añadir un dominio",
"openAdmin": "Consola de administración",
"preflightTitle": "Verificaciones de preparación",
"queueEmpty": "La cola de salida está vacía.",
"queueSubtitle": "Inspeccione la cola de salida, reintente un trabajo o cancele uno.",
"queueTitle": "Cola de salida",
"readinessIntro": "Verificaciones que el servidor informa sobre sí mismo antes de transportar correo en producción.",
"reconcileDns": "Reconciliar DNS",
"reconcileNotImplemented": "La verificación de registros DNS individuales aún no está implementada: esto registra la solicitud y relee el estado almacenado, no consulta un resolutor.",
"rejectScore": "Puntuación de rechazo",
"retryJob": "Reintentar",
"rspamdIntro": "Puntuaciones que activan greylisting, etiquetado de cabecera y rechazo.",
"rspamdSaved": "Umbrales guardados.",
"saveThresholds": "Guardar umbrales",
"securitySubtitle": "Verificaciones de preparación, estado TLS, umbrales de spam y el registro de auditoría.",
"securityTitle": "Seguridad",
"tabAudit": "Registro de auditoría",
"tabReadiness": "Preparación",
"tabRspamd": "Umbrales de spam",
"tabTls": "TLS",
"tlsMode": "Modo TLS",
"tlsTitle": "Certificado y transporte",
"traceNoResults": "No se encontró rastro para ese ID de cola.",
"tracePlaceholder": "ID de la cola",
"traceTitle": "Rastrear un mensaje",
"unknownSni": "Solicitudes SNI desconocidas",
"watcherHealthy": "Monitor de certificado"
},
"auth": {
"userLoginTitle": "Iniciar Sesión en Webmail",
"adminLoginTitle": "Iniciar Sesión en Consola Admin",
"emailLabel": "Dirección de Correo",
"adminLoginTitle": "Consola de administración",
"adminStepUpNote": "La consola de administración vuelve a pedir su segundo factor, aunque ya haya iniciado sesión en el webmail.",
"authFailed": "Fallo en la autenticación",
"cantScanQr": "¿No puede escanear? Introduzca esta clave manualmente:",
"emailLabel": "Dirección de correo",
"enrolmentFailed": "No se pudo iniciar la configuración del segundo factor",
"enrolmentIntro": "La consola de administración requiere un segundo factor. Configure uno ahora para continuar.",
"genericError": "Algo salió mal",
"invalidCredentials": "Correo o contraseña inválidos",
"mfaRequired": "Introduzca el código de seis dígitos de su aplicación de autenticación.",
"passwordLabel": "Contraseña",
"signInButton": "Iniciar Sesión",
"totpCodeLabel": "Código del Autenticador (6 dígitos)",
"verifyCodeButton": "Verificar Código",
"invalidCredentials": "Correo o contraseña no válidos",
"mfaRequired": "Código de autenticación de dos factores requerido"
"qrCodeAlt": "Código QR para configurar la verificación en dos pasos",
"scanQr": "Escanee este código con Google Authenticator, Aegis, Authy o 1Password.",
"signInButton": "Iniciar sesión",
"signOutOfAdmin": "Salir de administración",
"totpCodeLabel": "Código de autenticación",
"userLoginTitle": "Acceda a su buzón",
"verificationFailed": "Fallo en la verificación",
"verifyCodeButton": "Verificar código"
},
"mail": {
"inbox": "Bandeja de Entrada",
"sent": "Enviados",
"drafts": "Borradores",
"trash": "Papelera",
"junk": "Spam",
"archive": "Archivo",
"compose": "Redactar Correo",
"noMessages": "No hay mensajes en esta carpeta",
"unreadCount": "{count, plural, =0 {Sin mensajes no leídos} one {# mensaje no leído} other {# mensajes no leídos}}",
"loadImages": "Cargar Imágenes Remotas",
"reply": "Responder",
"forward": "Reenviar",
"undoSend": "Deshacer Envío ({seconds}s restantes)"
},
"settings": {
"title": "Configuración de la Cuenta",
"security": "Seguridad y 2FA",
"appPasswords": "Contraseñas de Aplicación",
"sessions": "Sesiones Activas",
"mfaStatus": "Estado de Autenticación de Dos Factores",
"mfaEnabled": "2FA está Activo",
"mfaDisabled": "2FA está Desactivado",
"enableMfa": "Activar 2FA",
"generateAppPassword": "Generar Contraseña de Aplicación",
"recoveryCodesTitle": "Códigos de Recuperación",
"saveRecoveryCodes": "Guarde estos códigos de recuperación en un lugar seguro. No se volverán a mostrar.",
"language": "Idioma",
"signOut": "Cerrar sesión",
"langEn": "Inglés",
"langPtBR": "Portugués (Brasil)",
"langEs": "Español"
},
"admin": {
"dashboardTitle": "Panel del Sistema",
"domainsTitle": "Dominios y DNS (13 Registros)",
"mailboxesTitle": "Buzones y Cuentas",
"aliasesTitle": "Alias y Enrutamiento",
"queueTitle": "Cola de Entrega de Salida",
"dmarcTitle": "Análisis DMARC",
"securityTitle": "Seguridad y Registro de Auditoría",
"preflightTitle": "Diagnóstico Preflight",
"reconcileDns": "Reconciliar Registros DNS",
"dnsStatusVerified": "VERIFICADO",
"dnsStatusDrift": "DESVÍO DETECTADO",
"dnsStatusPartial": "PARCIAL",
"retryJob": "Reintentar Entrega",
"cancelJob": "Cancelar Trabajo",
"freezeDomain": "Congelar Destino"
"common": {
"actions": "Acciones",
"add": "Añadir",
"adminPortal": "Administración",
"appName": "LambdaMail",
"back": "Volver",
"cancel": "Cancelar",
"confirm": "Confirmar",
"continue": "Continuar",
"copied": "Copiado",
"copy": "Copiar",
"delete": "Eliminar",
"loading": "Cargando...",
"logout": "Cerrar sesión",
"never": "Nunca",
"none": "Ninguno",
"refresh": "Actualizar",
"retry": "Reintentar",
"save": "Guardar",
"search": "Buscar",
"status": "Estado",
"unavailable": "No disponible",
"userPortal": "Webmail"
},
"errors": {
"unauthorized": "Sesión expirada o no autorizada",
"forbidden": "Acceso prohibido para esta superficie de cuenta",
"serverError": "Ocurrió un error interno en el servidor"
"forbidden": "No tiene acceso a esto",
"loadFailed": "No se pudieron cargar los datos",
"serverError": "Algo salió mal en el servidor",
"unauthorized": "Inicie sesión de nuevo"
},
"mail": {
"addFiles": "Añadir archivos...",
"allMessages": "Todas",
"archive": "Archivo",
"attachments": "Adjuntos ({count})",
"attachmentsFilter": "Con adjuntos",
"attachmentsUnsupported": "Los adjuntos se listan solo por nombre; la subida de archivos aún no está implementada.",
"backToList": "Volver a la lista de mensajes",
"bold": "Negrita",
"bulletList": "Lista con viñetas",
"compose": "Redactar",
"discard": "Descartar",
"draftSaved": "Borrador guardado automáticamente",
"drafts": "Borradores",
"forward": "Reenviar",
"hideCcBcc": "- Ocultar Cc/Cco",
"inbox": "Bandeja de entrada",
"insertLink": "Insertar enlace",
"insertUrl": "Introduzca la URL:",
"italic": "Cursiva",
"junk": "Spam",
"loadImages": "Cargar imágenes",
"noMessages": "Sin mensajes",
"numberedList": "Lista numerada",
"reply": "Responder",
"sendMessage": "Enviar mensaje",
"sending": "Enviando...",
"sent": "Enviados",
"showCcBcc": "+ Añadir Cc/Cco",
"strikethrough": "Tachado",
"trash": "Papelera",
"underline": "Subrayado",
"undoSend": "Enviando en {seconds}s",
"undoSendAction": "Deshacer",
"unreadCount": "{count} sin leer",
"unreadFilter": "Sin leer"
},
"settings": {
"actionDiscard": "Descartar",
"actionFlag": "Marcar mensaje",
"actionMove": "Mover al Archivo",
"addRule": "Añadir regla",
"appPasswordPlaceholder": "Thunderbird / Outlook Mobile",
"appPasswords": "Contraseñas de aplicación",
"autoReplySaveFailed": "No se pudo guardar la respuesta automática",
"enableMfa": "Activar verificación en dos pasos",
"fieldFrom": "De",
"fieldHeader": "Cabecera",
"fieldSubject": "Asunto",
"generateAppPassword": "Generar",
"langEn": "English",
"langEs": "Español",
"langPtBR": "Português (Brasil)",
"language": "Idioma",
"matchContains": "contiene",
"matchEquals": "es exactamente",
"matchRegex": "coincide con regex",
"mfaDisabled": "Desactivada",
"mfaEnabled": "Activada",
"mfaStatus": "Estado de la verificación en dos pasos",
"recoveryCodesTitle": "Códigos de recuperación",
"ruleIf": "SI",
"ruleThen": "ENTONCES",
"saveAutoReply": "Guardar respuesta automática",
"saveRecoveryCodes": "Guárdelos en un lugar seguro. Cada uno funciona una sola vez y solo se muestran ahora.",
"security": "Seguridad",
"sessions": "Sesiones",
"settingsSaved": "Configuración guardada.",
"sieveIntro": "Reglas que organizan el correo entrante automáticamente.",
"sieveTitle": "Filtros (Sieve)",
"signOut": "Cerrar sesión",
"signatureIntro": "Se añade automáticamente a los mensajes que redacta.",
"signaturePlaceholder": "Saludos cordiales,\nSu nombre\nSu cargo",
"signatureSaveFailed": "No se pudo guardar la firma",
"signatureSaved": "Firma guardada.",
"signatureTitle": "Firma de correo",
"sixDigitCode": "Código de seis dígitos",
"subtitle": "Verificación en dos pasos, filtros, respuesta automática y su firma.",
"title": "Configuración",
"twoFactorIntro": "Proteja su cuenta con Google Authenticator, Aegis, Authy o 1Password.",
"vacationBodyLabel": "Mensaje de la respuesta",
"vacationDefaultBody": "Gracias por su mensaje. Estoy ausente en este momento y responderé a mi regreso.",
"vacationDefaultSubject": "Fuera de la oficina",
"vacationIntro": "Responde automáticamente al correo entrante mientras esté ausente.",
"vacationSubjectLabel": "Asunto de la respuesta",
"vacationTitle": "Respuesta automática de ausencia",
"valuePlaceholder": "Valor a coincidir..."
},
"ui": {
"accountStatus": "Estado de la cuenta",
"actions": "Acciones",
"active": "ACTIVA",
"activeSessions": "Sesiones activas del webmail",
"actor": "Autor / cuenta",
"actualRecord": "Registro DNS actual (Cloudflare)",
"allChecksPassed": "TODAS LAS COMPROBACIONES PASARON",
"appPasswordGenerated": "Contrasena de aplicacion generada:",
"appPasswordsSection": "Contrasenas de aplicacion (clientes IMAP / SMTP)",
"active": "Activo",
"activeSessions": "Sesiones activas",
"actor": "Autor",
"actualRecord": "Valor actual",
"allChecksPassed": "Todas las verificaciones pasaron",
"appPasswordGenerated": "Contraseña de aplicación generada",
"appPasswordsSection": "Contraseñas de aplicación",
"attempts": "Intentos",
"bounceRate": "Tasa de rebote",
"changePassword": "Cambiar contraseña",
"clientIp": "IP del cliente",
"copyPasswordNow": "Copie esta contrasena ahora. No se mostrara de nuevo.",
"coreInfra": "Estado de la infraestructura",
"currentSession": "Sesion actual de este navegador",
"daneVerified": "DANE / MTA-STS verificado",
"copyPasswordNow": "Cópiela ahora. No se mostrará de nuevo.",
"coreInfra": "Servicios principales",
"currentPassword": "Contraseña actual",
"currentSession": "Este dispositivo",
"daneVerified": "DANE verificado",
"destination": "Destino",
"diskUsed": "Uso de disco",
"dkimResult": "Resultado DKIM",
"dkimAlignment": "Alineacion de la firma DKIM",
"dmarcEnforcement": "Aplicacion de la politica DMARC",
"domainVerification": "Estado de la verificacion del dominio",
"emailAddress": "Direccion de correo",
"eventAction": "Accion registrada",
"expectedValue": "Valor esperado por la especificacion",
"healthy": "SALUDABLE",
"imapEngine": "Servidor IMAP (143/993)",
"inboundVolume": "Volumen de entrada (24h)",
"jobId": "ID del trabajo",
"lastError": "Ultimo error",
"liveMetrics": "Metricas operativas del nodo de correo.",
"localDisk": "Almacenamiento en disco local",
"preflightTitle": "Diagnostico de preflight del servidor",
"messageBody": "Cuerpo del mensaje",
"messageVolume": "Volumen de mensajes",
"noAppPasswords": "Aun no se generaron contrasenas de aplicacion.",
"online": "EN LINEA",
"outboundDelivered": "Entregados en salida (24h)",
"queueDepth": "Profundidad de la cola",
"postgresRunner": "Ejecutor de tareas Postgres activo",
"provisionMailbox": "Crear nuevo buzon",
"diskUsed": "Almacenamiento usado",
"dkimAlignment": "Alineación DKIM",
"dkimResult": "DKIM",
"dmarcEnforcement": "Política DMARC",
"domainVerification": "Verificación de dominio",
"domainsVerified": "Dominios verificados",
"emailAddress": "Dirección de correo",
"eventAction": "Acción",
"expectedValue": "Valor esperado",
"healthy": "Correcto",
"imapEngine": "Servicio IMAP",
"inboundVolume": "Recibidas (24h)",
"jobId": "Trabajo",
"lastError": "Último error",
"liveMetrics": "Métricas en vivo",
"localDisk": "Disco local",
"mailboxesActive": "Buzones activos",
"messageBody": "Mensaje",
"messageVolume": "Mensajes",
"newPassword": "Nueva contraseña",
"noAppPasswords": "Aún no hay contraseñas de aplicación.",
"noData": "Aún sin datos",
"online": "En línea",
"outboundDelivered": "Enviadas (24h)",
"passwordChanged": "Contraseña cambiada.",
"postgresRunner": "Cola basada en Postgres",
"preflightTitle": "Preparación",
"provisionMailbox": "Crear buzón",
"queueDepth": "Tamaño de la cola",
"recipient": "Destinatario",
"recordName": "Nombre del registro",
"reportingOrg": "Organizacion que informo",
"scanners": "Rspamd (antispam) y ClamAV",
"recordName": "Registro",
"reportingOrg": "Organización informante",
"scanners": "Análisis de spam y virus",
"sender": "Remitente",
"smtpListener": "Servidor SMTP (25/587/465)",
"signOutOthers": "Cerrar sesión en otros dispositivos",
"smtpListener": "Servicio SMTP",
"sourceIp": "IP de origen",
"spfRatio": "Tasa de alineacion SPF",
"spfResult": "Resultado SPF",
"spfRatio": "Tasa de aprobación SPF",
"spfResult": "SPF",
"storageQuota": "Cuota de almacenamiento",
"subject": "Asunto",
"targetObject": "Objeto destino",
"timestamp": "Fecha y hora",
"toRecipients": "Para (destinatarios)",
"totalEvaluated": "Total de mensajes evaluados",
"twoFactorSection": "Autenticacion en dos pasos (TOTP RFC 6238)",
"watching": "OBSERVANDO",
"passwordChanged": "Contrasena cambiada",
"signOutOthers": "Cerrar las otras sesiones",
"changePassword": "Cambiar contrasena",
"currentPassword": "Contrasena actual",
"newPassword": "Nueva contrasena (min. 12 caracteres)",
"toggleMenu": "Abrir o cerrar el menu"
"targetObject": "Objetivo",
"timestamp": "Hora",
"toRecipients": "Para",
"toggleMenu": "Alternar menú",
"totalEvaluated": "Mensajes evaluados",
"twoFactorSection": "Verificación en dos pasos",
"watching": "Vigilando"
}
}
+268 -130
View File
@@ -1,148 +1,286 @@
{
"common": {
"appName": "LambdaMail",
"userPortal": "Webmail",
"adminPortal": "Console de Gestão",
"loading": "Carregando...",
"save": "Salvar Alterações",
"cancel": "Cancelar",
"delete": "Excluir",
"confirm": "Confirmar",
"search": "Buscar",
"status": "Status",
"actions": "Ações",
"refresh": "Atualizar",
"logout": "Sair"
"admin": {
"addAlias": "Adicionar apelido",
"aliasesTitle": "Apelidos",
"auditLog": "Trilha de auditoria",
"backToWebmail": "Voltar ao webmail",
"cancelJob": "Cancelar",
"certificateState": "Certificado",
"checksPassed": "{passed} de {total} aprovadas",
"createAccount": "Criar conta",
"createAlias": "Criar um apelido de roteamento",
"csvPreview": "Pré-visualizar",
"dashboardSubtitle": "Números ao vivo lidos do banco de dados.",
"dashboardTitle": "Visão geral",
"dkimAlgorithm": "Tipo de chave",
"dkimOverlap": "As duas chaves assinam as mensagens enviadas por {days} dias, para nada falhar enquanto o DNS propaga.",
"dkimPublishRecord": "Publique este registro no DNS:",
"dkimRotate": "Gerar uma nova chave",
"dkimSelector": "Seletor",
"dkimTitle": "Rotação de chave DKIM",
"dmarcSubtitle": "Detalhamento dos relatórios XML agregados que foram processados.",
"dmarcTitle": "Relatórios DMARC",
"dnsRecordsFor": "Registros DNS de {domain}",
"dnsStatusDrift": "Divergente",
"dnsStatusPartial": "Parcial",
"dnsStatusVerified": "Verificado",
"domainName": "Nome do domínio",
"domainsTitle": "Domínios",
"expiresInDays": "Expira em {days} dias",
"freezeDomain": "Congelar domínio",
"greylistScore": "Pontuação de greylist",
"headerScore": "Pontuação de marcação de cabeçalho",
"jobCancelled": "O trabalho {id} foi cancelado.",
"jobRetried": "O trabalho {id} foi recolocado na fila para nova tentativa.",
"lastChecked": "Última verificação: {when}",
"lastReload": "Última recarga",
"mailHost": "Host de e-mail",
"mailboxCount": "{count} caixas de e-mail",
"mailboxesSubtitle": "Contas, apelidos, importação CSV e a política de segundo fator.",
"mailboxesTitle": "Caixas de e-mail",
"mfaAdmins": "Obrigatório para administradores",
"mfaEveryone": "Obrigatório para todos",
"mfaOptional": "Opcional",
"mfaPolicyIntro": "Escolha com que rigor este domínio exige um segundo fator.",
"mfaPolicyTitle": "Exigência de segundo fator",
"noCertificate": "Nenhum certificado carregado para este host.",
"noChecks": "Nenhuma verificação relatada.",
"noDomains": "Nenhum domínio foi cadastrado ainda.",
"onboardIntro": "Cria o domínio e os apelidos padrão da RFC 2142, apontados para o seu endereço.",
"onboardTitle": "Adicionar um domínio",
"openAdmin": "Console de administração",
"preflightTitle": "Verificações de prontidão",
"queueEmpty": "A fila de saída está vazia.",
"queueSubtitle": "Inspecione a fila de saída, tente reenviar um trabalho ou cancele um.",
"queueTitle": "Fila de saída",
"readinessIntro": "Verificações que o servidor relata sobre si mesmo antes de transportar mensagens em produção.",
"reconcileDns": "Reconciliar DNS",
"reconcileNotImplemented": "A verificação de registros DNS individuais ainda não foi implementada: isto registra a solicitação e relê o status armazenado, não consulta um resolvedor.",
"rejectScore": "Pontuação de rejeição",
"retryJob": "Tentar novamente",
"rspamdIntro": "Pontuações que acionam greylisting, marcação de cabeçalho e rejeição.",
"rspamdSaved": "Limites salvos.",
"saveThresholds": "Salvar limites",
"securitySubtitle": "Verificações de prontidão, estado do TLS, limites de spam e a trilha de auditoria.",
"securityTitle": "Segurança",
"tabAudit": "Trilha de auditoria",
"tabReadiness": "Prontidão",
"tabRspamd": "Limites de spam",
"tabTls": "TLS",
"tlsMode": "Modo TLS",
"tlsTitle": "Certificado e transporte",
"traceNoResults": "Nenhum rastro encontrado para esse ID de fila.",
"tracePlaceholder": "ID da fila",
"traceTitle": "Rastrear uma mensagem",
"unknownSni": "Requisições SNI desconhecidas",
"watcherHealthy": "Monitor de certificado"
},
"auth": {
"userLoginTitle": "Entrar no Webmail",
"adminLoginTitle": "Entrar no Console Admin",
"emailLabel": "Endereço de E-mail",
"passwordLabel": "Senha",
"signInButton": "Entrar",
"totpCodeLabel": "Código do Autenticador (6 dígitos)",
"verifyCodeButton": "Verificar Código",
"adminLoginTitle": "Console de administração",
"adminStepUpNote": "O console de administração pede o segundo fator novamente, mesmo você já estando conectado ao webmail.",
"authFailed": "Falha na autenticação",
"cantScanQr": "Não consegue escanear? Digite esta chave manualmente:",
"emailLabel": "Endereço de e-mail",
"enrolmentFailed": "Não foi possível iniciar a configuração do segundo fator",
"enrolmentIntro": "O console de administração exige um segundo fator. Configure um agora para continuar.",
"genericError": "Algo deu errado",
"invalidCredentials": "E-mail ou senha inválidos",
"mfaRequired": "Código de autenticação em dois fatores obrigatório"
"mfaRequired": "Digite o código de seis dígitos do seu aplicativo autenticador.",
"passwordLabel": "Senha",
"qrCodeAlt": "Código QR para configurar a verificação em duas etapas",
"scanQr": "Escaneie este código com o Google Authenticator, Aegis, Authy ou 1Password.",
"signInButton": "Entrar",
"signOutOfAdmin": "Sair da administração",
"totpCodeLabel": "Código de autenticação",
"userLoginTitle": "Entre na sua caixa de e-mail",
"verificationFailed": "Falha na verificação",
"verifyCodeButton": "Verificar código"
},
"mail": {
"inbox": "Caixa de Entrada",
"sent": "Enviados",
"drafts": "Rascunhos",
"trash": "Lixeira",
"junk": "Spam",
"archive": "Arquivo",
"compose": "Escrever E-mail",
"noMessages": "Nenhuma mensagem nesta pasta",
"unreadCount": "{count, plural, =0 {Nenhuma mensagem não lida} one {# mensagem não lida} other {# mensagens não lidas}}",
"loadImages": "Carregar Imagens Remotas",
"reply": "Responder",
"forward": "Encaminhar",
"undoSend": "Desfazer Envio ({seconds}s restantes)"
},
"settings": {
"title": "Configurações da Conta",
"security": "Segurança e 2FA",
"appPasswords": "Senhas de Aplicativo",
"sessions": "Sessões Ativas",
"mfaStatus": "Status da Autenticação em Dois Fatores",
"mfaEnabled": "2FA está Ativo",
"mfaDisabled": "2FA está Desativado",
"enableMfa": "Ativar 2FA",
"generateAppPassword": "Gerar Senha de Aplicativo",
"recoveryCodesTitle": "Códigos de Recuperação",
"saveRecoveryCodes": "Guarde estes códigos de recuperação em local seguro. Eles não serão exibidos novamente.",
"language": "Idioma",
"signOut": "Sair",
"langEn": "Inglês",
"langPtBR": "Português (Brasil)",
"langEs": "Espanhol"
},
"admin": {
"dashboardTitle": "Painel do Sistema",
"domainsTitle": "Domínios e DNS (13 Registros)",
"mailboxesTitle": "Caixas Postais e Contas",
"aliasesTitle": "Aliases e Roteamento",
"queueTitle": "Fila de Entrega de Saída",
"dmarcTitle": "Análise DMARC",
"securityTitle": "Segurança e Log de Auditoria",
"preflightTitle": "Diagnóstico Preflight",
"reconcileDns": "Reconciliar Registros DNS",
"dnsStatusVerified": "VERIFICADO",
"dnsStatusDrift": "DESVIO DETECTADO",
"dnsStatusPartial": "PARCIAL",
"retryJob": "Tentar Entrega Novamente",
"cancelJob": "Cancelar Trabalho",
"freezeDomain": "Congelar Destino"
"common": {
"actions": "Ações",
"add": "Adicionar",
"adminPortal": "Administração",
"appName": "LambdaMail",
"back": "Voltar",
"cancel": "Cancelar",
"confirm": "Confirmar",
"continue": "Continuar",
"copied": "Copiado",
"copy": "Copiar",
"delete": "Excluir",
"loading": "Carregando...",
"logout": "Sair",
"never": "Nunca",
"none": "Nenhum",
"refresh": "Atualizar",
"retry": "Tentar novamente",
"save": "Salvar",
"search": "Buscar",
"status": "Status",
"unavailable": "Indisponível",
"userPortal": "Webmail"
},
"errors": {
"unauthorized": "Sessão expirada ou não autorizada",
"forbidden": "Acesso proibido para esta superfície de conta",
"serverError": "Ocorreu um erro interno no servidor"
"forbidden": "Você não tem acesso a isto",
"loadFailed": "Não foi possível carregar os dados",
"serverError": "Algo deu errado no servidor",
"unauthorized": "Entre novamente"
},
"mail": {
"addFiles": "Adicionar arquivos...",
"allMessages": "Todas",
"archive": "Arquivo",
"attachments": "Anexos ({count})",
"attachmentsFilter": "Com anexos",
"attachmentsUnsupported": "Anexos são listados apenas pelo nome; o envio de arquivos ainda não está implementado.",
"backToList": "Voltar para a lista de mensagens",
"bold": "Negrito",
"bulletList": "Lista com marcadores",
"compose": "Escrever",
"discard": "Descartar",
"draftSaved": "Rascunho salvo automaticamente",
"drafts": "Rascunhos",
"forward": "Encaminhar",
"hideCcBcc": "- Ocultar Cc/Cco",
"inbox": "Caixa de entrada",
"insertLink": "Inserir link",
"insertUrl": "Digite a URL:",
"italic": "Itálico",
"junk": "Spam",
"loadImages": "Carregar imagens",
"noMessages": "Nenhuma mensagem",
"numberedList": "Lista numerada",
"reply": "Responder",
"sendMessage": "Enviar mensagem",
"sending": "Enviando...",
"sent": "Enviados",
"showCcBcc": "+ Adicionar Cc/Cco",
"strikethrough": "Tachado",
"trash": "Lixeira",
"underline": "Sublinhado",
"undoSend": "Enviando em {seconds}s",
"undoSendAction": "Desfazer",
"unreadCount": "{count} não lidas",
"unreadFilter": "Não lidas"
},
"settings": {
"actionDiscard": "Descartar",
"actionFlag": "Marcar mensagem",
"actionMove": "Mover para o Arquivo",
"addRule": "Adicionar regra",
"appPasswordPlaceholder": "Thunderbird / Outlook Mobile",
"appPasswords": "Senhas de aplicativo",
"autoReplySaveFailed": "Não foi possível salvar a resposta automática",
"enableMfa": "Ativar verificação em duas etapas",
"fieldFrom": "De",
"fieldHeader": "Cabeçalho",
"fieldSubject": "Assunto",
"generateAppPassword": "Gerar",
"langEn": "English",
"langEs": "Español",
"langPtBR": "Português (Brasil)",
"language": "Idioma",
"matchContains": "contém",
"matchEquals": "é exatamente",
"matchRegex": "corresponde à regex",
"mfaDisabled": "Desativada",
"mfaEnabled": "Ativada",
"mfaStatus": "Status da verificação em duas etapas",
"recoveryCodesTitle": "Códigos de recuperação",
"ruleIf": "SE",
"ruleThen": "ENTÃO",
"saveAutoReply": "Salvar resposta automática",
"saveRecoveryCodes": "Guarde-os em local seguro. Cada um funciona uma única vez e eles só aparecem agora.",
"security": "Segurança",
"sessions": "Sessões",
"settingsSaved": "Configurações salvas.",
"sieveIntro": "Regras que organizam as mensagens recebidas automaticamente.",
"sieveTitle": "Filtros (Sieve)",
"signOut": "Sair",
"signatureIntro": "Anexada automaticamente às mensagens que você escreve.",
"signaturePlaceholder": "Atenciosamente,\nSeu nome\nSeu cargo",
"signatureSaveFailed": "Não foi possível salvar a assinatura",
"signatureSaved": "Assinatura salva.",
"signatureTitle": "Assinatura de e-mail",
"sixDigitCode": "Código de seis dígitos",
"subtitle": "Verificação em duas etapas, filtros, resposta automática e sua assinatura.",
"title": "Configurações",
"twoFactorIntro": "Proteja sua conta com o Google Authenticator, Aegis, Authy ou 1Password.",
"vacationBodyLabel": "Mensagem da resposta",
"vacationDefaultBody": "Obrigado pela sua mensagem. Estou ausente no momento e responderei assim que retornar.",
"vacationDefaultSubject": "Fora do escritório",
"vacationIntro": "Responde automaticamente às mensagens recebidas enquanto você estiver ausente.",
"vacationSubjectLabel": "Assunto da resposta",
"vacationTitle": "Resposta automática de ausência",
"valuePlaceholder": "Valor a corresponder..."
},
"ui": {
"accountStatus": "Situacao da conta",
"actions": "Acoes",
"active": "ATIVA",
"activeSessions": "Sessoes ativas do webmail",
"actor": "Autor / conta",
"actualRecord": "Registro DNS atual (Cloudflare)",
"allChecksPassed": "TODAS AS CHECAGENS PASSARAM",
"appPasswordGenerated": "Senha de aplicativo gerada:",
"appPasswordsSection": "Senhas de aplicativo (clientes IMAP / SMTP)",
"accountStatus": "Status da conta",
"actions": "Ações",
"active": "Ativo",
"activeSessions": "Sessões ativas",
"actor": "Autor",
"actualRecord": "Valor atual",
"allChecksPassed": "Todas as verificações passaram",
"appPasswordGenerated": "Senha de aplicativo gerada",
"appPasswordsSection": "Senhas de aplicativo",
"attempts": "Tentativas",
"bounceRate": "Taxa de devolução",
"changePassword": "Alterar senha",
"clientIp": "IP do cliente",
"copyPasswordNow": "Copie esta senha agora. Ela nao sera exibida novamente.",
"coreInfra": "Estado da infraestrutura",
"currentSession": "Sessao atual deste navegador",
"daneVerified": "DANE / MTA-STS verificado",
"copyPasswordNow": "Copie agora. Ela não será exibida novamente.",
"coreInfra": "Serviços principais",
"currentPassword": "Senha atual",
"currentSession": "Este dispositivo",
"daneVerified": "DANE verificado",
"destination": "Destino",
"diskUsed": "Uso de disco",
"dkimResult": "Resultado DKIM",
"dkimAlignment": "Alinhamento da assinatura DKIM",
"dmarcEnforcement": "Aplicacao da politica DMARC",
"domainVerification": "Estado da verificacao do dominio",
"emailAddress": "Endereco de e-mail",
"eventAction": "Acao registrada",
"expectedValue": "Valor esperado pela especificacao",
"healthy": "SAUDAVEL",
"imapEngine": "Servidor IMAP (143/993)",
"inboundVolume": "Volume de entrada (24h)",
"jobId": "ID do trabalho",
"lastError": "Ultimo erro",
"liveMetrics": "Metricas operacionais do no de e-mail.",
"localDisk": "Armazenamento em disco local",
"preflightTitle": "Diagnostico de preflight do servidor",
"messageBody": "Corpo da mensagem",
"messageVolume": "Volume de mensagens",
"noAppPasswords": "Nenhuma senha de aplicativo gerada ainda.",
"online": "ONLINE",
"outboundDelivered": "Entregues na saida (24h)",
"queueDepth": "Profundidade da fila",
"postgresRunner": "Executor de tarefas Postgres ativo",
"provisionMailbox": "Criar nova caixa postal",
"recipient": "Destinatario",
"recordName": "Nome do registro",
"reportingOrg": "Organizacao que reportou",
"scanners": "Rspamd (antispam) e ClamAV",
"diskUsed": "Armazenamento usado",
"dkimAlignment": "Alinhamento DKIM",
"dkimResult": "DKIM",
"dmarcEnforcement": "Política DMARC",
"domainVerification": "Verificação de domínio",
"domainsVerified": "Domínios verificados",
"emailAddress": "Endereço de e-mail",
"eventAction": "Ação",
"expectedValue": "Valor esperado",
"healthy": "Saudável",
"imapEngine": "Serviço IMAP",
"inboundVolume": "Recebidas (24h)",
"jobId": "Trabalho",
"lastError": "Último erro",
"liveMetrics": "Métricas ao vivo",
"localDisk": "Disco local",
"mailboxesActive": "Caixas ativas",
"messageBody": "Mensagem",
"messageVolume": "Mensagens",
"newPassword": "Nova senha",
"noAppPasswords": "Nenhuma senha de aplicativo ainda.",
"noData": "Ainda sem dados",
"online": "Online",
"outboundDelivered": "Enviadas (24h)",
"passwordChanged": "Senha alterada.",
"postgresRunner": "Fila baseada em Postgres",
"preflightTitle": "Prontidão",
"provisionMailbox": "Criar caixa de e-mail",
"queueDepth": "Tamanho da fila",
"recipient": "Destinatário",
"recordName": "Registro",
"reportingOrg": "Organização que reportou",
"scanners": "Análise de spam e vírus",
"sender": "Remetente",
"smtpListener": "Servidor SMTP (25/587/465)",
"signOutOthers": "Sair dos outros dispositivos",
"smtpListener": "Serviço SMTP",
"sourceIp": "IP de origem",
"spfRatio": "Taxa de alinhamento SPF",
"spfResult": "Resultado SPF",
"spfRatio": "Taxa de aprovação SPF",
"spfResult": "SPF",
"storageQuota": "Cota de armazenamento",
"subject": "Assunto",
"targetObject": "Objeto alvo",
"timestamp": "Data e hora",
"toRecipients": "Para (destinatarios)",
"totalEvaluated": "Total de mensagens avaliadas",
"twoFactorSection": "Autenticacao em dois fatores (TOTP RFC 6238)",
"watching": "OBSERVANDO",
"passwordChanged": "Senha alterada",
"signOutOthers": "Encerrar as outras sessoes",
"changePassword": "Alterar senha",
"currentPassword": "Senha atual",
"newPassword": "Nova senha (min. 12 caracteres)",
"toggleMenu": "Abrir ou fechar o menu"
"targetObject": "Alvo",
"timestamp": "Horário",
"toRecipients": "Para",
"toggleMenu": "Alternar menu",
"totalEvaluated": "Mensagens avaliadas",
"twoFactorSection": "Verificação em duas etapas",
"watching": "Monitorando"
}
}