Skip to content

Instantly share code, notes, and snippets.

@flodolo
Created August 7, 2026 08:03
Show Gist options
  • Select an option

  • Save flodolo/e5bfce5b28df5d57fc5f595c3092739a to your computer and use it in GitHub Desktop.

Select an option

Save flodolo/e5bfce5b28df5d57fc5f595c3092739a to your computer and use it in GitHub Desktop.
pt-BR Firefox localization automated QA

Firefox pt-BR localization review

  • Date: 2026-08-07
  • Locale tree: ~/mozilla/git/firefox-l10n/pt-BR — commit 223ff88505af5dc583cb70b23bfb9e8abfe79447
  • en-US reference: ~/mozilla/git/firefox-quarantine
  • Scope: 241 .ftl + 113 .properties files (Firefox desktop + shared dom/toolkit/devtools/netwerk/security strings)
  • Method: automated health checks (moz.l10n parser, hunspell with the repo's own pt-BR dictionary, cross-file consistency grouping) followed by per-directory qualitative review against en-US, using the developer comments as context. Every finding below was verified against the en-US source.

All findings are keyed by string ID, never by line number.


1. Automated health check

Check Result
Fluent syntax (l10n-lint) clean — 0 parse errors
Variables / placeholders vs en-US clean — 0 mismatches
Plural-selector structure 4 flagged, all non-issues (see §2)
Markup tag sets vs en-US 1 real defect (about-glean-adhoc-explanation*), 1 non-issue
Access keys not present in their label 5 flagged, 3 real (see §3.A)
Invisible/control characters 1 real defect (perftools-menu-more-actions-copy-for-startup)
Cross-file consistency (same en-US string → different pt-BR) 173 groups; most are legitimate context differences, the real ones are enumerated in §3.J

Typographic conventions detected in the tree (deviations are flagged, the conventions themselves are not):

Convention Count Notes
Curly double quotes “ ” 247 / 243 the locale's quotation convention
Straight " in message values 0 outside HTML attributes correct
Straight ' as quote marks ~25 strings deviation — enumerated in §3.I
Ellipsis … 358 vs 3 stray ... — enumerated in §3.I
Em dash — 90 vs a handful of hyphens used as separators — §3.I
NBSP 7 deliberate (icon/link grouping), except 1 stray

2. Not the locale's fault / verified non-issues

Do not "fix" these.

Upstream en-US defects mirrored in pt-BR (the source has the same problem):

  • Unbalanced quotes “…“ (opening quote used as closing): about-logging-invalid-output, about-logging-unknown-logging-preset, about-logging-unknown-profiler-preset, about-logging-unknown-option (toolkit/toolkit/about/aboutLogging.ftl); about-telemetry-data-details-current (aboutTelemetry.ftl); import-safari-permissions-string (browser/browser/migration.ftl) — but note this last one has an additional locale-introduced instance, see §3.I.
  • .properties unbalanced quotes: StrictUrlProtocolSetter, CookieInvalidMaxAgeAttribute, CookieRejectedNonRequiresSecureForBeta3, CookieForeignNoPartitionedWarning, CookieForeignNoPartitionedError (netwerk/necko.properties); CSPTrustedTypesPolicyViolation, CSPROTrustedTypesPolicyViolation, CSPTrustedTypesSinkViolation, CSPROTrustedTypesSinkViolation (dom/chrome/security/csp.properties); XFrameOptionsDeny (dom/chrome/security/security.properties); webconsole.group.cookieSameSiteLaxByDefaultEnabled2, …Disabled2 (devtools/client/webconsole.properties).
  • Double space in statusSeparatorBeforeNumber (browser/chrome/browser/downloads/downloads.properties) — identical in en-US.
  • the the in developer comments (textRecognition.ftl, featureCallout.ftl, aboutSupport.ftl, features.ftl) — comment typos in en-US.

Verified correct, flagged only by tooling:

  • popup-warning-exceeded-message, addon-confirm-install-some-unsigned-message, tabbrowser-confirm-close-tabs-title, tabbrowser-ctrl-tab-list-all-tabs.label — en-US has only an *[other] variant because the string is used exclusively for counts > 1; a flat pt-BR translation is functionally equivalent.
  • genai-menu-ask-smart-window (accesskey z) and main-context-menu-inspect (accesskey Q) — inherited from en-US, where they also don't match the label.
  • browser-tab-audio-pip = PICTURE-IN-PICTURE in caps — the dev comment asks for all caps.
  • console-stacktrace-anonymous-function — <anonymous> translated to <anônima>; this is display text, not markup.
  • nsserrors.ftl wrapping English protocol message names in straight '…' — a consistent locale convention across ~40 strings, not a per-string defect (but see §3.I for the .properties counterpart, which is inconsistent).
  • sync-mobile-promo NBSPs — deliberate, keeps icons attached to their links.

3. Findings

A. Functional / markup / access keys

  • firefox-relay-offer-legal-notice-1 — browser/browser/browser.ftl — broken closing tag. Current: …>Aviso de privacidade</label label>. → Suggest: …>Aviso de privacidade</label>.
  • firefox-relay-offer-legal-notice-control — browser/browser/firefoxRelay.ftl — same broken tag: </label label> → </label>
  • firefox-relay-offer-legal-notice — browser/browser/browser.ftl — stray space inside the link text: …Aviso de privacidade </label> → …Aviso de privacidade</label>
  • perftools-menu-more-actions-copy-for-startup — devtools/client/perftools.ftl — contains two U+200B zero-width spaces ("variáveis ​​de ambiente"). Only invisible-character occurrence in the tree; remove them.
  • about-glean-adhoc-explanation, about-glean-adhoc-explanation2 — toolkit/toolkit/about/aboutGlean.ftl — the <i>ad hoc</i> emphasis from en-US is dropped (translated as "mais específicos"). Low impact; restore the italics if the wording is revised.
  • about-glean-about-data-list-item-dictionary — toolkit/toolkit/about/aboutGlean.ftl — missing space renders as "GleanDicionário". Current: <a …>{ -glean-brand-name }Dicionário</a> → Suggest: <a …>Dicionário do { -glean-brand-name }</a>
  • about-logging-log-tutorial — toolkit/toolkit/about/aboutLogging.ftl — trailing space inside the link text: >Log de HTTP </a> → >Log de HTTP</a>
  • protections-vpn-header-content-subscribed — browser/browser/protections.ftl — trailing space inside the link text: >Apple App Store </a> → >Apple App Store</a>
  • tou-existing-user-spotlight-body — browser/browser/termsofuse.ftl — stray > character left in the text: …Aviso de privacidade</a> >.<br><br> → remove the >
  • inactive-css-no-size-containment-fix, inactive-css-no-size-containment-fix-1 — devtools/client/tooltips.ftl — stray space captured inside the CSS-keyword element: <strong>inline-table </strong> → <strong>inline-table</strong>
  • pictureinpicture-playback-rate-value, pictureinpicture-playback-rate-preset — toolkit/toolkit/pictureinpicture/pictureinpicture.ftl — the multiplier sign was moved in front of the number, contradicting the dev comment's examples (1×, 1.25×). Current: × { NUMBER($rate) } → Suggest: { NUMBER($rate) }×
  • newtab-widget-lists-completed-list — browser/browser/newtab/newtab.ftl — the parentheses of the en-US format are dropped, leaving a bare number. Current: Tarefas concluídas { $number } → Suggest: Concluídas ({ $number })
  • Access keys not remapped to their pt-BR labels (3 real cases; en-US's key does match its own label in each): firefoxview-history-context-forget-site (F / "Esquecer este site…"), xpinstall-prompt-install (C / "Avançar para a instalação"), wizard-macos-button-back (B / "Voltar").

B. Meaning reversed or opposite

  • browser-layout-horizontal-tabs2 (.description) — browser/browser/preferences/preferences.ftl — en-US has "Tabs at the top" in both .title and .description; the description says the opposite. Current: Abas embaixo → Suggest: Abas no alto
  • about-networking-networkid-status-known — toolkit/toolkit/about/aboutNetworking.ftl — en-US "Link status is known". Current: Status do link de rede é desconhecido → Suggest: O status do link de rede é conhecido (the "unknown" case is a separate string)
  • sec-error-cert-not-in-name-space — toolkit/toolkit/neterror/nsserrors.ftl — en-US: the CA "is not permitted to issue". Current: A Autoridade de Certificação deste certificado não permite expedir um certificado com este nome. → Suggest: A autoridade certificadora deste certificado não está autorizada a emitir um certificado com este nome.
  • CheckLoadURIError — dom/chrome/security/caps.properties — en-US "may not load or link to" is a prohibition. Current: conteúdo em %S pode não ser carregado ou vinculado a %S. → Suggest: o conteúdo em %S não pode carregar nem criar vínculo para %S.
  • CheckSameOriginError — dom/chrome/security/caps.properties — same modal error. Current: pode não carregar dados de %S. → Suggest: não pode carregar dados de %S.
  • WindowCloseBlockedWarning — dom/chrome/dom/dom.properties — Current: Scripts podem não fechar janelas… → Suggest: Scripts não podem fechar janelas que não foram abertas por script.
  • RequestStorageAccessPermissionsPolicy — dom/chrome/dom/dom.properties — "may not be called" → prohibition: pode não ser chamado → não pode ser chamado
  • pageInfo_BrokenEncryption — security/manager/chrome/pippki/pippki.properties — en-US "Broken Encryption", but the pt-BR value is byte-identical to pageInfo_EncryptionWithBitsAndProtocol, so a broken connection is reported as a normal encrypted one. Suggest: Criptografia comprometida (%1$S, chaves de %2$S bits, %3$S)
  • accessibility-text-label-issue-image — devtools/client/accessibility.ftl — en-US "Content with images must be labeled" flags the containing content. Current: Imagens de conteúdo devem ser rotuladas. → Suggest: Conteúdo com imagens deve ser rotulado.
  • printui-error-invalid-start-overflow — toolkit/toolkit/printing/printUI.ftl — en-US "must be smaller than". Current: deve ser menor ou igual ao número da página final → Suggest: deve ser menor que o número da página final
  • neterror-file-not-found-filename — toolkit/toolkit/neterror/netError.ftl — Current: Verifique se o nome do arquivo tem letras maiúsculas ou outros erros de digitação. (says uppercase letters are the error) → Suggest: Verifique se há erros de maiúsculas/minúsculas ou de digitação no nome do arquivo.
  • windows-10-eos-challenger-callout-title — browser/browser/newtab/asrouter.ftl — en-US "That's the point" = it's deliberate. Current: Esta é a questão. → Suggest: E isso é intencional.
  • newtab-sports-widget-delayed / newtab-sports-widget-postponed — browser/browser/newtab/newtab.ftl — two distinct match statuses both render as Adiado. Suggest: Atrasado for delayed, keep Adiado for postponed. Same collision in newtab-sports-widget-match-aria-label-upcoming-delayed vs -postponed.

C. Mistranslations

browser

  • split-view-menuitem-reverse-tabs (.label) — browser/browser/tabbrowser.ftl — the dev comment states "Reverse" is a verb, "reverse the order". Current: Reverter abas (= revert/undo) → Suggest: Inverter abas (which is what tab-context-reverse-split-view already uses)
  • webrtc-sharing-menu (.label) — browser/browser/webrtcIndicator.ftl — en-US "Tabs sharing devices" = tabs that are using camera/mic. Current: Abas compartilhadas em dispositivos → Suggest: Abas compartilhando dispositivos
  • tabbrowser-confirm-close-all-duplicate-tabs-text — browser/browser/tabbrowser.ftl — en-US "The last active tab will stay open" (one tab). Current: As com atividade mais recente permanecerão abertas. → Suggest: A aba com atividade mais recente permanecerá aberta.
  • menu-bookmarks-all-tabs (.label) — browser/browser/menubar.ftl — en-US "Bookmark All Tabs…"; without the object the action is undefined. Current: Adicionar todas as abas… → Suggest: Adicionar todas as abas aos favoritos…
  • main-context-menu-video-take-snapshot (.label) — browser/browser/browserContext.ftl — translated identically to main-context-menu-take-screenshot, so two different items in the same menu share a label. Current: Capturar tela… → Suggest: Capturar imagem do vídeo…
  • genai-chatbot-summarize-sidebar-generic-subtitle — browser/browser/genai.ftl — en-US "sparkles button" became "brightness button". Current: no botão de brilho → Suggest: no botão de estrelas
  • firefoxview-closed-tabs-description2 — browser/browser/firefoxView.ftl — en-US "in this window". Current: …que você fechou neste computador. → Suggest: …nesta janela. (the adjacent placeholder string already says "nesta janela")
  • existing-user-tou-message — browser/browser/termsofuse.ftl — en-US "take a moment". Current: Dê uma pausa para revisar e aceitar. → Suggest: Reserve um momento para revisar e aceitar.
  • report-broken-site-panel-reason-choose (.label) — browser/browser/reportBrokenSite.ftl — en-US "Choose reason". Current: Escolha → Suggest: Escolha um motivo
  • origin-controls-state-temporary-access — browser/browser/originControls.ftl — en-US "for this visit" = for the duration of the visit. Current: dados desta visita → Suggest: dados nesta visita
  • popup-warning-exceeded-with-redirect-message — browser/browser/browser.ftl — the count is attached to the wrong noun; en-US counts pop-up windows. Suggest: …impediu que este site abrisse mais de { $popupCount } janelas, além de redirecionamentos.
  • turn-on-scheduled-backups-description — browser/browser/backupSettings.ftl — the second condition became a coordinated action. Current: Você pode restaurar se houver um problema ou usar um novo dispositivo. → Suggest: Você pode restaurá-la se houver um problema ou se você tiver um novo dispositivo.
  • about-logins-vulnerable-alert-text2 — browser/browser/aboutLogins.ftl — en-US hedges ("was likely in a data breach"); pt-BR asserts it and shifts the subject to "um site". Suggest: …usada em outra conta que provavelmente foi afetada por um vazamento de dados.
  • addon-install-error-incorrect-hash, addon-local-install-error-incorrect-hash — browser/browser/addonNotifications.ftl — reduced relative clause read as an attributive. Current: …não corresponde à extensão { -brand-short-name } esperada. → Suggest: …não corresponde à extensão que o { -brand-short-name } esperava.
  • pocket-panel-saved-removed-updated — browser/browser/aboutPocket.ftl — "from Saves" dropped, making it identical to pocket-panel-saved-page-removed. Suggest: Página removida do que você salvou
  • about-private-browsing-focus-promo-cta — browser/browser/aboutPrivateBrowsing.ftl — en-US "Download". Current: Instale o { -focus-brand-name } → Suggest: Baixe o { -focus-brand-name }
  • customkeys-nav-reload-skip-cache — browser/browser/customkeys.ftl — en-US "Override Cache" = bypass. Current: Recarregar (substituir cache) → Suggest: Recarregar (ignorar cache)
  • downloads-blocked-download-detailed-info — browser/browser/downloads.ftl — en-US "broken". Current: O site pode estar ruim, ou está tentando… → Suggest: O site pode estar com problemas ou estar tentando…
  • aiwindow-firstrun-memories-title — browser/browser/aiWindow.ftl — the comparative attaches to "helpful", not to the count. Current: Mais respostas úteis, nos seus termos → Suggest: Respostas mais úteis, nos seus termos
  • aiwindow-feedback-choose-any — browser/browser/aiWindow.ftl — a multi-select prompt read as single choice. Current: Escolha qualquer um que se aplique → Suggest: Escolha todas as opções que se aplicam
  • firefox-relay-offer-why-to-use-relay-1 — browser/browser/firefoxRelay.ftl — the final clause turns "with your email hidden" into "stays safe"; the en-US string is identical to firefox-relay-and-fxa-popup-notification-first-sentence. Suggest aligning with that translation.
  • upgrade-vpn-title — browser/browser/ipProtection.ftl — en-US "beyond the browser". Current: Tenha proteção extra, além da no navegador → Suggest: Tenha proteção extra, além do navegador
  • ipprotection-location-selection-callout-description-1 — browser/browser/ipProtection.ftl — Current: …permite você escolher entre vários locais …, ou deixar ser escolhido o mais rápido para você. → Suggest: …permite que você escolha entre vários locais …, ou deixe que a gente escolha o mais rápido para você.
  • about-unloads-column-processes (.title) — browser/browser/aboutUnloads.ftl — Current: IDs dos processos encarregados pelo conteúdo da aba → Suggest: IDs dos processos que hospedam o conteúdo da aba
  • extension-default-theme-description — browser/browser/appExtensionFields.ftl — the missing preposition makes the noun list attach to "sistema operacional". Current: Seguir a configuração do sistema operacional de botões, menus e janelas. → Suggest: …do sistema operacional para botões, menus e janelas.
  • preferences-ai-controls-tab-group-suggestions-control (.description) — preferences.ftl — en-US "Get suggestions to name and organize your tabs." Current: Receber sugestões de nome e organizar suas abas. → Suggest: Receba sugestões para nomear e organizar suas abas.
  • permissions-header3 (.description) — preferences.ftl — en-US "Manage what websites can access…". Current: Gerencie quais sites podem acessar, controlar ou acionar. → Suggest: Gerencie o que os sites podem acessar, controlar ou acionar.
  • referrals-section-header (.description) — preferences.ftl — the object is dropped, leaving the sentence incomplete. Current: Convidar a usar o navegador que põe a privacidade em primeiro lugar. → Suggest: Convide alguém a escolher o navegador que põe a privacidade em primeiro lugar.
  • colors-text-and-background — browser/browser/preferences/colors.ftl — group header for the two pickers below. Current: Cores padrão (= Default colors) → Suggest: Texto e fundo
  • connection-proxy-socks — browser/browser/preferences/connection.ftl — "Host" is not "Domínio" (which is already used for Domain in permissions-doh-col). Current: Domínio SOCKS → Suggest: Servidor SOCKS
  • fxa-qrcode-error-title — browser/browser/preferences/fxaPairDevice.ftl — en-US "Pairing unsuccessful." Current: Conexão falhou. → Suggest: Falha no pareamento.
  • autofill-address-country — browser/browser/preferences/formAutofill.ftl — en-US distinguishes "Country or Region" from "Country" (autofill-address-country-only); both are País. Suggest: País ou região
  • home-prefs-highlights-option-most-recent-download (.label) — preferences.ftl / newtab.ftl — en-US is singular. Current: Downloads mais recentes → Suggest: Download mais recente
  • more-from-moz-mozilla-monitor-global-description — moreFromMozilla.ftl — Current: Receba alertas quando seus dados estiverem em vazamentos de dados. → Suggest: Receba alertas quando seus dados aparecerem em um vazamento.
  • performance-use-recommended-settings-desc — preferences.ftl — contains a sentence that no longer exists in en-US: "Desmarque se quiser alterar o uso de aceleração de hardware." Suggest: drop it.
  • newtab-sports-widget-keep-tabs — newtab.ftl — the dev comment explains "Keep tabs on" is an idiom for staying updated; it was translated with browser tabs. Current: Mantenha abas sobre a Copa do Mundo → Suggest: Fique por dentro da Copa do Mundo
  • newtab-sports-widget-loading-more — newtab.ftl — "matches" = football matches. Current: Carregando mais ocorrências… → Suggest: Carregando mais jogos…
  • newtab-sports-widget-round-16 / newtab-sports-widget-round-32 — newtab.ftl — Brazilian football terms. Current: Rodada de 16 / Rodada de 32 → Suggest: Oitavas de final / 16 avos de final (the file already uses "Quartas de final"/"Semifinais")
  • newtab-sports-widget-upcoming — newtab.ftl — Current: Seguintes → Suggest: Próximos (matches newtab-sports-widget-menu-view-upcoming = "Ver próximos")
  • newtab-sports-widget-message-day-in-play-title — newtab.ftl — Current: Acompanhe os jogos diariamente com widgets do { -brand-product-name } → Suggest: Mantenha seu dia em jogo com os widgets do { -brand-product-name }
  • newtab-section-follow-highlight-subtitle — newtab.ftl — Current: Siga o que você se interessa para aparecer mais do que você gosta. → Suggest: Siga seus interesses para ver mais do que você gosta.
  • home-prefs-firefox-home-disabled-notice (.message) — newtab.ftl — Current: …defina novas abas ou novas janelas no { -firefox-home-brand-name }. → Suggest: …como { -firefox-home-brand-name }.
  • newtab-appearance-explore-more-themes-button — newtab.ftl — "Explore more themes" and "See more themes" (newtab-appearance-more-themes-button) both became Mais temas. Suggest: Explorar mais temas for the former.
  • spotlight-public-wifi-vpn-body — asrouter.ftl — en-US "coffee shops". Current: aeroportos e restaurantes → Suggest: aeroportos e cafés
  • set-default-menu-message-split-layout-title — asrouter.ftl — the [macos] variant ("Keep { -brand-short-name } at your fingertips") was translated identically to *[other], losing the Dock-specific message. Suggest: Tenha o { -brand-short-name } sempre à mão
  • mr2022-onboarding-welcome-pin-header — onboarding.ftl — Current: Abra-se uma internet incrível (ungrammatical) → Suggest: Descubra uma internet incrível (the dev comment explicitly allows "discover")
  • mr1-onboarding-get-started-primary-button-label — onboarding.ftl — a button label rendered as a noun. Current: Introdução → Suggest: Começar
  • create-backup-screen-1-subtitle — onboarding.ftl — en-US "in 1–2 minutes". Current: em menos de 2 minutos → Suggest: em 1 a 2 minutos
  • policy-DisabledCiphers — policies-descriptions.ftl — the policy disables specific ciphers, not encryption. Current: Desativar criptografia. → Suggest: Desativar cifras.
  • policy-PostQuantumKeyAgreementEnabled — policies-descriptions.ftl — "key agreement" is acordo de chaves in policy-CNSA2KeyAgreementEnabled. Current: Ativar aceitação de chave pós-quantum para TLS. → Suggest: Ativar acordo de chaves pós-quântico para TLS.
  • policy-Windows10SSO — policies-descriptions.ftl — three account types collapsed into one. Current: …em contas da Microsoft no trabalho e na escola. → Suggest: …em contas da Microsoft, corporativas e escolares.
  • policy-DisableDefaultBrowserAgent — policies-descriptions.ftl — modifier scope. Current: o agente padrão do navegador → Suggest: o agente de navegador padrão
  • safeb-palm-advisory-desc — safebrowsing/blockedSite.ftl — "Advisory" is the notice, not consulting. Current: Assessoria fornecida por… → Suggest: Aviso fornecido por…

toolkit

  • cert-error-revoked-certificate, cert-error-bad-signature, cert-error-key-pinning-failure, cert-error-bad-der, cert-error-cert-not-in-name-space, cert-error-inadequate-cert-type, cert-error-path-len-constraint-invalid, cert-error-invalid-key, cert-error-unknown-critical-extension, cert-error-extension-value-invalid, cert-error-untrusted-issuer, cert-error-untrusted-cert, cert-error-invalid-integer-encoding, cert-error-unsupported-keyalg, cert-error-issuer-no-longer-trusted, cert-error-signature-algorithm-mismatch, fp-certerror-revoked-why-dangerous-body, fp-certerror-untrusted-issuer-why-dangerous-body — toolkit/toolkit/neterror/certError.ftl — 18 strings render en-US "the certificate provided for { $hostname }" as fornecido **por** { $hostname }, i.e. the host is described as the issuer. Suggest: fornecido para { $hostname }.
  • about-telemetry-show-subsession-data — aboutTelemetry.ftl — "subsession" → "subsection". Current: Mostrar dados da subseção → Suggest: Mostrar dados da subsessão
  • about-processes-total-memory-size-changed (.title) — aboutProcesses.ftl — en-US "Evolution:". Current: Execução: → Suggest: Evolução:
  • certificate-viewer-fingerprints — certviewer.ftl — cert hashes, not thumbnails. Current: Miniaturas de chaves → Suggest: Impressões digitais
  • certificate-viewer-ocsp-stapling — certviewer.ftl — not timestamping. Current: Estampa de tempo do OCSP → Suggest: OCSP Stapling / Grampeamento de OCSP
  • certificate-viewer-common-name — certviewer.ftl — a cert field, not a company field. Current: Nome da empresa → Suggest: Nome comum (CN)
  • certificate-viewer-given-name — certviewer.ftl — duplicates certificate-viewer-name = Nome; the dev comment says it is the non-surname part of a person's name. Suggest: Nome próprio
  • copy-raw-data-to-clipboard-label (aboutSupport.ftl) and third-party-button-copy-to-clipboard (aboutThirdParty.ftl) — en-US "Copy raw data to clipboard". Current (both): Copiar como estrutura de dados → Suggest: Copiar dados brutos para a área de transferência
  • title-label — aboutPlugins.ftl — the page title "About Plugins" was translated as the list heading, duplicating installed-plugins-label. Current: Plugins instalados → Suggest: Sobre os plugins
  • about-webrtc-aec-logging-on-state-msg, about-webrtc-aec-logging-toggled-on-state-msg — aboutWebrtc.ftl — "caller" is the person on the call. Current: fale com o remetente da chamada → Suggest: fale com o interlocutor da chamada
  • about-webrtc-sdp-set-at-timestamp-local, -remote — aboutWebrtc.ftl — headers stating when the SDP was set, not an action. Current: Definir SDP local na estampa de tempo … → Suggest: SDP local definido na estampa de tempo …
  • about-webauthn-results-pin-auth-blocked-error — aboutWebauthn.ftl — "in a row" = consecutively. Current: Tentativas demais falharam em seguida. → Suggest: Houve tentativas falhas demais em sequência.
  • url-classifier-content-classifier-verdict-miss — url-classifier.ftl — "Miss" = no match (there is a separate error verdict). Current: Falha → Suggest: Sem correspondência
  • about-logging-title — aboutLogging.ftl — about:logging is no longer network-only. Current: Log de tráfego de rede → Suggest: Sobre o registro em log
  • recommended-theme-1 — aboutAddons.ftl — en-US "Feeling creative?". Current: Sentindo criatividade? → Suggest: Está com vontade de criar?
  • addon-detail-updates-label — aboutAddons.ftl — en-US "Allow automatic updates"; the permission verb is dropped, making it identical to detail-update-type. Current: Atualização automática → Suggest: Permitir atualizações automáticas
  • about-reader-font-weight-light — aboutReader.ftl — this is font weight, and it collides with about-reader-color-light-theme = Claro. Current: Claro → Suggest: Fina
  • third-party-detail-publisher — aboutThirdParty.ftl — Current: Publicador (calque) → Suggest: Fornecedor / Editor
  • mozilla-pkix-error-invalid-integer-encoding — nsserrors.ftl — en-US "longer than necessary". Current: codificações que não são necessárias → Suggest: codificações mais longas do que o necessário (cert-error-invalid-integer-encoding gets it right)
  • mozilla-pkix-error-ocsp-response-for-cert-missing — nsserrors.ftl / .properties — Current: não inclui um estado para poder verificar o certificado → Suggest: não inclui um status do certificado que está sendo verificado
  • sec-error-filing-key — nsserrors.ftl / .properties — en-US "refiling". Current: Erro ao preencher a chave → Suggest: Erro ao rearquivar a chave
  • sec-error-unknown-critical-extension — nsserrors.ftl — Current: extensão obrigatória desconhecida → Suggest: extensão crítica desconhecida (sec-error-crl-v1-critical-extension and certError.ftl both use "crítica")
  • sec-error-crl-expired — nsserrors.ftl — Current: A CRL para emissores de certificados expirou. → Suggest: A CRL do emissor do certificado expirou.
  • sec-error-bad-info-access-method — nsserrors.ftl — Current: Informação do método de acesso desconhecido… → Suggest: Método de acesso a informações desconhecido…
  • SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT — security/manager/chrome/pipnss/nsserrors.properties — en-US: the client downgraded. Current: porque o cliente suporta uma versão TLS mais antiga do que é suportado pelo servidor. → Suggest: porque o cliente rebaixou a conexão para uma versão do TLS anterior à suportada pelo servidor.
  • SSL_ERROR_WEAK_SERVER_EPHEMERAL_DH_KEY — same file — the protocol message name is scrambled. Current: na mensagem de handshake da chave do servidor de troca → Suggest: na mensagem de handshake Server Key Exchange
  • SEC_ERROR_KRL_BAD_SIGNATURE — same file — leftover text from the preceding entry. Current: A validade da KRL do certificado deste site tem uma assinatura inválida. → Suggest: A KRL do certificado deste site tem uma assinatura inválida.
  • MOZILLA_PKIX_ERROR_V1_CERT_USED_AS_CA — same file — en-US "that is not a trust anchor". Current: que não é confiado → Suggest: que não é uma âncora de confiança
  • certmgr-fingerprint-sha-256 (.label) — security/manager/security/certificates/certManager.ftl — en-US "SHA-256 Fingerprint"; "Assinatura" is a different cert field. Current: Assinatura SHA-256 → Suggest: Impressão digital SHA-256
  • clientAuthKeyUsages (pippki.properties) and client-auth-cert-details-key-usages (pippki.ftl) — en-US "Key Usages" (the key-usage extension). Current: Chaves usadas → Suggest: Usos da chave (already used by SEC_ERROR_INADEQUATE_KEY_USAGE)
  • pdfjs-document-properties-creator — pdfviewer/viewer.ftl — "Creator" is the authoring application, and it collides with …-creation-date (Data da criação:). Current: Criação: → Suggest: Criador:
  • pdfjs-editor-add-signature-dialog-label — pdfviewer/viewer.ftl — Current: …salvar a assinatura usar novamente. → Suggest: …salvar a assinatura para usar novamente.
  • datetime-time (.aria-label) — global/datetimebox.ftl — label for the time field only. Current: Data e hora → Suggest: Hora
  • datetime-calendar (.aria-label) — global/datetimebox.ftl — Current: Agenda → Suggest: Calendário
  • webext-perms-description-proxy — global/extensionPermissions.ftl — en-US "browser proxy settings". Current: configurações de proxy de navegação → Suggest: configurações de proxy do navegador
  • csp-error-illegal-protocol — global/cspErrors.ftl — the scheme's colon is read as sentence punctuation, splitting the phrase. Current: contém um { $scheme } proibido: origem do protocolo → Suggest: contém uma origem de protocolo { $scheme }: proibida
  • profiledowngrade-window2 (.title) — global/profileDowngrade.ftl — "launched". Current: Você lançou uma versão mais antiga… → Suggest: Você iniciou uma versão mais antiga…
  • theme-picker-tide (.label) and theme-picker-tide-aria-label — global/theme-picker.ftl — the dev comment says "Refers to ocean tides". Current: Onda → Suggest: Maré
  • videocontrols-closed-caption-off (.offlabel) — global/videocontrols.ftl — a state label, not a command. Current: Desligar → Suggest: Desligado
  • pictureinpicture-subtitles-label — pictureinpicture.ftl — false friend; the sibling pictureinpicture-subtitles-btn uses Legendas. Current: Subtítulos → Suggest: Legendas
  • webauthn-related-origin-create-header, webauthn-related-origin-use-header — webauthnDialog.ftl — "passkey" rendered as senha, conflicting with webauthn-a-passkey-label (chave de acesso). Suggest: chave de acesso
  • webauthn-pin-auth-blocked-prompt — webauthnDialog.ftl — "power cycle (unplug and re-insert)" refers to the security key, not a battery charger. Current: precisa de um ciclo de carregamento de bateria (desconectar e conectar novamente o carregador) → Suggest: precisa ser desconectado e conectado novamente
  • crashreporter-crash-identifier — toolkit/crashreporter/crashreporter.ftl — en-US "Crash ID" translated the same as "Report ID" (id-heading in aboutcrashes.ftl). Current: ID do relatório: { $id } → Suggest: ID da falha: { $id }
  • experimental-features-link-previews-description-no-ai — firefoxlabs/features.ftl — en-US "reading time". Current: hora da leitura → Suggest: tempo de leitura (the sibling …-description gets it right)
  • generatedPasswordWillBeSaved — toolkit/chrome/passwordmgr/passwordmgr.properties — en-US has no mention of an account. Current: %S salvará a senha com sua conta deste site. → Suggest: O %S salvará esta senha para este site.
  • ScriptDialogLabel — toolkit/chrome/global/commonDialogs.properties — a checkbox label, not a question. Current: Bloquear janelas de confirmação desta página? → Suggest: Impedir que esta página crie mais janelas de diálogo

devtools

  • about-debugging-connection-prompt-enable-button / -disable-button — aboutdebugging.ftl — en-US "Enable/Disable connection prompt": the button toggles the prompt. Current: Pedido de ativar conexão / Pedido de desativar conexão → Suggest: Ativar pedido de conexão / Desativar pedido de conexão
  • about-debugging-page-title-runtime-page — aboutdebugging.ftl — "Runtime" is the page name, not a duration. Current: Depuração - Tempo de execução / { $selectedRuntimeId } → Suggest: Depuração - Runtime / { $selectedRuntimeId }
  • about-debugging-setup-usb-step-enable-dev-menu2, -enable-debug2 — aboutdebugging.ftl — the Android UI the string points at is "Opções do desenvolvedor". Current: menu de desenvolvimento → Suggest: menu do desenvolvedor
  • perftools-thread-timer (.title) — perftools.ftl — en-US "The thread handling timers"; subject and object are swapped. Current: Os timers de manipulação de threads (…) → Suggest: A thread que gerencia os timers (…)
  • inspector-element-specific-pseudo-classes-heading — inspector.ftl — en-US "Element-specific pseudo-classes". Current: Pseudo-classes de elementos específicos → Suggest: Pseudo-classes específicas do elemento
  • network-menu-summary-finish — netmonitor.ftl — en-US "Finish:" is when the last request finished; Tempo also collides with network-menu-summary-tooltip-finish. Current: Tempo: { $formattedTime } → Suggest: Conclusão: { $formattedTime }
  • toolbox-meatball-menu-noautohide-label — toolbox.ftl — en-US "Disable Popup Auto-Hide"; per the dev comment it keeps popups/panels visible on blur. Current: Desativar ocultamento automático de janelas ou abas → Suggest: Desativar ocultamento automático de popups
  • inactive-scroll-padding-when-not-scroll-container — tooltips.ftl — Current: pois não desliza (scroll) → Suggest: pois não é rolável (pt-BR uses "rolar"/"rolagem"; the English gloss is not in the source)
  • whypaused-debugger-statement — devtools/shared/debugger-paused-reasons.ftl — per the dev comment this is a literal debugger statement in the page's code. Current: Pausado em instrução do depurador → Suggest: Pausado em instrução debugger
  • serviceworker-list-aboutdebugging — application.ftl — en-US "Open about:debugging for Service Workers from other domains". Current: Abrir <a>about:debugging</a> de service workers de outros domínios → Suggest: …para ver service workers de outros domínios

dom / security / netwerk

  • netTimeout — dom/chrome/appstrings.properties — en-US "The operation timed out"; the string is also used for non-connection operations. Current: A conexão atingiu o tempo limite → Suggest: A operação atingiu o tempo limite
  • fileAlreadyExistsError — dom/chrome/nsWebBrowserPersist.properties — en-US: the clash is with the _files directory name. Current: já existe um arquivo de mesmo nome no diretório ‘_files’ → Suggest: já existe um arquivo com o mesmo nome do diretório ‘_files’
  • switch — dom/chrome/accessibility/AccessFu.properties — a role name (noun), not the action. Current: trocar → Suggest: interruptor
  • underscript — same file — MathML munder script position. Current: sublinhado (= underlined) → Suggest: subscrito abaixo
  • overscript / superscript — same file — both render as sobrescrito, so a screen reader cannot distinguish the two MathML roles. Suggest differentiating.
  • marquee — dom/chrome/accessibility/mac/accessible.properties — the scrolling-text ARIA role. Current: marcação → Suggest: letreiro
  • pageofpages — dom/chrome/layout/printing.properties — the connector was left in English, so printed footers read "1 of 5". Current: %1$d of %2$d → Suggest: %1$d de %2$d
  • CannotEncodeAllUnicode — dom/chrome/layout/HtmlForm.properties — en-US "which cannot encode all Unicode characters". Current: que não tem todos os caracteres Unicode → Suggest: que não pode codificar todos os caracteres Unicode
  • ignoringStrictDynamic — dom/chrome/security/csp.properties — en-US "Ignoring source". Current: Ignorar código “%1$S” → Suggest: Ignorando a fonte “%1$S”
  • SanitizerRcvdNoInput — dom/chrome/security/security.properties — Current: Recebido vazio ou sem entrada. → Suggest: Entrada vazia ou ausente.
  • PushMessageBadSalt — dom/chrome/dom/dom.properties — en-US "must be base64url-encoded", and base64url must not be split. Current: deve incluir codificado em base64-url → Suggest: deve estar codificado em base64url
  • xml-nostylesheet-xslt-disabled — dom/dom/XMLPrettyPrint.ftl — the relative clause is lost. Current: Ele usa XSLT, não há suporte no navegador. … que permita ver. → Suggest: Ele usa XSLT, que não tem suporte no navegador. … que permita visualizá-lo.
  • LocalNetworkAccessDetected — netwerk/necko.properties — en-US "prompt action" = the action taken in the permission prompt. Current: ação imediata: %8$S → Suggest: ação do prompt: %8$S
  • CookieAllowedForFpiByHeuristic — netwerk/necko.properties — en-US "First-Party isolation". Current: para o isolamento próprio “%2$S” → Suggest: para o isolamento de primeira parte (First-Party) “%2$S”
  • TrackerUriBlocked — netwerk/necko.properties — en-US "The resource at". Current: O conteúdo “%1$S” foi bloqueado… → Suggest: O recurso em “%1$S”… (as in the three sibling strings)

D. Wrong language / region / proper names

toolkit/toolkit/intl/languageNames.ftl:

  • language-name-ie — duplicates language-name-ia (Interlíngua); Interlingue/Occidental is a different constructed language. → Suggest: Interlingue
  • language-name-ng — Current: Dongo (initial N dropped; not a language name) → Suggest: Ndonga
  • language-name-rm — Current: Rhaeto-romance (hybrid English/French form) → Suggest: Reto-romano / Romanche
  • language-name-or — the source was renamed to "Odia". Current: Oriya → Suggest: Oriá / Odia
  • language-name-dsb / -hsb / -wen — three spellings and orders for the same family: Sorábio Baixo / Alto sórbio / Sórbio → Suggest: Baixo sorábio / Alto sorábio / Sorábio
  • language-name-tt vs language-name-crh — Tatárico vs Tártaro da Crimeia → Suggest: Tártaro for tt
  • language-name-nso vs language-name-st — Soto setentrional vs Soto do sul → Suggest: Soto do norte / Soto do sul (matching the nd/nr pair)

toolkit/toolkit/intl/regionNames.ftl:

  • region-name-sx — duplicates region-name-mf (São Martinho), so the two halves of the island are indistinguishable. → Suggest: Sint Maarten
  • region-name-vc — Current: São Vincente e Granadinas → Suggest: São Vicente e Granadinas (spelling)
  • region-name-cm — en-US uses the short name "Cameroon"; no other entry invents a long form. Current: República dos Camarões → Suggest: Camarões
  • region-name-cz-2019 — this ID exists because en-US moved to the short name "Czechia". Current: República Tcheca → Suggest: Tchéquia
  • region-name-pg — hyphen misplaced. Current: Papua Nova-Guiné → Suggest: Papua-Nova Guiné
  • region-name-tl — Current: Timor Leste → Suggest: Timor-Leste (official hyphenated form, matching en-US)
  • region-name-qx — agreement. Current: Ilhas Glorioso → Suggest: Ilhas Gloriosas
  • Inconsistent with newtab.ftl: region-name-ba = Bósnia-Herzegovina vs newtab-sports-widget-team-name-label-bih = Bósnia e Herzegovina.
  • newtab-clock-city-us-new-york (Nova Iorque) vs newtab-weather-static-city (Cidade de Nova York) — same city, two spellings in one file.
  • newtab-clock-city-us-washington-dc — Current: Washington D.C. → Suggest: Washington, D.C.

E. Brand names & do-not-translate

  • genai-onboarding-copilot-learn — browser/browser/genai.ftl — brand misspelled. Current: Mais informações sobre o Copitor → Suggest: Saiba mais sobre o Copilot
  • perplexity-callout-theme-2-title, perplexity-callout-theme-1-subtitle-1 — browser/browser/featureCallout.ftl — brand misspelled. Current: Perflexity → Suggest: Perplexity (the same file spells it correctly in three other strings; these are the only two wrong instances in the tree)
  • glean-debug-ping-viewer-brand-name — toolkit/toolkit/about/aboutGlean.ftl — the file header asks for Glean brand names in English, and debugo is not a word. Current: Visor de ping de debugo do { -glean-brand-name } → Suggest: { -glean-brand-name } Debug Ping Viewer
  • Wi-Fi → WiFi (9 strings; en-US uses the trademarked hyphenated form): ipprotection-feature-introduction-title-captive-portal, ipprotection-feature-introduction-description-captive-portal, upgrade-vpn-description, ipprotection-bandwidth-upgrade-text, ip-protection-vpn-upgrade-link (.description) — ipProtection.ftl; about-private-browsing-hide-activity-1 — aboutPrivateBrowsing.ftl; spotlight-public-wifi-vpn-header, newtab-privacy-message-promo-vpn-1, newtab-privacy-message-promo-vpn-2 — asrouter.ftl/newtab.ftl; neterror-dns-not-found-offline-hint-reconnect, fp-neterror-offline-what-can-you-do-body — netError.ftl.
  • policy-DisableFirefoxScreenshots — policies-descriptions.ftl — the dev comment says "Firefox Screenshots is the name of the feature, and should not be translated". Current: Desativar o recurso de captura de tela do Firefox. → Suggest: Desativar o recurso Firefox Screenshots.
  • appmenuitem-banner-update-restart (.label) — browser/browser/appmenu.ftl — hardcodes "Firefox" instead of the brand term, and replaces the em dash with a comma. Current: Atualização disponível, reiniciar o Firefox → Suggest: Atualização disponível — reiniciar agora
  • profiles-launch-profile — toolkit/toolkit/about/aboutProfiles.ftl — hardcodes "Firefox" where every other string in the file uses the brand term. Current: Abrir outro Firefox com este perfil → Suggest: Abrir outro { -brand-short-name } com este perfil
  • ErrorNoSettingsPath — toolkit/crashreporter/crashreporter.ini — leaves the product name in English while the rest of the file uses "relator de falhas". Suggest: …as configurações do relator de falhas.
  • Term-parameter dropped — en-US passes -fxaccount-brand-name(capitalization: "sentence") but pt-BR omits it, so the term falls back to *[title] and renders "Conta Firefox" mid-sentence: fxa-signout-dialog2-title (sync.ftl), login-intro-instructions-fxa (aboutLogins.ftl), appmenu-fxa-header2 (appmenu.ftl), toolbar-button-fxaccount (.label, .tooltiptext) (browserContext.ftl). The pt-BR term correctly defines both variants.
  • PushMessageBadEncodingHeader — dom/chrome/dom/dom.properties — a do-not-translate token was split by a space. Current: ‘aesgcm 128‘ → Suggest: ‘aesgcm128’
  • GTK2Conflict2, WinConflict2 — dom/chrome/dom/dom.properties — the comment says do not localize key=, modifiers=, id=. Current: tecla=“%S” modificadores=“%S” id=“%S” → Suggest: keep the English attribute names.
  • CSSContainerRuleSingleConditionWarning — dom/chrome/dom/dom.properties — an API name broken by a space. Current: use CSSContainerRule. conditions. → Suggest: use CSSContainerRule.conditions.
  • RequestStorageAccessPermissionsPolicy — dom/chrome/dom/dom.properties — the comment says do not translate "Permissions Policy" and storage-access. Current: o recurso de acesso ao armazenamento é bloqueado pela diretiva “Permissions” → Suggest: o recurso storage-access é bloqueado pela Permissions Policy
  • webconsole-commands-usage-block — devtools/shared/webconsole-commands.ftl — the underscore was dropped from the literal argument name, so the prose no longer matches the :block URL_STRING usage line two lines above. Current: um argumento URLSTRING → Suggest: um argumento URL_STRING
  • css-selector-warning-sibling-combinator-after-scope — devtools/client/tooltips.ftl — the comment marks only :scope as do-not-translate, but the subject noun phrase was left in English. Current: Sibling selectors após <strong>:scope</strong>… → Suggest: Seletores irmãos após <strong>:scope</strong>…
  • AttributeParsingError, AttributeParsingErrorNoTag, LengthParsingError — dom/chrome/mathml/mathml.properties — the note says to follow css.properties quoting conventions, which use ‘…’. Current: '%1$S' → Suggest: ‘%1$S’
  • action-log-read-page — browser/browser/aiWindowContent.ftl — the comment says "Read is past tense, to indicate that the action has been completed". Current: Ler o conteúdo da página → Suggest: Leu o conteúdo da página (the siblings action-log-searched-web, -checked-memories are past tense)
  • crashed-subframe-title (.title) — browser/browser/contentCrash.ftl — the comment requires this to match crashed-subframe-message minus markup; the wording and clause order differ.
  • default-browser-guidance-notification-v2-body — browser/browser/defaultBrowserNotification.ftl — the comment says the quoted text is a keyword to look for in the Windows Settings app, but the same label is quoted two ways: “Definir padrão” in …-body-instruction-win11 vs “Definir como padrão” here.
  • browser-main-private-window-title — browser/browser/browser.ftl — the comment states only macOS should use a - separator, but both [macos] and *[other] are identical, making the PLATFORM() selector pointless.
  • trademarkInfo — browser/branding/official/brand.ftl — the legal entity name is translated. Current: marcas registradas da Fundação Mozilla → Suggest: …da Mozilla Foundation (also in mr2022-onboarding-gratitude-subtitle and onboarding-gratitude-security-and-privacy-subtitle). Maintainer call — flagging because en-US treats it as a proper name.

F. Gender / number agreement

  • addon-permissions-empty — aboutAddons.ftl — nenhum permissão → nenhuma permissão
  • about-logins-confirm-remove-all-sync-dialog-message (*[other]) — aboutLogins.ftl — Serão removidas todos as contas → todas as contas
  • crashed-report-sent — aboutTabCrashed.ftl — Relato do falha → Relato da falha
  • crashreporter-plea — toolkit/crashreporter/crashreporter.ftl — um relatório do falha → um relatório de falha
  • about-webrtc-aec-logging-toggled-off-state-msg, about-webrtc-aec-logging-off-state-msg — aboutWebrtc.ftl — Arquivos de log capturados podem ser encontradas → encontrados (also fixes the stray lowercase initial in the second string)
  • abuse-report-messagebar-error-recent-submit — abuseReports.ftl — outra denúncia foi enviado → foi enviada
  • third-party-tag-background (.title) — aboutThirdParty.ftl — subject is "este módulo": foi carregada → foi carregado
  • about-processes-web-isolated-property-private — aboutProcesses.ftl — the other items in the list are masculine: privativa → privativo
  • about-glean-label-for-tag-pings-with-requirements — aboutGlean.ftl — Defina um tag → Defina uma tag (the same file uses "uma tag de debug")
  • discopane-intro3 — aboutAddons.ftl — subject "Extensões e temas" is mixed-gender → masculine: Elas podem melhorar → Eles podem melhorar (discopane-intro already uses "Eles")
  • about-service-workers-warning-no-service-workers — aboutServiceWorkers.ftl — Nenhum Service Workers registrado. → Nenhum Service Worker registrado.
  • rights-webservices-term-7 — aboutRights.ftl — "parte" is feminine: for identificado como inválido → for identificada como inválida
  • cert-error-invalid-key — certError.ftl — refers to "chave": Provavelmente é pequeno demais → pequena demais
  • sec-error-unknown-aia-location-type — nsserrors.ftl — Tipo de localização desconhecida na extensão do certificado AIA → Tipo de localização desconhecido na extensão AIA do certificado
  • fp-neterror-invalid-header-value-intro — netError.ftl — caracteres vazios, não permitido pelas normas → não permitidos pelas normas
  • pdfjs-editor-alt-text-decorative-tooltip — pdfviewer/viewer.ftl — refers to "imagem": Marcado como decorativa → Marcada como decorativa
  • videocontrols-picture-in-picture-explainer3 — global/videocontrols.ftl — Mais telas é mais diversão. → Mais telas, mais diversão.
  • security-privacy-issue-warning-popup-blocker (.description) — preferences.ftl — Abertura de janelas é intrusivo → A abertura de janelas é intrusiva
  • appearance-window-density-touch (.description) — preferences.ftl — …maiores, otimizado para telas de toque → otimizados
  • about-private-browsing-nova-info-subheader, -subheader2 — aboutPrivateBrowsing.ftl — mixed-gender subject "pesquisas e acessos" → masculine: serão excluídas → serão excluídos
  • urlbar-dismissal-acknowledgment-weather, urlbar-trending-dismissal-acknowledgment, urlbar-result-dismissal-acknowledgment-market, urlbar-result-dismissal-acknowledgment-all — browser.ftl — postposed plural subject: Não irá mais aparecer sugestões → Não irão mais aparecer sugestões; Não aparecerá mais pesquisas populares → Não aparecerão
  • identity-description-insecure, identity-description-active-loaded-insecure — browser.ftl — only the head noun pluralizes: cartões de créditos → cartões de crédito
  • about-unloads-no-unloadable-tab — aboutUnloads.ftl — abas a ser descarregadas → abas a serem descarregadas
  • active-policies-tab, active-policies-tab-title (.title) — aboutPolicies.ftl — "diretivas" is plural: Ativa → Ativas
  • ipprotection-message-bandwidth-warning (.message), -mb (.message), ip-protection-bandwidth-warning-infobar-message-90, -90-mb — ipProtection.ftl — GB restante este mês → GB restantes este mês; Tem { $usageLeft } GB restante → Você tem { $usageLeft } GB restantes (the -75 sibling is correct)
  • newtab-topsites-url-validation — newtab.ftl — É necessário uma URL válida → É necessária uma URL válida
  • newtab-privacy-message-promo-signin-1 — newtab.ftl — mixed-gender list → masculine plural: favoritos, senhas e abas criptografadas → criptografados
  • newtab-section-toast-block — newtab.ftl — Não aparecerá mais histórias → Não aparecerão mais histórias
  • newtab-wallpaper-light-color, newtab-wallpaper-dark-color — newtab.ftl — colors must agree with "Formas": Formas azul, rosa e amarelo / Formas vermelho e azul → Formas em tons de azul, rosa e amarelo / Formas em tons de vermelho e azul (matching the newtab-wallpaper-abstract-* pattern)
  • cfr-doorhanger-doh-body — asrouter.ftl — suas requisição de DNS → suas requisições de DNS
  • mr2022-onboarding-get-started-primary-subtitle — onboarding.ftl — refers to "versão": Está repleto → Está repleta
  • fx-backup-confirmation-screen-easy-setup-item-text-3 — onboarding.ftl — métodos de pagamentos → métodos de pagamento
  • policy-DisableRemoteImprovements — policies-descriptions.ftl — de uma atualizações para outra → de uma atualização para outra
  • policy-NoDefaultBookmarks — policies-descriptions.ftl — os favoritos inteligente → os favoritos inteligentes
  • corruptedContentErrorv2 — dom/chrome/appstrings.properties — antecedent "violação" is feminine: que não pode ser reparado → reparada (the sibling networkProtocolError is correct)
  • xml-nostylesheet — dom/dom/XMLPrettyPrint.ftl — informação de estilo associado a ele → associada a ele
  • ImageMapRectBoundsError, ImageMapCircleWrongNumberOfCoords, ImageMapCircleNegativeRadius, ImageMapPolyWrongNumberOfCoords, ImageMapPolyOddNumberOfCoords — dom/chrome/layout/layout_errors.properties — "tag" is feminine in pt-BR: do tag <area …> → da tag <area …>. Also ChildCountIncorrect (dom/chrome/mathml/mathml.properties): filhos do tag → da tag.
  • errLtSlashGt, errLtGt, errBadStartTagInNoscriptInHead — dom/chrome/layout/htmlparser.properties — tag de fechamento incorreto / tag de início incorreto → incorreta
  • errQuoteBeforeAttributeName, errQuoteInAttributeName — same file — "aspas" is plural: Encontrada aspas → Encontradas aspas; falta da aspas correspondente → faltam as aspas correspondentes
  • CORSMultipleAllowOriginNotAllowed — dom/chrome/security/security.properties — não é permitido vários cabeçalhos → não são permitidos vários cabeçalhos
  • ImportMapNotAllowedMultiple — dom/chrome/dom/dom.properties — Não é permitido vários mapas → Não são permitidos vários mapas
  • PushMessageBadPaddingError — dom/chrome/dom/dom.properties — agreement with "registro": não foi preenchida corretamente → não foi preenchido corretamente
  • MalformedIntegrityHash — dom/chrome/security/security.properties — uma hash mal formada vs O hash in the sibling strings → um hash mal formado
  • PrivateSlotDescription — security/manager/chrome/pipnss/pipnss.properties — Chaves privada do PSM → Chaves privadas do PSM
  • MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY / mozilla-pkix-error-ca-cert-used-as-end-entity — nsserrors.properties / .ftl — extensão de restrições básica identificado-o como uma autoridade certificadora → extensão de restrições básicas que o identifica como uma autoridade certificadora
  • SEC_ERROR_PKCS12_UNSUPPORTED_TRANSPORT_MODE / sec-error-pkcs12-unsupported-transport-mode — Só é suportado integridade de senha e modos de privacidade. → Só são suportados os modos de integridade e de privacidade por senha.
  • pageInfo_MixedContent2 — security/manager/chrome/pippki/pippki.properties — antes de ser transmitidas → antes de serem transmitidas
  • weakCryptoUsed — dom/chrome/appstrings.properties — de ser roubadas → de serem roubadas
  • collection-studies-description — preferences.ftl — antes de ser liberados para todos → antes de serem liberados para todos
  • about-glean-label-for-log-pings — aboutGlean.ftl — ao ser enviados → ao serem enviados
  • storage-idb-delete-blocked — devtools/client/storage.ftl — após ser fechadas todas as conexões → após serem fechadas todas as conexões
  • inspector-color-scheme-emulation-light / -dark (.title), inspector-emulation-panel-color-scheme-light / -dark (.aria-label) — devtools/client/inspector.ftl — it is the scheme that is light or dark (prefers-color-scheme: light|dark): emulação de esquema de cores claras / escuras → esquema de cores claro / escuro
  • -smart-window-brand-name gender — browser/browser/aiWindow.ftl — the term is feminine in pt-BR ("Janela inteligente"), but ~9 strings use masculine articles: aiwindow-firstrun-title, -model-subtitle, -memories-subtitle, -memories-relevance-body, -memories-choose-label, -memories-checkbox-chats, -memories-no-create, -default-title, aiwindow-history-menu-settings. appmenuitem-new-ai-window and fxa-signout-dialog-body-aiwindow in the same file already treat it as feminine, and aiFeatures.ftl/aiWindowContent.ftl are masculine throughout — this needs one locale-wide decision (feminine is the grammatical one). Also aiwindow-firstrun-memories-subtitle: "memórias … Eles tornam" → Elas tornam.

G. Verb mood / preposition / syntax

  • sanitize-selected-warning — sanitize.ftl — en-US "All selected items will be cleared." Current: Será limpo tudo dos itens selecionados. → Suggest: Todos os itens selecionados serão limpos.
  • skip-troubleshoot-refresh-profile — safeMode.ftl — ao invés de means "on the contrary"; substitution requires em vez de, and the preceding comma is spurious. Same error in fonts-allow-own (.label, preferences/fonts.ftl).
  • auto-safe-mode-description — safeMode.ftl — spurious comma splitting verb from adverbial: resolver o problema, usando o modo de segurança → resolver o problema usando o modo de segurança
  • webrtc-reason-for-no-permanent-allow-screen — webrtcIndicator.ftl — missing crase and article: permanente a sua tela → permanente à sua tela; add O before the brand term (the two neighbouring strings have it)
  • browser-theme-group (.description) — preferences.ftl — wrong contraction before a plural noun (only instance of à + plural in the tree). Current: se aplicam à barras de ferramentas, menus e mensagens → Suggest: se aplicam às barras de ferramentas, aos menus e às mensagens
  • rights-webservices-term-4 — aboutRights.ftl — missing crase, parallel with "quanto à qualidade" later in the same sentence: quanto a seleção dos Serviços → quanto à seleção dos Serviços
  • rights-intro-point-5-unbranded — aboutRights.ftl — devem tem um link → devem ter um link
  • rights-intro-point-2 — aboutRights.ftl — incluindo, entre outras, ao nome ou logotipo do Firefox → incluindo, entre outros, o nome ou o logotipo do Firefox
  • rights-intro-point-3 — aboutRights.ftl — missing object: permissão para usar para aperfeiçoar seus produtos → permissão para usá-la para aperfeiçoar seus produtos
  • rights-webservices-unbranded — aboutRights.ftl — European clitic placement: instruções de como os desativar → instruções de como desativá-los
  • addon-sitepermissions-required — aboutAddons.ftl — en-US "Grants the following capabilities to ". Current: Concede as seguintes capacidades e <span…> → Suggest: …capacidades a <span…>
  • abuse-report-unwanted-example — abuseReports.ftl — missing object: uma aplicação instalou sem minha permissão → uma aplicação a instalou sem minha permissão
  • abuse-report-settings-suggestions-search, -homepage — abuseReports.ftl — en-US imperative "Change your…": Muda sua configuração → Mude sua configuração
  • about-glean-label-for-controls-submit — aboutGlean.ftl — mood mixing: …para marcar todos os pings … e envie o ping selecionado → …e enviar o ping selecionado
  • about-processes-utility-actor-windows-file-dialog — aboutProcesses.ftl — Diálogo arquivos do Windows → Diálogo de arquivos do Windows
  • about-pdf-promo (.message) — aboutPDF.ftl — the .heading is imperative but the message uses bare infinitives: Abrir PDFs no … e lidar com o básico → Abra PDFs no … e resolva o básico
  • windows-messages-intro — aboutWindowsMessages.ftl — missing subject: precisa recarregar a página → você precisa recarregar a página
  • fp-certerror-unknown-issuer-why-dangerous-body — certError.ftl — tenha criado um algo que → tenha criado algo que (the fp-certerror-bad-domain-why-dangerous-body sibling is correct)
  • fp-neterror-http-error-intro — netError.ftl — O servidor de <strong>{ $hostname }</strong> → O servidor em <strong>{ $hostname }</strong> (all sibling fp-neterror-* strings use "em")
  • ssl-error-extract-public-key-failure / SSL_ERROR_EXTRACT_PUBLIC_KEY_FAILURE — nsserrors.ftl / .properties — do certificado sistema remoto → do certificado do sistema remoto
  • sec-error-token-not-logged-in / SEC_ERROR_TOKEN_NOT_LOGGED_IN — proclisis after negation: não identificou-se (login) → não se identificou (login)
  • ssl-error-revoked-cert-alert, ssl-error-expired-cert-alert — nsserrors.ftl — missing object pronoun: por considerar revogado / expirado → por considerá-lo revogado / expirado
  • client-auth-site-description, client-auth-site-identification — security/manager/security/pippki/pippki.ftl — enclisis is not allowed after "que": solicitou que você identifique-se → solicitou que você se identifique
  • certErrorTrust_UnknownIssuer2 — pipnss.properties — pode não está enviando → pode não estar enviando
  • pageInfo_WeakCipher — pippki.properties — Outras pessoas poder ver → Outras pessoas podem ver
  • pageInfo_Privacy_None4, pageInfo_Privacy_Encrypted1 — pippki.properties — antes ser transmitida → antes de ser transmitida
  • reportURInotHttpsOrHttp2 — dom/chrome/security/csp.properties — missing verb: deve uma URI HTTP ou HTTPS → deve ser uma URI HTTP ou HTTPS
  • ignoringInvalidGroupSyntax — same file — verb form inconsistent with all sibling "Ignorando…" strings: Ignorado grupo → Ignorando o grupo
  • isprinting — dom/chrome/appstrings.properties — dangling infinitive after a preposition: durante a impressão ou visualizar impressão → durante a impressão ou a visualização de impressão
  • PERR_GFX_PRINTER_DOC_IS_BUSY / _PP — dom/chrome/layout/printing.properties — Ainda não pode imprimir este documento → Ainda não é possível imprimir este documento
  • EditContextCharacterBoundsWarning — dom/chrome/dom/dom.properties — em alguns usuários → para alguns usuários
  • moz-box-item-reorder-handle, moz-box-item-reorder-handle-named (.aria-label) — global/mozBoxBase.ftl — Reordene item usando… → Reordenar o item usando…
  • form-post-secure-to-insecure-warning-message — global/htmlForm.ftl — wrong demonstrative + queísmo: inseriu nessa página … Tem certeza que quer enviar essas informações? → inseriu nesta página … Tem certeza de que quer enviar estas informações?
  • VK_LEFT, VK_RIGHT — toolkit/chrome/global/keys.properties — Seta para esquerda / Seta para direita → Seta para a esquerda / Seta para a direita
  • loginsDescriptionAll2 — toolkit/chrome/passwordmgr/passwordmgr.properties — estão armazenadas deste computador → neste computador
  • badApp — toolkit/chrome/mozapps/downloads/unknownContentType.properties — infinitive instead of imperative in instructions: Verificar o nome do arquivo ou selecionar outro aplicativo. → Verifique o nome do arquivo ou selecione outro aplicativo.
  • permission-dialog-set-change-app-link — global/handlerDialog.ftl — full sentence missing its final period: Escolher outro aplicativo → Escolher outro aplicativo.
  • about-debugging-worker-action-push2 (.disabledTitle) — devtools/client/aboutdebugging.ftl — en-US "for multiprocess"; the three parallel strings use "para": está desativado no multiprocessamento → está desativado para multiprocessamento
  • inactive-css-not-block — devtools/client/tooltips.ftl — a nível de is not correct pt-BR: elementos a nível de bloco → elementos de nível de bloco
  • inactive-css-text-wrap-balance-fragmented-fix, -fix-1 — devtools/client/tooltips.ftl — the "e.g." period was carried over, producing a sentence-ending period followed by a lowercase continuation: por exemplo. removendo colunas → por exemplo, removendo colunas
  • report-broken-site-panel-reason-media-moz-box-button (.label), report-broken-site-panel-reason-media2 (.label) — reportBrokenSite.ftl — mixes gerund and past participle on one auxiliary: O vídeo não está carregando ou reproduzido → O vídeo não está sendo reproduzido ou carregado
  • origin-controls-options (.label) — originControls.ftl — en-US ends with a colon because the options follow directly: A extensão pode ler e alterar dados → …dados:
  • pointerlock-warning-no-domain — browser.ftl — the sibling pointerlock-warning-domain uses the imperative: Pressionar Esc → Pressione Esc
  • xpinstall-prompt-message — addonNotifications.ftl — Tenha certeza se confia neste site → Tenha certeza de que confia neste site (the -unknown sibling is correct)
  • addon-confirm-install-message, addon-confirm-install-unsigned-message, addon-confirm-install-some-unsigned-message, addon-install-error-file-access, addon-local-install-error-file-access — addonNotifications.ftl — missing definite article before the brand term: em { -brand-short-name } → no { -brand-short-name }; porque { -brand-short-name } não pode modificar → porque o { -brand-short-name } não pode modificar
  • content-blocking-etp-blocking-desc, is-default, is-not-default, is-default-browser-2 — preferences.ftl — these four start with a bare { -brand-short-name } while the rest of the file uses O { -brand-short-name }
  • content-blocking-fpi-incompatibility-warning — preferences.ftl — configurações de cookies de { -brand-short-name } → do { -brand-short-name }
  • safeb-blocked-unwanted-page-short-desc — safebrowsing/blockedSite.ftl — missing the article used in all sibling strings: { -brand-short-name } bloqueou → O { -brand-short-name } bloqueou
  • ai-window-learn-from-browsing-activity (.label) — aiFeatures.ftl — matches the paired option "Aprender com conversas": Aprender da navegação em → Aprender com a navegação em
  • webext-quarantine-confirmation-line-2 — extensionsUI.ftl — em sites com restrição pela { -vendor-short-name } → em sites restritos pela { -vendor-short-name }
  • identity-credential-policy-description — identityCredentialNotification.ftl — a sentence-initial proclitic makes it parse as a subordinate clause with no main clause: Se autenticar em { $host } … está sujeito à… → Autenticar-se em { $host } … está sujeito à…
  • firefoxview-tabpickup-password-locked-description — firefoxView.ftl — dropped subject: precisa inserir → você precisa inserir
  • firefoxview-closed-tabs-placeholder-body — firefoxView.ftl — transitive verb without object: você pode recuperar aqui → você pode recuperá-la aqui
  • default-browser-prompt-message-pin, -pin-msix, -pin-mac — defaultBrowserNotification.ftl — missing object pronouns: torne seu navegador padrão e fixe na barra de tarefas → torne-o seu navegador padrão e fixe-o na barra de tarefas
  • default-browser-guidance-notification-title — same file — stacked bare infinitives: Concluir definir o { -brand-short-name } como padrão → Conclua a definição do { -brand-short-name } como padrão
  • appmenuitem-monitor-title2 — appmenu.ftl — Esteja à frente de roubo de identidade → Fique à frente do roubo de identidade
  • bookmark-overlay-keyword-caption-label-2 — editBookmarkOverlay.ftl — the sibling caption uses "Use": Usar uma única palavra-chave → Use uma única palavra-chave
  • action-log-searching-web-with-exa — aiWindowContent.ftl — an in-progress action as infinitive: Pesquisar na web com <a…>Exa</a> → Pesquisando na web com <a…>Exa</a> (cf. action-log-searching-web)
  • contextual-manager-export-passwords-dialog-message — contextual-manager.ftl — recomendamos excluir, para que outros → recomendamos excluir o arquivo para que outras pessoas
  • redirect-warning-with-popup-message (*[other]) — browser.ftl — missing conjunction (the [1] variant has it): impediu redirecionamentos { $popupCount } aberturas de janelas → impediu redirecionamentos e { $popupCount } aberturas de janelas
  • preferences-ai-controls-state-description-available — preferences.ftl — dangling transitive verb: O recurso aparece e você pode usar. → …e você pode usá-lo.
  • site-data-settings-description — preferences/siteDataSettings.ftl — dangling transitive verb plus comma before "e": até você excluir, e apaga dados de sites → até você excluí-los e apaga dados de sites
  • ctrl-tab-recently-used-order (.label) — preferences.ftl — en-US is a finite verb: Ctrl+Tab alternar entre abas → Ctrl+Tab alterna entre abas
  • about-logins-confirm-remove-all-dialog-message, about-logins-confirm-remove-all-sync-dialog-message (all variants) — aboutLogins.ftl — restrictive relative with indefinite antecedent: quaisquer alertas de vazamento que aparecem aqui → que apareçam aqui (the newer …-message2/-message3 avoid the construction)
  • permissions-exceptions-addons-desc — preferences/permissions.ftl — all sibling strings use "quais sites": especificar que sites têm permissão → especificar quais sites têm permissão
  • appearance-browser-icon-entry-group (.description) — preferences/browserIcon.ftl — missing articles: para barra de tarefas, área de trabalho e menu Iniciar → para a barra de tarefas, a área de trabalho e o menu Iniciar
  • app-manager-handle-file — preferences/applicationManager.ftl — Current: Estes aplicativos podem ser usados para gerenciar conteúdo { $type }. → Suggest: Os seguintes aplicativos podem ser usados para lidar com conteúdo { $type }. (matching app-manager-handle-protocol)
  • more-from-moz-qr-code-firefox-mobile-img (.alt) and newtab-download-mobile-highlight-image (.aria-label) — moreFromMozilla.ftl / newtab.ftl — o { -brand-product-name } de dispositivos móveis → o { -brand-product-name } para dispositivos móveis
  • network-proxy-group2 (.description) — preferences.ftl — same en-US source as network-proxy-connection-description: se conecta com a internet → se conecta à internet
  • browsing-use-full-keyboard-navigation (.label) — preferences.ftl — all neighbouring checkbox labels use the infinitive, and the key name is lowercased: Use a tecla “tab” para mover o foco → Usar a tecla Tab para mover o foco
  • passport-capture-save-doorhanger-description — preferences/formAutofill.ftl — same en-US source as address-capture-save-doorhanger-description, but one is imperative and the other infinitive: Salvar informações no… → Salve informações no…
  • default-bookmarks-toolbarfolder-description — profile/default-bookmarks.ftl — Adicione favoritos nesta pasta para aparecer na barra de favoritos → …para que apareçam na barra de favoritos
  • default-bookmarks-crashes — same file — word order: Todas as falhas suas → Todas as suas falhas
  • safeb-blocked-addon-page-short-desc — safebrowsing/blockedSite.ftl — missing object: porque uma de suas extensões tentou abrir → tentou abri-la
  • policy-Bookmarks — policies-descriptions.ftl — ou uma pasta especificada dentro deles → ou em uma pasta especificada dentro deles
  • spotlight-peace-mind-body — asrouter.ftl — doubled preposition: bloqueia em média de mais de 3.000 rastreadores → bloqueia em média mais de 3.000 rastreadores (the july-jam-body sibling is correct)
  • multi-profile-spotlight-body — onboarding.ftl — Alterne facilmente entre navegação de trabalho ou diversão. → …entre navegação de trabalho e diversão.
  • onboarding-infrequent-import-subtitle — onboarding.ftl — lembre que pode importar → lembre-se de que pode importar
  • newtab-privacy-message-promo-relay-1 — newtab.ftl — "confiar" requires "em": para quem você confia → para as pessoas em quem você confia
  • newtab-empty-section-topstories — newtab.ftl — mais grandes histórias através da web → mais grandes histórias de toda a web (the generic variant uses "na web")
  • newtab-wallpaper-blue-flowers — newtab.ftl — the "a + infinitive" progressive is European Portuguese: flores de pétalas azuis a desabrochar → flores de pétalas azuis desabrochando
  • tab-context-move-split-view-to-new-group (.label) — tabbrowser.ftl — Adicionar exibição dividida em novo grupo → …a novo grupo (matching tab-context-move-tab-to-new-group)

H. Spelling, accents & European-Portuguese forms

Missing / wrong accents and plain typos:

  • trustpanel-etp-description-disabled — browser.ftl — o máximo possivel → possível
  • sidebar-widget-hide-sidebar2 (.tooltiptext) — sidebar.ftl — Ocular painel lateral → Ocultar painel lateral
  • paw-print-avatar-tooltip (.tooltiptext) — profiles.ftl — avatar de pagada de pata → pegada de pata (paw-print-avatar is correct)
  • contextual-manager-passwords-remove-login-card-message — contextual-manager.ftl — Isto não pode ser defeito. → desfeito
  • customkeys-file-focus-search — customkeys.ftl — duplicated article: Foco na a barra de pesquisa → Foco na barra de pesquisa
  • smart-window-model-custom-name / -url (.placeholder) — aiFeatures.ftl — Examplo: → Exemplo: (2 instances)
  • content-sharing-modal-generic-error-2 (.message) — contentSharing.ftl — missing space: Tente novamentemais tarde. → Tente novamente mais tarde.
  • newtab-wallpaper-beach-at-sunrise — newtab.ftl — duplicated word: Praia ao ao nascer do sol → Praia ao nascer do sol
  • newtab-widget-message-copy — newtab.ftl — intervalos para estivar as pernas → esticar as pernas ("estivar" = to stow cargo)
  • about-debugging-runtime-disconnect-button — devtools/client/aboutdebugging.ftl — Deconectar → Desconectar (the same file spells "Desconectado" correctly)
  • blocked-mismatched-version — aboutSupport.ftl — driver de video → driver de vídeo (also missing the final period present in en-US)
  • pdfjs-bookmark-button-label — pdfviewer/viewer.ftl — Pagina atual → Página atual (the sibling .title is correct)
  • sec-error-pkcs12-decoding-pfx / SEC_ERROR_PKCS12_DECODING_PFX — nsserrors.ftl / .properties — Arquivo invalido. → Arquivo inválido.
  • MalformedIntegrityHash — dom/chrome/security/security.properties — <algorítmo do hash> → <algoritmo do hash> ("algoritmo" has no accent in pt-BR)
  • data-collection-backlogged-crash-reports (.description) — preferences.ftl — stray uppercase: OS relatórios podem incluir → Os relatórios podem incluir

Post-1990 orthography / hyphenation:

  • printui-paper-tabloid — printing/printUI.ftl — Tablóide → Tabloide
  • newtab-sports-widget-message-wallpapers-semifinals-title — newtab.ftl — semi-finais → semifinais (the file's own newtab-sports-widget-semi-finals uses "Semifinais")
  • mr2022-background-update-toast-text — asrouter.ftl — anti-rastreamento → antirrastreamento
  • about-networking-rcwn-std-dev-long — aboutNetworking.ftl — Desvio-padrão → Desvio padrão
  • addon-confirm-install-unsigned-message — addonNotifications.ftl — extensão não-verificada / extensões não-verificadas → não verificada / não verificadas (addon-install-error-not-signed is already correct)
  • mlmodel-link-preview — aboutAddons.ftl — pontos chave → pontos-chave
  • link-preview-generation-error-missing-data-v2, link-preview-settings-key-points (.label), link-preview-optin-message, link-preview-key-points-header, link-preview-key-points-disclaimer, link-preview-setup-faster-next-time — genai.ftl — pontos chave / Pontos chave → pontos-chave / Pontos-chave (6 instances)
  • pictureinpicture-fullscreen-btn2 (.tooltip), pictureinpicture-exit-fullscreen-btn2 (.tooltip), pdfjs-document-outline-button (.title), pdfjs-layers-button (.title), plus document_outline.title and netmonitor.toolbar.resizeColumnToFitContent.title in .properties — duplo-clique / Duplo-clique → clique duplo (unhyphenated; low priority, but currently inconsistent)

European-Portuguese forms in a pt-BR tree:

  • notSupportingDirective, IgnoringSrcBecauseOfDirective — dom/chrome/security/csp.properties — Directiva / directiva → Diretiva / diretiva
  • ServiceWorkerRegisterStorageError — dom/chrome/dom/dom.properties — Falha ao registar/atualizar → Falha ao registrar/atualizar (the sibling network/mime errors use "registrar")
  • InvalidIntegrityBase64 — dom/chrome/security/security.properties — não pôde ser descodificado → decodificado
  • errNcrSurrogate — dom/chrome/layout/htmlparser.properties — Referência do carácter expande para substituto. → Referência a caractere expandiu-se para um substituto (surrogate). (matching the ~8 sibling strings)
  • pageInfo_WeakCipher and neighbours — security/manager/chrome/pippki/pippki.properties — encriptação → criptografia (the rest of the file uses "criptografia"); likewise PushMessageBadPaddingError (dom.properties): mensagem encriptada → mensagem criptografada
  • SEC_ERROR_NOT_A_RECIPIENT, SEC_ERROR_PKCS12_UNABLE_TO_EXPORT_KEY — nsserrors.properties — chave privativa → chave privada (used in ~6 other entries in the same file)
  • Push/crypto strings in dom/chrome/dom/dom.properties — decriptografar (non-standard) in PushMessageBadEncryptionHeader, PushMessageBadCryptoKeyHeader, PushMessageBadEncodingHeader, PushMessageBadSenderKey, PushMessageBadSalt, PushMessageBadRecordSize, PushMessageBadPaddingError vs descriptografar in PushMessageBadEncryptionKeyHeader, PushMessageBadCryptoError → standardize on descriptografar

I. Typography

... instead of … (only 3 in the tree, all with … in en-US): main-context-menu-pdfjs-save-page (.label, browserContext.ftl), home-homepage-custom-url (.placeholder, preferences.ftl), newtab-discovery-empty-section-topstories-loading (newtab.ftl).

Locale-introduced unbalanced / wrong quote characters:

  • import-safari-permissions-string — migration.ftl — a pasta “Safari“ → “Safari” (the other quotes in the same string are correct; note en-US also has this defect in this string)
  • SSL_ERROR_RX_MALFORMED_HELLO_REQUEST, …_CLIENT_HELLO, …_SERVER_HELLO, …_CERTIFICATE, …_SERVER_KEY_EXCH, …_CERT_REQUEST, …_HELLO_DONE, …_CERT_VERIFY, …_CLIENT_KEY_EXCH, …_FINISHED — security/manager/chrome/pipnss/nsserrors.properties — 10 strings with “…“; en-US has no quotes at all here, so these are locale-introduced. The adjacent …_CHANGE_CIPHER/…_RX_UNEXPECTED_* entries are correct.
  • smartwindow-sidebar-auto-open-callout-accepted-subtitle — onboarding.ftl — uses U+02DD (˝) instead of quotes: Use ˝Fazer uma pergunta˝ → Use “Fazer uma pergunta”
  • ExecCommandPasteDeniedNotInputDriven — dom/chrome/dom/dom.properties — mismatched pair: document.execCommand('paste’) → document.execCommand(‘paste’)

Straight ' used as quotation marks (locale convention is “ ”): restore-page-problem-desc (aboutSessionRestore.ftl), crashed-single-offer-help-message, crashed-multiple-offer-help-message (aboutTabCrashed.ftl), enable-devtools-popup-description2 (browser.ftl), pin-tabs-callout-1-subtitle, pin-tabs-callout-2-subtitle (featureCallout.ftl), permissions-exceptions-manage-etp-desc (preferences/permissions.ftl), update-setting-write-failure-message2 (preferences.ftl), default-browser-agent-task-description (backgroundtasks/defaultagent.ftl), toolbox-always-on-top-enabled2, -disabled2 (devtools/client/toolbox.ftl), inactive-css-resize (devtools/client/tooltips.ftl), crashreporter-error-no-home-dir (crashreporter.ftl), neterror-not-cached-try-again (netError.ftl), csp-error-missing-directive (global/cspErrors.ftl), netOffline (dom/chrome/appstrings.properties), profileTooltip (mozapps/profile/profileSelection.properties). In most of these en-US has no quotes at all, so removing them is equally acceptable.

Straight " used as quotation marks: rights-webservices, rights-safebrowsing-term-3 (aboutRights.ftl — the only straight " in that scope), profile-has-selectable-profiles-message (global/profileSelection.ftl), experimental-features-cookie-samesite-none-requires-secure2-description (featuregates/features.ftl), experimental-features-fx-web-apps-description (firefoxlabs/features.ftl), policy-Extensions (mixes both styles in one string), policy-DisableForgetButton, policy-DisableProfileRefresh, policy-HardwareAcceleration, policy-OfferToSaveLogins (policies-descriptions.ftl), clientAuthMessage2 (pippki.properties), SuperfluousAuth, AutomaticAuth, CookieRejectedNonRequiresSecure2, CookieLaxForcedForBeta2, CookieSameSiteValueInvalid2 (netwerk/necko.properties — AutomaticAuth mixes both styles in one string), PrincipalWritingModePropagationWarning, CompositorAnimationWarningOpacityFrameInactive, CompositorAnimationWarningHasCurrentColor (dom/chrome/layout/layout_errors.properties), PEUnknownAtRule (css.properties), ForgotPostWarning, ForgotFileEnctypeWarning, CannotEncodeAllUnicode (HtmlForm.properties — en-US has no quotes), MalformedIntegrityHash, IneligibleResource, UnsupportedHashAlg (security.properties), MediaLoadUnsupportedTypeAttribute, MediaLoadUnsupportedMimeType (dom.properties).

Missing typographic apostrophe: pdfjs-editor-alt-text-mark-decorative-description — pdfviewer/viewer.ftl — marcas d'água → marcas d’água

Double / stray spaces:

  • pin-tabs-callout-2-subtitle — featureCallout.ftl — escolha 'Fixar aba'
  • webrtc-allow-share-camera-and-microphone-with-file — webrtcIndicator.ftl — sua câmera e microfone? (also missing the possessive: → sua câmera e seu microfone?)
  • languages-code-format (.label) — preferences/languages.ftl — { $locale } [{ $code }] → single space
  • about-processes-remote-sandbox-broker-process — aboutProcesses.ftl — remoto ({ $pid }) → single space
  • rights-intro-point-1 — aboutRights.ftl — double NBSP after a period → single space
  • neterror-proxy-connect-failure-contact-admin — netError.ftl — stray NBSP: está  funcionando → está funcionando
  • PEAttSelUnexpected — dom/chrome/layout/css.properties — seletor de atributo: ‘%1$S’
  • ModuleResolveFailureWarnRelative — dom/chrome/dom/dom.properties — devem começar com “./”
  • CSPROTrustedTypesPolicyViolation — dom/chrome/security/csp.properties — Trusted Types porque
  • pageInfo_Privacy_None2 (pippki.properties) and entry 8 "Read %1$S" (netwerk/necko.properties) — explicit trailing not present in en-US
  • discopane-notice-recommendations, discopane-notice-recommendations2 (.message) — aboutAddons.ftl — trailing space before the line wrap

Space before punctuation:

  • genai-settings-chat-lechat-links — genai.ftl — da Mistral AI . → da Mistral AI.
  • fp-certerror-not-yet-valid-why-dangerous-body — certError.ftl — …) } . → …) }.
  • CORSMethodNotFound — dom/chrome/security/security.properties — do CORS ). → do CORS).
  • pdfjs-print-progress-percent — pdfviewer/viewer.ftl — { $progress } % → { $progress }% (cf. pdfjs-page-scale-percent)

