Files
LambdaMail/services/webmail/messages/en.json
T
Lucas RayanandClaude Opus 5 f179cb1f27 fix(webmail): acertos de interface e mover mensagens entre pastas
Cc/Cco. Os dois rótulos do compositor eram o último texto em inglês
que restava, e "Bcc" tem nome próprio em português - quem não conhece
a abreviatura inglesa não adivinha o que o campo faz.

Larguras. A barra lateral tinha 244px fixos e nela não cabia "Console
de administração", que transbordava no telemóvel e no computador: o
botão passa a mostrar um rótulo curto e guarda o nome completo no
tooltip. O endereço da conta usava break-words e partia-se a meio do
domínio, deixando um "br" sozinho na linha de baixo; passa a truncar
com o valor inteiro no tooltip.

A lista tinha 404px fixos e o leitor 760px centrados, portanto num ecrã
largo os assuntos eram espremidos numa coluna estreita enquanto o
leitor ficava entre duas margens enormes. Ambos crescem agora com a
janela. O assunto ganha overflow-wrap: os Message-ID dos relatórios do
Google são uma única "palavra" sem espaços, mais longa que a coluna, e
sem sítio onde quebrar saíam da linha.

Imagens remotas. A escolha era reposta sempre que uma mensagem era
aberta, por isso a mesma newsletter tinha de ser desbloqueada em cada
leitura. A decisão passa a ser lembrada por remetente, com um segundo
botão para a retirar. Bloqueado continua a ser o que acontece por
omissão: uma imagem remota é um aviso de leitura que o remetente não
pediu licença para receber.

Assinatura. Era escrita num textarea - texto simples com quebras de
linha reais - e injetada no compositor com innerHTML, onde uma quebra
de linha é espaço em branco: todas desapareciam. Passa a ser um campo
rico, com negrito, itálico, links e imagens, guardado como HTML e
sanitizado nos dois sentidos, já que este valor é injetado como
marcação na origem do webmail. Assinaturas guardadas pelo campo antigo
continuam a funcionar: as suas quebras de linha são convertidas.

Mover entre pastas. Faltava a única ação corrente que o leitor não
tinha: arquivar uma mensagem para fora da caixa de entrada era
impossível. Enviados e Rascunhos nunca são destino - descrevem como a
mensagem veio a existir, não onde o leitor a arrumou - mas sair deles é
permitido. Pastas criadas pelo utilizador, que não têm papel
special-use, são destino como qualquer outra.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 13:18:08 -03:00

342 lines
13 KiB
JSON

{
"admin": {
"addAlias": "Add alias",
"aliasTarget": "Destination address",
"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",
"csvImportFailed": "The CSV import failed",
"csvImported": "Imported {count} mailboxes.",
"csvIntro": "Paste CSV to provision several accounts with their RFC 6154 folders. Columns: email, role, quota_mb.",
"csvPreview": "Preview",
"csvRun": "Run import",
"csvTitle": "Bulk mailbox import (CSV)",
"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",
"lockAccount": "Lock",
"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.",
"notPublished": "Not published",
"onboardIntro": "Creates the domain and its standard RFC 2142 aliases, pointed at your address.",
"onboardTitle": "Add a domain",
"openAdmin": "Admin console",
"preflightTitle": "Readiness checks",
"presentProxied": "Present (proxied)",
"queueEmpty": "The outbound queue is empty.",
"queueSubtitle": "Inspect the outbound queue, retry a job, or cancel one.",
"queueTitle": "Outbound queue",
"quotaMb": "Quota (MB)",
"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",
"tabAccounts": "Accounts",
"tabAliases": "Aliases",
"tabAudit": "Audit trail",
"tabCsv": "Bulk import",
"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",
"traceResultFor": "Trace for {id}",
"traceStep": "Step {n}",
"traceTitle": "Trace a message",
"unknownSni": "Unknown SNI requests",
"unlockAccount": "Unlock",
"verifyIntro": "Resolves every expected record against public resolvers and reports each one.",
"watcherHealthy": "Certificate watcher",
"openAdminShort": "Admin"
},
"auth": {
"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": "Enter the six-digit code from your authenticator app.",
"orRecoveryCode": "Lost your phone? A recovery code works here too.",
"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",
"stepUpIntro": "You are already signed in, so only your second factor is needed. Your password is not asked for again.",
"stepUpSignedInAs": "Signed in as {email}",
"stepUpTitle": "Open the admin console",
"totpCodeLabel": "Authentication code",
"userLoginTitle": "Sign in to your mailbox",
"verificationFailed": "Verification failed",
"verifyCodeButton": "Verify code"
},
"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": {
"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",
"draftSaveFailed": "Draft could not be saved",
"draftSaved": "Draft saved automatically",
"draftSaving": "Saving draft...",
"drafts": "Drafts",
"deleteForever": "Delete permanently",
"continueDraft": "Continue writing",
"emptyBody": "This message has no text body.",
"forward": "Forward",
"imagesEnabled": "Images loaded",
"hideCcBcc": "- Hide Cc/Bcc",
"inbox": "Inbox",
"insertLink": "Insert link",
"insertUrl": "Enter the URL:",
"italic": "Italic",
"junk": "Spam",
"reports": "Reports",
"loadImages": "Load images",
"markRead": "Mark as read",
"markUnread": "Mark as unread",
"messagesInFolder": "{count} messages",
"noMatches": "Nothing matched that search",
"noMessages": "No messages",
"noSubject": "(No subject)",
"numberedList": "Numbered list",
"remoteContentBlocked": "Remote images were blocked so this message cannot track you.",
"reply": "Reply",
"searchMatches": "{count} found",
"searchPlaceholder": "Search (from:, subject:)...",
"selectAMessage": "Select a message to read it",
"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",
"ccLabel": "Cc",
"bccLabel": "Bcc",
"hideImages": "Hide images",
"alwaysFromSender": "Always from this sender",
"forgetSender": "Stop trusting sender",
"moveTo": "Move to"
},
"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",
"startOverMfa": "Lost the entry? Start over with a new key",
"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": {
"accountLocked": "Locked",
"accountStatus": "Account status",
"actions": "Actions",
"active": "Active",
"activeSessions": "Active sessions",
"actor": "Actor",
"actualRecord": "Actual value",
"allChecksPassed": "All checks passed",
"appPasswordGenerated": "App password generated",
"appPasswordsSection": "App passwords",
"attempts": "Attempts",
"bounceRate": "Bounce rate",
"ccRecipients": "Cc",
"changePassword": "Change password",
"clientIp": "Client IP",
"copyPasswordNow": "Copy it now. It is not shown again.",
"coreInfra": "Core services",
"currentPassword": "Current password",
"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",
"mfaActive": "TOTP active",
"mfaNone": "No second factor",
"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",
"role": "Role",
"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",
"bold": "Bold",
"italic": "Italic",
"underline": "Underline",
"insertLink": "Link",
"insertImage": "Image"
}
}