From 104e3c7ba09c02d05bc0f3d51148a1917d0f699e Mon Sep 17 00:00:00 2001 From: John Coffey Date: Thu, 3 Sep 2026 14:23:01 -0700 Subject: [PATCH] Translate the rule sentences into Brazilian Portuguese #261 rebuilt the Sieve rule summaries and the recurrence descriptions as whole sentences with placeholders, so that a translator can move the parts rather than being handed " and " on its own. This is the Brazilian Portuguese half of that. 32 strings and 9 plural forms. The ordinals are words -- there is no suffix to append here, which was the point -- and the day and item lists are joined by Intl.ListFormat rather than a translated separator. --- web/src/locales/pt-BR.ts | 46 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/web/src/locales/pt-BR.ts b/web/src/locales/pt-BR.ts index 357cbee..ffe7a46 100644 --- a/web/src/locales/pt-BR.ts +++ b/web/src/locales/pt-BR.ts @@ -1258,8 +1258,54 @@ export const catalog: Catalog = { "This message was sent automatically, so no read receipt is offered.": "Esta mensagem foi enviada automaticamente, então não há confirmação de leitura a oferecer.", "This server will not hold a message longer than {span}.": "Este servidor não retém uma mensagem por mais de {span}.", "Upload failed": "Falha no envio", + // ── Third pass ────────────────────────────────────────────────────── + // Sentences that lib/ and store/ were building in English, and the two + // swipe labels that reach t() through a variable and so were invisible + // to a scan for t("literal"). See #259. + "Every {n} {frequency}": "A cada {n} {frequency}", + "Monthly": "Mensalmente", + "Monthly on day {days}": "Mensalmente no dia {days}", + "Monthly on the {ordinal} {weekday}": "Mensalmente na {ordinal} {weekday}", + "Monthly on {weekday}": "Mensalmente em {weekday}", + "Weekly": "Semanalmente", + "Weekly on {days}": "Semanalmente em {days}", + "add {flag}": "adicionar {flag}", + "always": "sempre", + "body contains \"{value}\"": "o corpo contém \"{value}\"", + "body does not contain \"{value}\"": "o corpo não contém \"{value}\"", + "delete it": "excluir", + "fifth": "quinta", + "first": "primeira", + "forward to {address}": "encaminhar para {address}", + "fourth": "quarta", + "keep it": "manter", + "last": "última", + "mark it read": "marcar como lida", + "move to {folder}": "mover para {folder}", + "reject it": "rejeitar", + "remove {flag}": "remover {flag}", + "second": "segunda", + "size is over {n} KB": "o tamanho passa de {n} KB", + "size is under {n} KB": "o tamanho é menor que {n} KB", + "star it": "favoritar", + "stop": "parar", + "third": "terceira", + "{header} address {op} \"{value}\"": "o endereço de {header} {op} \"{value}\"", + "{header} {op} \"{value}\"": "{header} {op} \"{value}\"", + "{rule}, until {date}": "{rule}, até {date}", + "{tests} → {actions}": "{tests} → {actions}", }, plurals: { + // ── Third pass ───────────────────────────────────────────────────── + "Every {n} days": { one: "Todo dia", other: "A cada {n} dias" }, + "Every {n} months": { one: "Todo mês", other: "A cada {n} meses" }, + "Every {n} months on day {days}": { one: "Todo mês no dia {days}", other: "A cada {n} meses no dia {days}" }, + "Every {n} months on the {ordinal} {weekday}": { one: "Todo mês na {ordinal} {weekday}", other: "A cada {n} meses na {ordinal} {weekday}" }, + "Every {n} months on {weekday}": { one: "Todo mês em {weekday}", other: "A cada {n} meses em {weekday}" }, + "Every {n} weeks": { one: "Toda semana", other: "A cada {n} semanas" }, + "Every {n} weeks on {days}": { one: "Toda semana em {days}", other: "A cada {n} semanas em {days}" }, + "Every {n} years": { one: "Todo ano", other: "A cada {n} anos" }, + "{rule}, {n} times": { one: "{rule}, {n} vez", other: "{rule}, {n} vezes" }, // ── Third pass ───────────────────────────────────────────────────── "Move {n} messages to Trash?": { one: "Mover {n} mensagem para a Lixeira?", other: "Mover {n} mensagens para a Lixeira?" }, "{n} days": { one: "{n} dia", other: "{n} dias" },