Missing space:

  • inactive-css-first-letter-pseudo-element-not-supported, inactive-css-placeholder-pseudo-element-not-supported, inactive-css-cue-pseudo-element-not-supported — devtools/client/tooltips.ftl — Não há suporte para<strong> → para <strong> (the first-line sibling has the space)

Wrong dash / separator (en-US uses an em dash):

  • webrtc-indicator-title — webrtcIndicator.ftl — { -brand-short-name } - Indicador… → — (the adjacent webrtc-indicator-window uses —)
  • page-info-page (.title) — pageInfo.ftl — Informações da página - { $website } → —
  • page-info-frame (.title) — pageInfo.ftl — the separator was dropped entirely: Informações do frame { $website } → Informações do frame — { $website }
  • tabbrowser-container-tab-title — tabbrowser.ftl — { $title } - { $containerName } → —
  • taskbar-tab-title-profile — taskbartabs.ftl — - { -brand-full-name } → — { -brand-full-name }
  • TitleWithStatus — dom/chrome/layout/MediaDocument.properties — %S - %S → %S — %S

pt-BR number format:

  • main-context-menu-media-play-speed-slow-2, -normal-2, -fast-2, -faster-2 (.label) — browserContext.ftl — decimal point kept from the source: 0.5×, 1.0×, 1.25×, 1.5× → 0,5×, 1,0×, 1,25×, 1,5×
  • connection-proxy-noproxy-localhost-desc-2 — preferences/connection.ftl — serial comma before "e" is not pt-BR usage: 127.0.0.1/8, e ::1 → 127.0.0.1/8 e ::1

