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
@@ -1195,6 +1195,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": "下書きを保存しました",