What you get
- Translate hundreds of doc files in one overnight run — with per-file checkpoint and automatic recovery if Claude's quota resets mid-night. Files are grouped into ordered batches called tiers, so you can review the showcase content (READMEs, main guides) before shipping the rest.
- Keep terminology consistent across every file — a locked glossary prevents the model from translating
loopascyclein chapter 3 butloopin chapter 12. Cross-file drift is rejected at commit time. - Preserve internal links, slash commands, and code identifiers byte-for-byte — validators refuse to merge a translation that broke a frontmatter key or renamed
createClienttocréerClient. - Translate code-comments without touching the code itself — your source files never reach Claude raw ; only the comments do. Imports, function names, and syntax stay byte-identical.
- Editorial scaffolding so you keep control —
repoglot scanemits a per-file confidence-graded manifest you review before committing budget ;repoglot glossaryseeds a frequency-ranked starting draft for your editorial pass.
Install
One-liner — clones the repo into ~/.repoglot and symlinks repoglot into ~/.local/bin:
curl -fsSL https://raw.githubusercontent.com/christopherlouet/repoglot/main/install.sh | bash
Or, for the trust-but-verify crowd:
git clone https://github.com/christopherlouet/repoglot.git
cd repoglot
make install
Requires git, python3 with PyYAML, make. The claude CLI is needed at translation time.
The CLI surface
A single binary, ten subcommands. A real demo is on the roadmap for a future release ; for now, here is what --help surfaces :
$ repoglot --help
Usage: repoglot <command> [options]
Commands:
init Bootstrap a project : scan + glossary draft + blacklist
scan Produce i18n-manifest.yaml for a repo
glossary Build a frequency-ranked glossary draft from the manifest
lock Lock the glossary after manual review
inventory Generate inventory.json from the manifest (--from-manifest)
batch Translate a tier (auto-routes per profile)
run One-shot pipeline : lock + inventory + batch (dry-run by default)
status Show migration progress dashboard
verify Run validators on a translated file
pr Open a PR for a translated tier
When to use repoglot — and when not to
| Your situation | Tool that fits |
|---|---|
| Ship a product (Next.js / React / Vue / Flutter), need i18n JSON keys translated for end users | A full-product i18n SaaS like lingo.dev |
Want a single README.md translated, no glossary, no structural enforcement |
A plain LLM call or a Markdown-only translator |
| Translate a JSON i18n bundle and that's the whole job | A JSON-focused tool (ai-i18n, i18n-ally, …) |
| Maintain an OSS repo with docs + code-comments + maybe i18n strings, hundreds of files, polyglot stack, and translation drift across them is not acceptable | repoglot |
If your needs map cleanly to one of the other tools, use that. repoglot is built for the seam between them.