@proulr/rosetta
v0.1.95
Published
Fonte única de i18n do Proulr (padrão Rosetta): copy de produto para BFFs e app nativo.
Readme
@proulr/rosetta
Fonte única de i18n do Proulr (padrão Rosetta): copy de produto para BFFs e app nativo.
- GitHub: https://github.com/saviorbp/proulr-rosetta
- npm: https://www.npmjs.com/package/@proulr/rosetta
- Guia: docs/ROSETTA.md
- CI/CD: docs/npm-publish-cicd.md
Formato
src/locales/<locale>/<domain>.json # editar (flat JSON)
src/generated/locale-messages.ts # gerado — Metro importa só .tspt-BR = source of truth das keys. Após editar JSON: npm run locale:generate.
Uso rápido
import { t, tFormat, resolveLocaleFromQuery } from '@proulr/rosetta';
const locale = resolveLocaleFromQuery(ctx.query);
t('discover.filter.all', locale);Scripts
npm run locale:add -- es # novo idioma (JSON vazio + wiring)
npm run locale:generate # regenera types/catalog
npm run validate:locales # parity de keys + imports (pre-commit)
npm run check:locales:strict # sem valores vazios
npm run typecheckPre-commit
Ao commit, o hook roda validate:locales:
- Key nova → deve existir em todos os idiomas
- Key removida → deve sumir de todos os idiomas
- Locale novo → todos os domains +
PROULR_LOCALES+ imports emcatalog.ts
Regras
- BFFs/app só consomem
t()— zero dicionário local - Default / fallback:
pt-BR
