i18n
CI/CD Pipeline / Build and Push PocketBase Docker Image (push) Successful in 8s
CI/CD Pipeline / i18n Catalog Check (push) Failing after 10s
CI/CD Pipeline / Build and Push App Docker Image (push) Skipped
CI/CD Pipeline / Deploy to Kubernetes (push) Skipped

This commit is contained in:
yohlo
2026-08-08 15:29:40 -07:00
parent 22c282d8fa
commit 0a7b5fa00f
178 changed files with 13099 additions and 1285 deletions
+23
View File
@@ -0,0 +1,23 @@
# FLXN
## i18n (Lingui v6) — applies to every user-facing string
Any change that adds, edits, or removes user-visible text must follow the
`i18n` skill (`.claude/skills/i18n/SKILL.md`): wrap with context-bound Lingui
macros, then `bun run extract`, translate new entries in every non-`en`
locale, and `bun run i18n:check`. Adding a language: use the `add-language`
skill.
Hard rules (full detail in the skill):
- Only `Trans`/`Plural`/`useLingui` from `@lingui/react/macro` and `msg` from
`@lingui/core/macro`. Never global `t`/`plural`/`select` from core/macro
(SSR locale bleed).
- `useLingui()` at top level of components/hooks only; add `t`/`i18n` to memo
dep arrays.
- Never hand-edit msgids or `src/locales/en/messages.po` (generated).
- vite.config.ts babel plugin order (lingui before react-compiler) is
load-bearing.
- `LinguiProvider` stays ABOVE `AuthProvider` in providers.tsx (localized
query hooks call useLingui), and `__root`'s `head()` must never read
`match`/context (circular route-type inference breaks beforeLoad typing).