Punctuation added/dropped vs en-US:

  • Missing sentence break: urlbar-dismissal-acknowledgment-weather, urlbar-trending-dismissal-acknowledgment (browser.ftl) — Obrigado por sua opinião Não irá… → add the period (the two urlbar-result-dismissal-acknowledgment-* siblings have it)
  • Comma where a period belongs: contextual-manager-passwords-no-passwords-message (contextual-manager.ftl) — são criptografadas, Estamos atentos → criptografadas. Estamos atentos
  • Comma splice: ipprotection-site-settings-callout-subtitle (ipProtection.ftl) — em um site específico, isso será lembrado → …e isso será lembrado; about-logins-confirm-export-dialog-message (aboutLogins.ftl) — also drops the consecutive "so" and the object pronoun → …, portanto qualquer pessoa … poderá vê-las.
  • Final period dropped: ipprotection-feature-introduction-link-text-captive-portal-1 (ipProtection.ftl), policy-GenerativeAI (policies-descriptions.ftl)
  • Trailing period added where en-US has none: ipprotection-connection-status-blocked-error-title-1 (.aria-label too), security-privacy-issue-warning-third-party-cookies (.label, preferences.ftl), newtab-wallpaper-sky-with-pink-clouds, newtab-shortcuts-highlight-title, newtab-report-ads-reason-seen-it-too-many-times (.label) (newtab.ftl), windows-10-eos-callout-addons-title (asrouter.ftl), tab-groups-onboarding-feature-callout-title (onboarding.ftl)

