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:
@@ -315,7 +315,6 @@ export const catalog: Catalog = {
|
||||
"Busy": "Зайнятий",
|
||||
"Free/busy": "Зайнятість",
|
||||
"Show as": "Показувати як",
|
||||
"Availability on {date}": "Зайнятість на {date}",
|
||||
"Count all events as busy": "Вважати всі події зайнятістю",
|
||||
"Only events I'm attending": "Лише події, де я беру участь",
|
||||
"Don't include in availability": "Не враховувати в зайнятості",
|
||||
@@ -354,7 +353,6 @@ export const catalog: Catalog = {
|
||||
"New address book": "Нова адресна книга",
|
||||
"No address books yet.": "Адресних книг поки немає.",
|
||||
"Choose from address books": "Вибрати з адресних книг",
|
||||
"Import vCard": "Імпорт vCard",
|
||||
"Export all contacts": "Експортувати всі контакти",
|
||||
"Export address book": "Експортувати цю адресну книгу",
|
||||
"Import contacts…": "Імпортувати контакти…",
|
||||
@@ -429,7 +427,6 @@ export const catalog: Catalog = {
|
||||
"Make ihasmail yours.": "Налаштуйте ihasmail під себе.",
|
||||
"Reading": "Читання",
|
||||
"Reading pane": "Область читання",
|
||||
"Reading, sending and list behaviour. Settings are stored in this browser.": "Поведінка під час читання, надсилання та в списку. Налаштування зберігаються в цьому браузері.",
|
||||
"Right of the list": "Праворуч від списку",
|
||||
"Below the list": "Під списком",
|
||||
"Hidden (open full width)": "Прихована (відкривати на всю ширину)",
|
||||
@@ -472,10 +469,6 @@ export const catalog: Catalog = {
|
||||
"Time zone": "Часовий пояс",
|
||||
"Week starts on": "Тиждень починається з",
|
||||
"Monday": "Понеділок",
|
||||
"Tuesday": "Вівторок",
|
||||
"Wednesday": "Середа",
|
||||
"Thursday": "Четвер",
|
||||
"Friday": "П'ятниця",
|
||||
"Saturday": "Субота",
|
||||
"Sunday": "Неділя",
|
||||
"12-hour clock (6:23 PM)": "12-годинний формат (6:23 PM)",
|
||||
@@ -721,10 +714,8 @@ export const catalog: Catalog = {
|
||||
"Manage labels": "Керування мітками",
|
||||
"Create “{name}”": "Створити «{name}»",
|
||||
"Type a name to create your first label.": "Введіть назву, щоб створити першу мітку.",
|
||||
"Labels are IMAP keywords stored on your messages, so they sync to other clients. Names and colours are kept in this browser.": "Мітки — це ключові слова IMAP, які зберігаються в самих листах і синхронізуються з іншими клієнтами. Назви та кольори залишаються в цьому браузері.",
|
||||
"New label": "Нова мітка",
|
||||
"Delete label": "Видалити мітку",
|
||||
"PDF": "PDF",
|
||||
"Large attachments may be rejected by some servers": "Деякі сервери відхиляють великі вкладення",
|
||||
"Images are stored in your Files (folder “ihasmail”) and embedded when you send.": "Зображення зберігаються у ваших Файлах (тека «ihasmail») і вставляються під час надсилання.",
|
||||
"Thanks for your message. I'm away until … and will reply when I'm back.": "Дякую за лист. Мене немає до … і я відповім після повернення.",
|
||||
@@ -858,7 +849,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.": "Тут показано лише мови, якими перекладено ihasmail, тому список зростає разом із перекладами, а не випереджає їх: мова без текстів змусила б сторінку стверджувати, що вона написана мовою, якою не є.",
|
||||
"tell us about it": "повідомте нам",
|
||||
"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}.": "Цей переклад зроблено ШІ й не перевірено носієм мови, тому його позначено як Beta, доки хтось його не підтвердить. Про все, що звучить неправильно, варто повідомити — {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} — це палітра з {site}, з якою починає новий обліковий запис. Тема темна, тому скрізь, де це важливо, вважається темною, а акцентний колір нижче застосовується поверх неї.",
|
||||
"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.": "Власна версія ihasmail — це дата коміту, з якого його зібрано, і вказівка, звідки цей коміт узявся: {example} зібрано з коміту від 30 серпня 2026 року, що надійшов через pull request 129. Коміт, який надійшов інакше, несе замість цього короткий SHA — {sha}. Версія навмисно нічого не повідомляє про Stalwart; те, що цій збірці потрібно від сервера, вказано рядком вище.",
|
||||
|
||||
// ── Composer status, calendar title ────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user