fix(i18n): translate source cleanup, source health and diagnostics strings (#1884)

* fix(i18n): translate source cleanup, source health and diagnostics strings

Translate every English-identical SOURCE_CLEANUP, SOURCE_HEALTH and
PLAYBACK_DIAGNOSTICS value in all 18 locales, plus the external playback
dock statuses (the same strings as the diagnostic ones), the EPG source
list strings, and leftover English in hu, ko and el. The identical-English
baseline drops 973 entries (2106 -> 1133) and gains none.

Add tools/i18n/check-duplicates.mjs (pnpm run i18n:duplicates), a report
of English strings defined under several keys whose translations differ
per locale, and align drifted wordings: 101 diverging groups -> 65.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(i18n): call cleaned-up zh/zhtw sources invalid, not unactivated

The cleanup dialog lists expired and disabled accounts too, so 未激活 /
未啟用 ("not activated") misexplained why a source is offered for deletion.
Use 失效 ("no longer valid") in the title and the confirmed group heading.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(i18n): one zh/zhtw wording for copying the stream URL

The playback diagnostics button said 复制 URL / 複製 URL while the
channel details dialog (new on master) says 复制流 URL / 複製串流網址
for the same action; use the details dialog wording in both places.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
4grayandClaude Opus 5.5 authored and GitHub committed 2026-10-11 09:59:50 +02:00
1 parent 37df7aceff
commit afd7a5f331
25 files changed
+1331 -2000

No files matched your search

+7
View File
@@ -259,6 +259,7 @@ pnpm run coverage:e2e:v8:web
pnpm run i18n:validate # checker unit tests, then the check (CI)
pnpm run i18n:check # the check only: locale drift, then key usage
pnpm run i18n:usage # key usage only
pnpm run i18n:duplicates # report: one English string, diverging translations
pnpm run i18n:baseline:update # deliberate: rewrite the English-identical baseline
```
@@ -296,6 +297,12 @@ a template literal such as `` `EPG.DIALOG.${name}` `` must name a group. Keys
built entirely at runtime are not checked. CI runs `pnpm run i18n:validate` in
the unit test job.
`pnpm run i18n:duplicates` (`tools/i18n/check-duplicates.mjs`) is a report,
not a gate: it lists English strings defined under several keys that a locale
translates differently. Align drifted wording in the locale files; a group may
stay when context needs another grammatical form. `--max <n>` makes it fail
above n groups.
## Performance
```bash