Capitalization:

  • menu-application-hide-other (.label) — menubar.ftl — Ocultar Outros → Ocultar outros
  • bookmarks-tools-toolbar-visibility-menuitem (.label) — browser.ftl — the [true] variant is Ocultar Barra de Favoritos while *[other] is sentence case
  • tabbrowser-tab-label-tab-split-view-right — tabbrowser.ftl — , Exibição dividida à direita → lowercase (the -left pair is lowercase)
  • addons-button-label2 (.label, .title), addons-button-label — preferences.ftl — Extensões e Temas → Extensões e temas
  • autofill-card-expires-month, autofill-card-expires-year — preferences/formAutofill.ftl — Mês de Expiração / Ano de Expiração → sentence case (the -2 variants are correct)
  • audio-backend, max-audio-channels, a11y-instantiator (aboutSupport.ftl), about-telemetry-option-group-older (aboutTelemetry.ftl) — stray Title Case in otherwise sentence-case files
  • storage-add-button (.title), storage-context-menu-add-item (.label) — devtools/client/storage.ftl — Adicionar Item → Adicionar item
  • about-logins-import-report-added2, -modified2, -no-change2 — aboutLogins.ftl — the details spans start lowercase, unlike the identical non-2 variants and en-US
  • Lowercase where the sibling is capitalized: about-webrtc-fold-hide-msg/-show-msg, about-webrtc-raw-cand-hide-msg/-show-msg, about-webrtc-log-hide-msg/-show-msg and the matching .title attributes (aboutWebrtc.ftl); about-webrtc-aec-logging-off-state-msg, about-webrtc-save-page-msg (aboutWebrtc.ftl); about-telemetry-current-data-sidebar (aboutTelemetry.ftl); quickactions-cmd-clearhistory, quickactions-cmd-private (browser.ftl); autofill-category-organization (toolkit/toolkit/formautofill/formAutofill.ftl); migration-list-payment-methods-label (migrationWizard.ftl)
  • nova-early-access-infobar-primary-button — asrouter.ftl — Ok → OK (used everywhere else)

