Conversation
PR 101305 — feat(bots): add German (de) bundle for the Bot Mode plugin. Adds a full Non-blocking observations:
|
The hermes-bots plugin ships its own message catalog with no per-key fallback, so a German desktop user sees the entire Bot Mode surface in English even once a `de` UI locale is selected. Adds the full `de` bundle (183 keys, mirroring `en`) and registers it in BOTS_LOCALES. The en/ja/zh/zh-hant bundles are untouched. Two test changes, both prompted by review on the first revision: i18n.test.ts named its locales one by one, so a new bundle was covered by nothing until someone remembered to edit the test -- which is why `ru` has no entry there today. It now derives the translated bundles from BOTS_LOCALES and covers `de`, `ru` and anything added later untouched. That assertion immediately caught a real gap: `group.slashCommandsUnsupported` landed upstream after this branch was first written and was missing here. 'tools.skillsHub' leaves the echo-check samples. 'Hermes Skills Hub' is a product name and is identical in German; asserting it differs from English tests the brand, not the translation. It stays valid for ja/zh/zh-hant via the remaining three samples. Depends on `de` being present in the desktop Locale union, which the open desktop-locale PRs provide; on its own this does not compile.
|
Thanks — both observations acted on. Pushed a revision; the branch is now on current Key-parity is now a test, not a convention. You were right that the type annotation alone does not hold the line, and the moment I wrote the assertion it caught a real defect in my own branch. The existing const ja = BOTS_LOCALES.ja
const zh = BOTS_LOCALES.zh
const zhHant = BOTS_LOCALES['zh-hant']So a new bundle is covered by nothing until someone remembers to edit the test — which is why there is no const translated = Object.entries(BOTS_LOCALES).filter(([id]) => id !== 'en')
What that immediately caught: One test change beyond the fix, flagged explicitly: I removed On the mixed-English fragments — Cron, Thread, Skills Hub, Bot are deliberate. They are the terms German-speaking users of this product actually use; translating them ("Fadengespräch") would read worse, not better. Verification (with
The dependency on the |
d319f2b to
1f4b367
Compare
Extend the existing Bot Mode catalogs, preserving schedule syntax, profile routes, capability IDs and user content. Cover locale switches through the real scheduling and editor components. Builds on the landed infrastructure by OutThisLife (#96726/#96878) and teknium1/Vadim Comanescu (#113430); report by NealZhouPanda (#88798). No wholesale supersede of #90810 or #101305.
Keep the stock selector and English JSONL authoritative. Add zh, zh-hant and ja display copy at each personality rotation position; preserve custom personality names. Reuse core skills-hub translations for advanced settings. Reported by NealZhouPanda in #88798; related broader work #90810 by Oliver Hees and #101305 by Euterer remains independent and is not superseded.
The
hermes-botsplugin ships its own message catalog (BOTS_LOCALES) withen,ja,zhandzh-hant. Unlike the main desktop catalog, plugin catalogs have no per-key fallback — a bundle is either complete or absent. So even with a German UI locale selected, the entire Bot Mode surface stays English: the roster, group chats, routines, cron jobs, delete dialogs, all of it.This adds the
debundle (182 keys, mirroringenexactly) and registers it inBOTS_LOCALES.Dependency — please read before reviewing
This does not compile on
mainas it stands, and that is expected.'de'is not part of theLocaleunion yet:That registration is exactly what the open desktop-locale work provides (#51762, and #92909 materializing it). I deliberately did not bundle the
Locale/catalog.ts/languages.tschanges here — that would make this a sixth competing German-locale PR, and there are already five open. This PR is strictly the plugin surface none of them cover.Merge order: land any of the desktop-locale PRs first, then this one applies cleanly.
Verification
Since the branch cannot be green standalone, I verified it against a locally registered
de(Localeunion +catalog.tsentry — the same two lines the desktop PR adds, reverted afterwards, not part of this diff):tsc --noEmit -p tsconfig.json: 0 errors inhermes-bots/i18n.tsvitest run src/plugins/hermes-bots: 59 files, 564 tests passedWithout that registration, the single
TS2353above is the only error — nothing else in this file is at issue.Notes on the translation
locales/de.yaml.en; every interpolating value was checked to return the same shape.en/ja/zh/zh-hantbundles are untouched.If the maintainers would rather fold this into whichever desktop-locale PR lands, I'm happy to close this and hand the bundle over instead — it applies as a single file.