Report the stale keys that are stale, and remove them
The check reported 41 stale keys per catalogue. Ten of them were.
The other 31 were strings held in constants and translated where they render --
t(b.description), t(group), t(c.label) -- so they reach t() as a variable and
there is no literal at the call site to find. The script already chased two of
those shapes, `label:` and objects named *_LABELS, with a comment about crying
wolf 33 times. The shapes kept coming: `description:` and `group:` on the
keyboard bindings, the calendar's view names, the read-receipt refusals, the
palette names.
Chasing them one at a time is the wrong shape of fix. Stale detection now asks
only "is this key still written down anywhere in the source" -- any string
literal counts. That under-reports, and that is the right way round: a missed
stale key costs a line of dead translation, a false one costs the credibility
of the check and every real finding after it. Which is what happened here --
these sat unread long enough to need a commit of their own.
Coverage keeps the strict set. The two questions need different nets, and
widening the one that measures what a catalogue *owes* would count every CSS
class and JMAP method name as an untranslated string -- it read 29% while I had
them sharing a set. `wanted` is the obligation, `seen` is the evidence.
What was actually dead, removed from all nine: "Availability on {date}",
"Import vCard", "PDF", two settings hints replaced by rewordings that are still
live, the Catppuccin palette description, and Tuesday through Friday -- left
behind when the week-start dropdown narrowed to the three days a week actually
starts on, and appearing since only in comments.
Coverage is unchanged at 1269/1285: none of the ten was ever owed.
This commit is contained in:
@@ -322,7 +322,6 @@ export const catalog: Catalog = {
|
||||
"Busy": "Ocupado",
|
||||
"Free/busy": "Disponibilidade",
|
||||
"Show as": "Mostrar como",
|
||||
"Availability on {date}": "Disponibilidade em {date}",
|
||||
"Count all events as busy": "Contar todos os eventos como ocupado",
|
||||
"Only events I'm attending": "Somente os eventos de que participo",
|
||||
"Don't include in availability": "Não incluir na disponibilidade",
|
||||
@@ -361,7 +360,6 @@ export const catalog: Catalog = {
|
||||
"New address book": "Novo catálogo de endereços",
|
||||
"No address books yet.": "Ainda não há catálogos de endereços.",
|
||||
"Choose from address books": "Escolher nos catálogos de endereços",
|
||||
"Import vCard": "Importar um vCard",
|
||||
"Export all contacts": "Exportar todos os contatos",
|
||||
"Export address book": "Exportar este catálogo de endereços",
|
||||
"Import contacts…": "Importar contatos…",
|
||||
@@ -435,7 +433,6 @@ export const catalog: Catalog = {
|
||||
"Make ihasmail yours.": "Deixe o ihasmail do seu jeito.",
|
||||
"Reading": "Leitura",
|
||||
"Reading pane": "Painel de leitura",
|
||||
"Reading, sending and list behaviour. Settings are stored in this browser.": "Comportamento de leitura, envio e lista. As configurações ficam guardadas neste navegador.",
|
||||
"Right of the list": "À direita da lista",
|
||||
"Below the list": "Abaixo da lista",
|
||||
"Hidden (open full width)": "Oculto (abrir em largura total)",
|
||||
@@ -478,10 +475,6 @@ export const catalog: Catalog = {
|
||||
"Time zone": "Fuso horário",
|
||||
"Week starts on": "A semana começa em",
|
||||
"Monday": "Segunda-feira",
|
||||
"Tuesday": "Terça-feira",
|
||||
"Wednesday": "Quarta-feira",
|
||||
"Thursday": "Quinta-feira",
|
||||
"Friday": "Sexta-feira",
|
||||
"Saturday": "Sábado",
|
||||
"Sunday": "Domingo",
|
||||
"12-hour clock (6:23 PM)": "Formato de 12 horas (6:23 PM)",
|
||||
@@ -728,10 +721,8 @@ export const catalog: Catalog = {
|
||||
"Manage labels": "Gerenciar os marcadores",
|
||||
"Create “{name}”": "Criar “{name}”",
|
||||
"Type a name to create your first label.": "Digite um nome para criar seu primeiro marcador.",
|
||||
"Labels are IMAP keywords stored on your messages, so they sync to other clients. Names and colours are kept in this browser.": "Os marcadores são palavras-chave IMAP guardadas nas suas mensagens, então eles sincronizam com outros clientes. Os nomes e as cores ficam neste navegador.",
|
||||
"New label": "Novo marcador",
|
||||
"Delete label": "Excluir o marcador",
|
||||
"PDF": "PDF",
|
||||
"Large attachments may be rejected by some servers": "Anexos grandes podem ser recusados por alguns servidores",
|
||||
"Images are stored in your Files (folder “ihasmail”) and embedded when you send.": "As imagens são guardadas nos seus Arquivos (pasta “ihasmail”) e incorporadas no envio.",
|
||||
"Thanks for your message. I'm away until … and will reply when I'm back.": "Obrigado pela sua mensagem. Estarei ausente até … e responderei quando voltar.",
|
||||
@@ -865,7 +856,6 @@ export const catalog: Catalog = {
|
||||
"Only languages ihasmail has been translated into appear here, so this list grows as translations land rather than ahead of them — a language offered without strings behind it would leave the page claiming to be in a language it is not.": "Aqui aparecem só os idiomas para os quais o ihasmail foi traduzido, então a lista cresce conforme as traduções chegam, e não antes — um idioma oferecido sem textos por trás faria a página afirmar estar em um idioma que não é o dela.",
|
||||
"tell us about it": "conte para nós",
|
||||
"This translation was generated by AI and has not been checked by a native speaker, so it is marked Beta until somebody who speaks it signs it off. Anything that reads wrongly is worth reporting — {report}.": "Esta tradução foi gerada por IA e não foi revisada por uma pessoa nativa, então está marcada como Beta até que alguém a aprove. Tudo o que soar errado vale um aviso — {report}.",
|
||||
"{name} is the palette from {site}, and what a new account starts on. It is a dark theme, so it counts as dark wherever that matters, and the accent colour below still applies on top of it.": "{name} é a paleta de {site}, e com a qual uma conta nova começa. É um tema escuro, então conta como escuro onde isso importa, e a cor de destaque abaixo continua valendo por cima dele.",
|
||||
"ihasmail's own version is the date of the commit it was built from, followed by where that commit came from: {example} was built from a commit dated the 30th of August 2026 that arrived through pull request 129. A commit that did not come through one carries its short SHA instead — {sha}. The version deliberately says nothing about Stalwart; what this build needs from the server is the line above.": "A versão do próprio ihasmail é a data do commit a partir do qual ele foi compilado, seguida da origem desse commit: {example} foi compilado a partir de um commit de 30 de agosto de 2026 que veio pela pull request 129. Um commit que não veio por uma delas carrega no lugar o SHA curto — {sha}. A versão não diz nada sobre o Stalwart de propósito; o que esta compilação precisa do servidor está na linha acima.",
|
||||
|
||||
// ── Composer status, calendar title ────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user