J. Terminology inconsistency

These are the cross-file consistency hits that look like real drift rather than context differences. Each is a choose-one decision.

browser

  • "Reverse Tabs": Inverter abas (tab-context-reverse-split-view) vs Reverter abas (split-view-menuitem-reverse-tabs) — see §C, Inverter is correct
  • "Verified by": Homologado por: (security-view-identity-verifier.value, pageInfo.ftl) vs Verificado por: (identity-verifier-label, browser.ftl)
  • "Search the web": Pesquisar na web vs Pesquisar na internet — adjacent strings about-private-browsing-search-placeholder/-search-btn.title and newtab-search-box-input/newtab-search-box-text
  • "search terms": urlbar-placeholder-search-mode-other-bookmarks (.placeholder) uses busca, its four siblings use pesquisa
  • "Search bookmarks"/"Search history": Pesquisar nos favoritos/Pesquisar no histórico (menubar, firefoxView) vs Procurar favoritos/Procurar no histórico (places.ftl, browser.ftl)
  • "Sort by name": Ordenar pelo nome (places-sortby-name) vs Ordenar por nome (places-view-sortby-name)
  • "Close reader view": Desativar modo de leitura (browser, menubar) vs Fechar modo de leitura (aboutReader.ftl)
  • "AI chatbot": robô de conversa (genai-onboarding-description, sidebar-customization-callout-1-subtitle) vs chatbot de inteligência artificial everywhere else — including the next sentence of genai-onboarding-description itself
  • "Ask { $provider }": Consultar (genai-menu-ask-provider, genai-input-ask-provider, genai-shortcut-button) vs Perguntar ao (genai-menu-ask-provider-2)
  • "sidebar": genai-chatbot-summarize-footer-generic-subtitle uses barra lateral; every other string uses painel lateral
  • "chat": aiwindow-feedback-include-page-content leaves chat in English; the file uses conversa
  • "Use your own LLM": Use seu próprio LLM vs Usar seu próprio LLM in adjacent aiWindow.ftl strings
  • "link preview": visualização de links (genai.ftl) vs exibição prévia de links (link-preview-onboarding-callout-title); "key points": pontos-chave vs pontos principais (link-preview-first-time-setup-message)
  • "tab pickup": Escolha de abas (firefoxview-tabpickup-header) vs coleta de abas (continuous-onboarding-firefox-view-tab-pickup-title) vs sincronização de abas (callout-firefox-view-tab-pickup-title)
  • "backup": backup on the toggles (settings-data-backup-toggle-on2) vs cópia de segurança in the modals (turn-on-scheduled-backups-header, -confirm-button, -encryption-label, enable-backup-encryption-header) and windows-10-eos-global-infobar-primary-button
  • "hidden tabs": abas ocultadas (appmenu-tab-hide-controlled) vs abas ocultas (all-tabs-menu-hidden-tabs)
  • "Report"/"Relatar": crashed-request-auto-submit-title uses Informar; the rest of aboutTabCrashed.ftl uses Relatar
  • "software": xpinstall-prompt, xpinstall-disabled-locked, xpinstall-disabled, xpinstall-disabled-by-policy, addon-domain-blocked-by-policy, addon-install-domain-blocked-by-policy render it as um programa / software / programas
  • "Site vazado" (about-logins-list-item-breach-icon.title) reads as though the site leaked → Site com vazamento de dados (matching about-logins-list-section-breach)
  • login-item-timeline-action-created — the three timeline labels are parallel participles (Atualizada, Usada) except this one: Criação → Criada
  • downloads-error-generic — different subject/tense from its two siblings: O arquivo não pôde ser salvo porque… → O download não pode ser salvo porque…
  • firefoxview-syncedtabs-adddevice-primarybutton — para celular → para dispositivos móveis (as in the two sibling promos)
  • bookmark-overlay-keyword-2 (.value) — the field is labelled Atalho while its own caption calls it "palavra-chave" → Palavra-chave
  • customkeys-conflict-unusable-title, -body — chave (= key/password) for a keyboard key → tecla (customkeys-conflict-confirm-body is correct)
  • customkeys-dev-profiler-capture — um profile de desempenho → um perfil de desempenho; customkeys-dev-debugger — Debugger de JavaScript → Depurador de JavaScript
  • profiler-button-dropmarker (.label, .tooltiptext) — painel do profiler → painel do Analisador (as in profiler-popup-button-*)
  • identity-etsi — Regulamento (EU) 2024/1183 → Regulamento (UE) 2024/1183 (União Europeia)
  • unified-extensions-mb-blocklist-warning-single2, -multiple2, -multiple (.message) — habilitar → ativar (as in the -single sibling and everywhere else)
  • removed-search-engine-message/-message2 (vá em configurações) vs reset-search-settings-message (vá nas configurações)
  • report-broken-site-panel-send-more-info-button/-link — Envie mais informações → Enviar mais informações (all other buttons in the file use the infinitive)
  • sidebar-show-on-the-right / sidebar-show-on-the-left — Painel no lado direito vs Mover o painel para a esquerda; en-US is a matched pair
  • profiles.ftl avatar labels — edit-profile-page-avatar-header-2 uses Símbolo where the file uses avatar; sparkle-single-avatar-tooltip says brilho while sparkle-single-avatar says Faísca; video-game-controller-avatar-tooltip says controle de videogame while video-game-controller-avatar says Controlador de videogame; picture-avatar-tooltip says de imagem while picture-avatar says Foto; folder-avatar-tooltip/palette-avatar-tooltip use da pasta/da paleta while all ~25 siblings use de X
  • appearance-browser-icon-unlocked (.message) — "bonus icons" is ícones de bônus here but ícones extras de raposas in appearance-browser-icon-requirement
  • containers-dialog (.buttonlabelaccept) — "Done" is Concluído here and Pronto in containers-panel-create-button
  • languages-customize-select-language (.placeholder) — um idioma a adicionar vs um idioma para adicionar in browser-languages-select-language
  • browser-languages-error and browser-language-install-error (.message) — à Internet capitalized; the rest of the tree uses lowercase internet
  • autofill-address-prefecture — Província collides with autofill-address-province → Prefeitura for the Japanese prefecture field
  • applications-use-os-default (.label, all three PLATFORM variants) — aplicação appears only here; the whole scope uses aplicativo. Same pt-PT term in safeb-blocked-harmful-page-error-desc-override/-no-override and policy-AppAutoUpdate/policy-RequestedLocales
  • search-suggestions-cant-show, search-suggestions-cant-show-2 (.message) — barra de endereço (singular); ~20 other strings use barra de endereços
  • settings-translations-subpage-download-progress — Transferência em andamento… → Download em andamento… (the file uses "Download"/"Baixar" throughout)
  • preferences-ai-controls-block-confirmation-description — melhorias → aprimoramentos de inteligência artificial (as in the rest of the section)
  • content-blocking-suspected-fingerprinters-label, preferences-etp-custom-suspect-fingerprinting-protection-enabled, -enabled-context — Suspeitos de ser rastreadores… → Rastreadores de identidade digital (fingerprinters) suspeitos (parallel to the "…conhecidos" label; and "de ser" would need "de serem")
  • windows-10-eos-sync-callout-privacy-screen-1-title — bloqueia mineração de criptomoedas → bloqueia mineradores de criptomoedas (cryptominers are agents; preferences.ftl uses "mineradores de criptomoedas")
  • newtab.ftl widget terms — "Dismiss": Dispensar (newtab-menu-dismiss) vs Descartar (4 other strings); "Unfollow": Parar de seguir (newtab-section-unfollow-button) vs Deixar de seguir (3 others); "feed": canal de notícias / canal de informações / feed; "break": Intervalo vs pausa in the timer strings; "teams": equipes (newtab-sports-widget-follow-teams-title) vs times everywhere else
  • july-jam-body (asrouter.ftl) and mr2022-onboarding-get-started-primary-subtitle (onboarding.ftl) address the user as vocês (plural) while the rest of the tree uses singular você
  • onboarding-live-language-skip-button-label — Ignorar → Pular (used by the three other "Skip" strings)
  • sync-to-mobile-button-label vs desktop-to-mobile-subtitle — the subtitle tells the user to select "Sincronizar com dispositivos móveis" but the button reads "Sincronização com dispositivos móveis"
  • onboarding-refresh-gratitude-subtitle — o único principal navegador → o único grande navegador (as in welcome-back-spotlight-subtitle)
  • policy-Extensions — the comment says the keys may be translated as verbs: "Bloqueado" → “Bloquear”

