Check component props for untranslated literals, and fail on a finding

i18n-literals checked title, aria-label, placeholder and alt on elements,
but not the same English passed to a component, so a MenuItem label or a
Popover ariaLabel written as a literal went through. It also excused a
literal that happened to be a catalogue key. That exemption is meant for
English held in a constant and translated where it renders, and a literal
written straight into a JSX attribute has no such render site. No
component passes its props through t(). And neither half of i18n:check
was run with --check, so a finding printed and the script still exited 0.

Component props are checked now, a key no longer excuses a literal in an
attribute, and both scripts run with --check. That found 28 strings
rendering English in every language: 19 already had keys and are wrapped,
and 9 are new keys in all nine catalogues. The contact editor's Save and
Saving… buttons are wrapped as well, on the same line.
This commit is contained in:
2026-09-14 08:03:12 -07:00
parent af092b3942
commit ac4c4bd267
20 changed files with 117 additions and 23 deletions
+9
View File
@@ -1189,6 +1189,15 @@ export const catalog: Catalog = {
"Resize panes": "Изменить размер панелей",
"Resize message list": "Изменить размер списка писем",
"Resize sidebar": "Изменить размер боковой панели",
"Hide from list": "Скрыть из списка",
"Show in list": "Показать в списке",
"Stop trusting sender images": "Больше не доверять изображениям отправителя",
"Always show images from sender": "Всегда показывать изображения отправителя",
"Collapse all": "Свернуть все",
"Expand all": "Развернуть все",
"Send now instead": "Отправить сейчас",
"Switch to plain text": "Переключиться на обычный текст",
"Switch to rich text": "Переключиться на форматированный текст",
"QR code": "QR-код",
"Draft discarded": "Черновик удалён",
"Draft saved": "Черновик сохранён",