Commit Graph

2 Commits

Author SHA1 Message Date
diegosouzapw
fb963154ea fix(i18n): auto-load .env in run-translation.mjs so npm scripts work standalone
Adds a tiny built-in dotenv loader at the top of run-translation.mjs that
parses the repo-root .env file into process.env (without pulling dotenv
as a dependency). Existing process.env values still take precedence, so
shell/CI overrides keep working.

Before: `npm run i18n:run` failed with "Missing required env var:
OMNIROUTE_TRANSLATION_API_URL" unless the operator exported the vars in
the current shell.

After: the npm scripts (i18n:run, i18n:run:dry) pick up .env automatically.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 17:41:57 -03:00
diegosouzapw
afeee02e4a feat(i18n): add hash-based incremental docs translator
Adds scripts/i18n/run-translation.mjs — the new docs translation pipeline.

Reads sources from CLAUDE.md, GEMINI.md, AGENTS.md, CONTRIBUTING.md, SECURITY.md,
CODE_OF_CONDUCT.md, README.md at the repo root, plus all .md files under
docs/<subfolder>/ (recursing one level). Writes targets to
docs/i18n/<locale>/<source-path>.

Behavior:
- SHA-256 hash per source + per target stored in .i18n-state.json
- Re-runs only retranslate sources whose hash changed (or whose target file
  is missing)
- Excludes docs/i18n/, docs/screenshots/, docs/superpowers/, docs/diagrams/,
  docs/reports/ subtrees + I18N.md and README.md filenames
- Backend reads OMNIROUTE_TRANSLATION_* env vars (URL, API key, model,
  timeout, concurrency); never logs the API key
- Chunks markdown on top-level ## headings before sending to the LLM
- Pre-formats translator output with Prettier so lint-staged commit hooks
  cannot mutate file content out from under the hash registry

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 16:54:19 -03:00