toolkit

  • "Warning": Ícone de alerta (about-debugging-message-warning-icon.alt) vs aviso everywhere else (about-debugging-message-details-label-warning, icon-warning, accessibility-warning)
  • "cross-origin isolated": isolamento de origem cruzada (about-processes-with-coop-coep-process*) vs cross-origin isolado (about-processes-web-isolated-property-with-coop-coep)
  • "Off Main Thread": fora do processo principal (off-main-thread-paint-enabled) vs fora do thread principal (off-main-thread-paint-worker-count) — it is a thread
  • "trace log": registro de acompanhamento vs registro de execução (about-webrtc-debug-mode-off-state-msg / -on-state-msg)
  • "frames": about-webrtc-frames keeps frame/frames; the file uses Quadros elsewhere
  • "Timestamp": about-webrtc-sdp-set-timestamp leaves it in English; the siblings use estampa de tempo
  • about-webrtc-rtp-stats-heading — Estatística RTP (singular) vs Estatísticas ICE/Estatísticas da sessão
  • "cache" gender: active-cache-name, waiting-cache-name (aboutServiceWorkers.ftl) treat it as feminine (da cache ativa); aboutSupport.ftl treats it as masculine throughout
  • "Homepage": Página web (addon-detail-homepage-label) vs Site (detail-home.label)
  • "Rating"/"Reviews": Avaliação is used for both the star rating and the reviews, while Classificação is used elsewhere — five-star-rating.title, detail-rating, addon-detail-rating-label, addon-detail-reviews-link
  • "Manage Your X" headings: Gerenciamento de… / Gerencie suas… / Gerenciar… across extension-heading, theme-heading, plugin-heading, dictionary-heading, locale-heading, updates-heading, sitepermission-heading, shortcuts-heading
  • details-notification-blocked, details-notification-softblocked prepend O to an arbitrary add-on name; all sibling notifications don't (and the article can disagree with the name)
  • details-notification-hard-blocked-other, details-notification-soft-blocked-other-disabled2, -other-enabled2, -other-disabled, -other-enabled — the -other variants exist because the add-on is not an extension (en-US "This add-on"), but they all say Esta extensão
  • "uses this": usa isso (mlmodel-about-inference, mlmodel-link-preview, mlmodel-formfill-engine) vs usa isto (mlmodel-pdfjs, mlmodel-smart-tab-*)
  • "log": registro in url-classifier.ftl (url-classifier-debug-module-btn, -debug-file-btn, -debug-js-log-chk, -debug-sb-modules, -debug-modules, -debug-file, -disable-sbjs-log, -enable-sbjs-log) vs log throughout aboutLogging.ftl
  • "profile" (performance profile): about-logging-view-uploaded-profile, about-logging-delete-profile-confirm-title use perfil, colliding with user profiles; the rest of the file uses profile
  • "clipboard": raw-data-copied, text-copied (aboutSupport.ftl), windows-messages-copy-to-clipboard (aboutWindowsMessages.ftl) drop the article: para área de transferência → para a área de transferência
  • "Experimental features": Funcionalidades experimentais (devtools/client/toolbox-options.ftl) vs Recursos experimentais (aboutSupport.ftl)
  • "Set log file"/"Set log modules": url-classifier.ftl uses Configurar arquivo de registro/módulo de registro; aboutLogging.ftl uses arquivo de log/módulos de log
  • "scrolling" in pdfviewer/viewer.ftl: Rolagem de página (pdfjs-scroll-page-button) vs Deslocamento vertical/-horizontal/-wrapped
  • "Start typing…": Comece a digitar… (pdfjs-free-text2.default-content) vs Começar a digitar… (pdfjs-editor-edit-comment-dialog-text-input.placeholder)
  • "Legal" paper size: Jurídico (pdfjs-document-properties-page-size-name-legal) vs Legal (printui-paper-legal)
  • theme-picker-pine (.label) Pinho vs theme-picker-pine-aria-label Pinheiro — the dev comment says pine trees
  • EnterUserPasswordFor2 — seu usuário e senha → seu nome de usuário e senha (as in the neighbouring strings)
  • "Tem certeza que" (queísmo) in form-post-secure-to-insecure-warning-message, formPostSecureToInsecureWarning.message, download-ui-confirm-quit-cancel-downloads, -cancel-downloads-mac, download-ui-confirm-leave-private-browsing-windows-cancel-downloads, download-ui-file-executable-security-warning → Tem certeza de que
  • certErrorTrust_SelfSigned / cert-error-trust-self-signed vs mozilla-pkix-error-self-signed-cert — não é confiável vs não é considerado confiável for the same en-US sentence
  • sec-error-js-add-mod-failure/sec-error-js-del-mod-failure (Não foi possível adicionar/excluir o módulo) vs add-module-failure/del-module-error (…adicionar/excluir módulo)
  • remove-primary-password-info (Precisa digitar a senha atual…) vs remove-info (Você deve fornecer a senha atual…) for the same en-US string
  • forms-primary-pw-fips-title (O FIPS exige) vs pp-change2empty-in-fips-mode (O modo FIPS exige)
  • certmgr-add-exception (Adicionar exceção…) vs permissions-disable-etp (Adicionar exceção)

