Back to Dyad

i18n / Locales

rules/i18n.md

1.11.01.0 KB
Original Source

i18n / Locales

  • Translation keys are typed from the en locale's common/settings/chat/home/errors JSON files (see src/i18n/types.ts), so npm run ts catches a call site referencing a key you renamed in en — but nothing catches the old key left behind in the other four locales. When renaming a key, grep every locale for the old name. Adding a nested namespace object whose name collides with an existing flat key (e.g. adding a "searchChats": {...} object when a flat "searchChats" string already exists) silently changes t("searchChats") to return an object, breaking unrelated components with error TS2322: Type 'unknown' is not assignable to type 'string'. Grep the en locale for the name before adding a namespace.
  • Every locale must be updated together: en, es, ko, pt-BR, zh-CN each have the same JSON files under src/i18n/locales/<locale>/.
  • New chat tool cards should follow the DyadGit.tsx pattern (useTranslation("chat") + t("...") keys); older cards like DyadGrep.tsx predate i18n and are not the reference.