devtools

  • "parent": ao parent do elemento in inactive-css-not-grid-or-flex-or-absolutely-positioned-item-fix, -not-grid-or-absolutely-positioned-item-fix, -not-grid-item-fix-2, -not-flex-item-fix-2, and the four -1/-3 revisions → ao pai do elemento (which the two newest revisions already use); this is prose, not a CSS keyword
  • "W3C standards": padrões W3C (css-compatibility-deprecated-experimental-message) vs normas W3C (the four sibling css-compatibility-* strings)
  • "Preset": Configuração prévia (perftools-presets-debug-description) vs Ajuste prévio (the other 8 perftools-presets-*-description)
  • "target": O target (session-history-target-unsupported) vs alvo (options-tool-not-supported-label, compatibility-target-browsers-header, aboutdebugging)
  • "Session storage": Armazenagem de sessão (storage-tree-labels-session-storage) vs Armazenamento everywhere else in the file
  • "debugger"/"debug": toolbox-options.ftl mixes no debugger, ferramentas de debug, debugar with depuração remota; application.ftl mixes Debug with depurados and <span>Debugger</span>

dom / netwerk / security

  • ARIA landmark banner: aviso (win/accessible.properties) vs banner (mac/accessible.properties) vs faixa (AccessFu.properties) — one term, please
  • heading: cabeçalho (mac/accessible.properties) vs título (AccessFu.properties, which uses cabeçalho for header)
  • CSP "policy" vs "directive" — both render as diretiva, producing strings like "(diretiva Report-Only) … viola a seguinte diretiva". Affected: all CSPRO* prefixes (~10), CSPROViolation, CSPTrustedTypesPolicyViolation, CSPROTrustedTypesPolicyViolation, ignoringReportOnlyDirective, reportURINorReportToNotInReportOnlyHeader, reportURInotInReportOnlyHeader (csp.properties); CORS* "A diretiva Same Origin" (16 strings), FeaturePolicy*, ReferrerPolicyDisallowRelaxing* (security.properties); SEC_ERROR_INVALID_POLICY_MAPPING, SEC_ERROR_POLICY_VALIDATION_FAILED (nsserrors.properties); download-cert-message-desc (pippki.ftl); CookieLaxForced2 (necko.properties). Suggest política for policy.
  • triedToSendReport (csp.properties) — relato → relatório (as in tooManyReports)
  • IntegrityPolicyReportOnlyBlockedStylesheet (security.properties) — folha de estilo → folha de estilos (as in the …Enforce… sibling)
  • delete-user-cert-impact (certManager.ftl) — missing object pronoun: não poderá mais usar para se identificar → não poderá mais usá-lo para se identificar
  • sec-error-cert-not-in-name-space uses Autoridade de Certificação; the rest of the tree uses autoridade certificadora

K. Legacy .properties files (browser / devtools / toolkit chrome)

These are in the same categories as above, listed together because they live in the older .properties format.

browser/pdfviewer/viewer.properties

  • bookmark1_label — Pagina atual → Página atual (same typo as the .ftl pdfjs-bookmark-button-label; every other entry in the file uses "Página")
  • document_properties_page_size_name_legal — a paper-size name translated as a subject area. Current: Jurídico → Suggest: Ofício or keep Legal (the sibling …_name_letter correctly uses Carta)
  • print_progress_percent — space before %: {{progress}} % → {{progress}}% (cf. page_scale_percent)
  • document_outline.title — duplo-clique → duplo clique

browser/installer/

  • InvalidOpcode (override.properties) — opcode invalido → opcode inválido
  • ShowDetailsBtn (override.properties) — indicative instead of a label: Mostra &detalhes → Mostrar &detalhes
  • ClickNext, ClickInstall, ClickUninstall (override.properties) — infinitive where custom.properties and mui.properties use the imperative: Clicar em Avançar para continuar. → Clique em Avançar para continuar.
  • DirText (override.properties) — "another folder" became "the other folder", plus infinitive-for-imperative: …clicar em Procurar e selecionar a outra pasta. → …clique em Procurar e selecione outra pasta.
  • CreatedUninstaller (override.properties) — a past-tense log line rendered as an action label, making it indistinguishable from CreateFolder/CreateShortcut: Criar desinstalador: → Desinstalador criado:
  • Skipped (override.properties) — Ignorando: → Ignorado:
  • FileError_NoIgnore (override.properties) — straight quotes around button names where the parallel FileError uses “ ”
  • UN_SURVEY_CHECKBOX_LABEL (custom.properties) — indirect interrogative needs por que, and the brand article is missing: Fale para a Mozilla porque você desinstalou $BrandShortName → Diga à Mozilla por que você desinstalou o $BrandShortName
  • ERROR_DOWNLOAD_CONT (nsisstrings.properties) — stray space after the newline escape: \n Escolha OK → \nEscolha OK
  • MUI_INNERTEXT_STARTMENU_TOP (mui.properties) — pasta do Menu Iniciar → pasta do menu Iniciar (lowercase in MUI_TEXT_STARTMENU_TITLE/_SUBTITLE and ICONS_STARTMENU)

browser/chrome/

  • e10s.accessibilityNotice.jawsMessage (browser.properties) — subject "A exibição" is feminine: foi desativado → foi desativada
  • troubleshootModeRestartPromptMessage (browser.properties) — mixed-gender list → masculine plural, and en-US is future: são temporariamente desativadas → serão temporariamente desativados
  • sidebar.moveToLeft, sidebar.moveToRight (browser.properties) — Mover painel para esquerda / para direita → para a esquerda / para a direita
  • permission.canvas.label (sitePermissions.properties) — "canvas" rendered as tela, colliding with permission.screen.label (Compartilhar a tela); browser.properties keeps "canvas". Current: Extrair dados da tela → Suggest: Extrair dados do canvas
  • permission.popup-only.label, permission.popup.label, permission.popup-and-framebusting.label (sitePermissions.properties) — the pop-up qualifier is dropped, so the permission reads as any window/tab opening: Abrir janelas ou abas → Abrir janelas popup; Abertura de janelas e redirecionamento de terceiros → Janelas popup e redirecionamentos de terceiros
  • addProtocolHandlerMessage (feeds/subscribe.properties) — uma aplicação → um aplicativo (the button right below it, addProtocolHandlerAddButton, uses "aplicativo")
  • unsafeContentType (overrides/appstrings.properties) — Entre em contate com → Entre em contato com
  • corruptedContentErrorv2, isprinting (overrides/appstrings.properties) — same two defects as in dom/chrome/appstrings.properties (see §3.F, §3.G); fix both copies
  • unknownProtocolFound (overrides/appstrings.properties) — por causa do protocolo (%S) não estar associado → porque o protocolo (%S) não está associado
  • xfoBlocked (overrides/appstrings.properties) — diretiva X-Frame-Options vs política in cspBlocked immediately above
  • updateCreditCardMessage (extensions/formautofill/formautofill.properties) — stray ] in the visible string, plus singular where the parallel updateAddressMessage is plural: Quer] atualizar seu cartão de crédito com esta nova informação? → Quer atualizar seu cartão de crédito com essas novas informações?

devtools/client/debugger.properties

  • sourceTabs.prettyPrint — "Pretty print" read as paper printing. Current: Formatar fonte para impressão → Suggest: Formatar código-fonte (the siblings sourceTabs.removePrettyPrint, sourceFooter.prettyPrint.*, settings.autoPrettyPrint.label all avoid "impressão")
  • inlinePreview.toggle.label — en-US "Inline Variable Preview"; "variável" reads as an adjective: Previsão variável inline → Previsão de variáveis inline
  • settings.autoPrettyPrint.tooltip — códigos fonte … serão formatadas → códigos-fonte … serão formatados
  • sourceFooter.mappedSourceTooltip — (fonte mapeado de %S) → (fonte mapeada de %S)
  • sourceFooter.mappedGeneratedSource.tooltip — fonte original relacionado → fonte original relacionada
  • scopes.loadingOriginalScopes — variáveis do fonte original → variáveis da fonte original
  • scopes.showOriginalScopesTooltip — variáveis mapeadas para o fonte original → mapeados para a fonte original
  • editorNotificationFooter.noOriginalScopes — missing space after the closing backtick: `%S`no painel → `%S` no painel
  • expressions.noOriginalScopes, scopes.noOriginalScopes, editorNotificationFooter.noOriginalScopes — "original" attached to the wrong noun; the checkbox they refer to is scopes.mapping.label = "Mapear nomes originais de variáveis". Current: O mapeamento original de nomes de variáveis → Suggest: O mapeamento de nomes originais de variáveis
  • setDirectoryRoot.label, removeDirectoryRoot.label — raiz do diretório → diretório raiz (as in directoryRoot.tooltip.label, noSourcesInDirectoryRootText)
  • ignoreContextItem.unignoreLines — Não ignorar linhas → Deixar de ignorar linhas (the six sibling "unignore" entries use that form)
  • pauseOnDebuggerStatement — debugger is the JS keyword here: Pausar na instrução do depurador → Pausar na instrução debugger
  • eventlisteners.log.label — Logar eventos no console → Registrar eventos no console

devtools/client/netmonitor.properties

  • netmonitor.timings.handledByServiceWorker — missing the trailing colon that all sibling Timings labels have
  • networkMenu.ws.summary.framesCount2 — stray space before the plural separator: #1 mensagem ;#1 mensagens → #1 mensagem;#1 mensagens
  • charts.totalSecondsNonBlocking — stray space after the plural separator: …#1 segundo; Tempo sem bloqueio: → …#1 segundo;Tempo sem bloqueio:
  • netmonitor.context.useAsFetch — imperative in a context-menu command where all siblings use the infinitive: Use como busca (fetch) no Console → Usar como busca (fetch) no console
  • netmonitor.ws.toolbar.retry — a column header for the SSE retry field (an interval), not a button: Tentar novamente → Repetição (or keep Retry, like the sibling headers opCode, maskBit, finBit)
  • netmonitor.toolbar.resizeColumnToFitContent.title — Duplo-clique → Duplo clique

devtools/client/inspector.properties

  • eventsTooltip.Capturing — phase name as a participle while its sibling eventsTooltip.Bubbling is a noun: Capturando → Captura
  • inspector.eyedropper.label2 — same en-US string as inspector.eyedropper.label, one imperative, one infinitive: Capture uma cor da página (%S) → Capturar uma cor da página (%S)
  • inspectorScreenshotNode.label — área de tela = "screen area", not screenshot: Capturar área de tela do node → Capturar tela do node

devtools/client/webconsole.properties (and the identical devtools/shared/webconsole.properties — fix both copies)

  • webconsole.group.cookieSameSiteLaxByDefaultDisabled2 — "recommended" dropped, making this string a bare prefix of …Enabled2 and erasing the distinction between the two warning groups. Suggest: …o atributo “SameSite“ recomendado
  • webconsole.input.editor.onboarding.label — "Iterate on your code" became "interact with": Interaja mais rápido com seu código → Itere mais rápido no seu código
  • noGroupLabel — English word order inside a Portuguese phrase: <sem group label> → <sem rótulo de grupo>
  • evaluationNotifcation.noOriginalVariableMapping.msg — renders "debugger" as depurador twice while 18 other occurrences in scope keep debugger
  • webconsole.message.commands.startTracingToProfiler — Começou a gravar para o profiler … ao parar a gravação. → Começou a registrar no profiler … ao parar de registrar. (matching the four sibling tracing messages)

Other devtools/

  • accessibility.pref.scroll.into.view.title, …​.label (accessibility.properties) — "scroll" as deslizar (to slide); Firefox pt-BR uses rolar/rolagem. → Rolar automaticamente o node selecionado para dentro da visão / Rolar para dentro da visão
  • accessibility.pick (accessibility.properties) — a stray "de" turns the action into a noun phrase: Escolha de um objeto acessível da página → Escolher um objeto acessível da página
  • traceValues (startup.properties) — Logar argumentos passados → Registrar argumentos passados (the six sibling trace* entries use "Registrar")
  • toolbox.parentProcessBrowserToolboxTitle (toolbox.properties) — modifier attached to the wrong noun: Ferramentas do navegador de processos superiores → Ferramentas do navegador do processo pai
  • player.animationEndDelayLabel (animationinspector.properties) — endDelay is the delay after the animation ends: Final do atraso: → Atraso final:
  • responsive.devicePixelRatio.auto (responsive.properties) — %1$S is the device that sets the DPR: definida automaticamente como %1$S → definida automaticamente por %1$S
  • responsive.screenshot (responsive.properties) — área visível → área de exibição (the term used by responsive.rotate, …changeDevicePixelRatio, …leftAlignViewport)
  • fontinspector.allFontsOnPageHeader (font-inspector.properties) — Todos as fontes na página → Todas as fontes na página
  • flexbox.itemSizing.itemContentSize (layout.properties) — en-US "Content Size": Tipo do conteúdo → Tamanho do conteúdo
  • layout.toggleGridHighlighter (layout.properties) — the only place CSS Grid becomes grade in all of devtools: realçador de grade → realçador de grid
  • dropShadowPlaceholder (filterwidget.properties) — en-US "x y radius color" is the parameter order the user types: Cor do raio x y → x y raio cor
  • emptyPresetList (filterwidget.properties) — transitive verb without its object: você pode reusar com facilidade → você pode reusá-los com facilidade
  • boxmodel.offsetParent.title (boxmodel.properties) — Superior de deslocamento do elemento selecionado → Elemento pai de deslocamento do elemento selecionado
  • eyedropper.label (menus.properties) — labels the Eyedropper with the term reserved for the color picker (seletor de cores in layout.colorSwatch.tooltip, rule.colorSwatch.tooltip): → Conta-gotas
  • searchModifier.wholeWordModifier (components.properties) — missing crase: Corresponder a palavra inteira → Corresponder à palavra inteira
  • screenshotFilenameManual (devtools/shared/screenshot.properties) — straight " where en-US uses curly quotes; the only straight-quote value in the whole devtools scope
  • screenshotClipboardManual, screenshotFullPageManual, screenshotFileManual (devtools/shared/screenshot.properties) — locale-added straight 'True' (en-US has no quotes)

toolkit/chrome/

  • Prompt (global/commonDialogs.properties) — the title of a window.prompt() text-input dialog. Current: Confirmação — which both misdescribes it and collides with Confirm = Confirmar → Suggest: Solicitação
  • rememberPassword (passwordmgr/passwordmgr.properties) — gerenciador de senha → gerenciador de senhas
  • profileMissing (mozapps/profile/profileSelection.properties) — second clause not in the infinitive governed by "pode": Ele pode não existir ou está inacessível. → …ou estar inacessível.
  • profileNotEncryptedButPrefOn (same file) — "this build of %S" rendered two ways in adjacent entries: esta versão do %S → esta compilação do %S (matching profileEncryptedButPrefOff)
  • chooseFolder (same file) — trailing colon on a dialog title: Selecione a pasta do perfil: → Selecione a pasta do perfil
  • autoConfigMsg (autoconfig/autoconfig.properties) — the same en-US sentence translated two ways in one file: Avise o administrador do sistema. → Entre em contato com o administrador do sistema. (matching readConfigMsg)

Also upstream in this area (do not fix): webconsole.cssFilterButton.inactive.tooltip miscapitalizes "Javascript" — identical in en-US.

Clean, no findings: devtools/client/{sourceeditor, styleeditor, jsonview, network-throttling, shared, device, dom, har, changes, memory}.properties, devtools/shared/{accessibility, debugger, eyedropper, shared, styleinspector}.properties, mobile/android/chrome/*, browser/branding/official/brand.properties, and the remaining toolkit/chrome files.


4. Findings by area

Area Findings
browser/browser/*.ftl (top level) ~120
browser/browser/preferences/ ~40
browser/browser/newtab/ + branding/policies/safebrowsing/profile ~65
toolkit/toolkit/about/ ~60
toolkit/ (non-about/, incl. intl, neterror, pdfviewer, global, printing, crashreporter) ~65
devtools/ ~35
dom/ + security/ + netwerk/ + mobile/ ~70
browser/**/*.properties (incl. installer, pdfviewer, extensions) ~25
devtools/**/*.properties ~40
toolkit/chrome/**/*.properties ~12
Cross-cutting typography / terminology buckets see §3.I, §3.J

5. Systemic decisions (not mechanical fixes)

These are large normalization passes, best done as separate, deliberate changes:

  1. -smart-window-brand-name gender — aiWindow.ftl treats it as masculine in ~9 strings and feminine in 2; aiFeatures.ftl and aiWindowContent.ftl are masculine throughout. Pick one (feminine is grammatical for "Janela inteligente") and normalize the whole tree.
  2. Quote characters — the locale convention is “ ”, but ~25 .ftl strings and ~25 .properties entries use straight ' or " (and two use ˝/‘…’ mismatches). In most cases en-US has no quotes at all, so removing them is also correct.
  3. .properties quoting in nsserrors/csp/layout — the .ftl nsserrors file consistently uses '…' while the .properties counterpart uses unbalanced “…“; decide on one and apply per file.
  4. Wi-Fi vs WiFi — 9 strings; en-US uses the trademarked form throughout.
  5. CSP/CORS "policy" vs "directive" — both currently render as diretiva across ~35 entries, which makes several messages self-contradictory.
  6. push crypto verbs — decriptografar vs descriptografar (7 vs 2 entries).
  7. Access-key remapping — 3 keys still carry the en-US letter (§3.A). Small enough to fix directly, but it is a UI-conflict-sensitive change.
  8. Sentence case vs Title Case — a handful of stragglers in otherwise sentence-case files (§3.I, Capitalization).
  9. The §3.J terminology list — each entry is a choose-one call for the locale team, not an objective defect.

6. Priority shortlist

If only a small set gets fixed, these have the highest user impact:

  1. browser-layout-horizontal-tabs2.description — says the opposite of the setting it describes
  2. pageInfo_BrokenEncryption — reports a broken connection as a normal encrypted one
  3. about-networking-networkid-status-known — says "unknown" where en-US says "known"
  4. sec-error-cert-not-in-name-space, CheckLoadURIError, CheckSameOriginError, WindowCloseBlockedWarning, RequestStorageAccessPermissionsPolicy — security messages with inverted modality
  5. The 18 certError.ftl strings saying the host issued the certificate
  6. firefox-relay-offer-legal-notice-1 / -control — broken </label label> markup
  7. Copitor → Copilot, Perflexity → Perplexity — misspelled third-party brands
  8. language-name-ie and region-name-sx — duplicate entries that make two distinct languages/territories indistinguishable
  9. pictureinpicture-playback-rate-value / -preset — × 1.25 instead of 1.25×
  10. updateCreditCardMessage — a stray ] in a user-facing doorhanger: "Quer] atualizar…"
  11. permission.canvas.label / permission.popup*.label — permission labels that describe the wrong capability
  12. São Vincente, possivel, Ocular, Deconectar, Examplo, defeito, Foco na a, Praia ao ao, estivar, Pagina atual (×2), Arquivo invalido, opcode invalido, Entre em contate, Todos as fontes — visible spelling errors
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment