Skip to content

Your CLI, in your users’ language

Localizer translates a CLI’s own strings (help, flags, messages, errors) with AI, keeps the translations in sync through pull requests, and ships them inside your binary or package. One line of code, no network calls at runtime. Go with Cobra; Python with Typer, Click or argparse.
main.go
root := newRootCmd()
localizer.Localize(root, locales.FS)
if err := root.Execute(); err != nil {
os.Exit(1)
}

Your users get their language from their OS settings, with nothing to configure:

Terminal window
$ taskctl add --help
Add a task.
Usage:
taskctl add <title> [flags]
Flags:
--due string Due date in YYYY-MM-DD format.
-h, --help help for add
--priority level Priority of the task: level is low, normal or high. (default "normal")

Command names, flags, placeholders and your users’ data stay exactly as they are.

Everything your CLI says

Command descriptions, flag help, usage text, your framework’s built-in commands and the errors it prints — Cobra, kong, urfave/cli, Typer, Click or argparse — are translated automatically. Your own messages go through a few helpers at your output chokepoints.

No network at runtime

Catalogs are compiled in with go:embed or shipped inside your Python package: nothing is downloaded and nothing is reported. English output is unchanged; other languages add a few milliseconds.

Always in sync

When a push adds or changes strings, Localizer translates just those and updates one pull request. Strings you delete are removed from the catalogs, with a guard against dropping too many at once.

Safe by design

Every translation is checked twice, by the service and again at runtime. Placeholders, flags and code spans must survive intact, and text that matches no catalog entry passes through unchanged.

Human edits win

Translations are plain JSON in your repository. Correct any entry, and Localizer keeps your version; only an entry that fails validation is replaced.

No keys to leak

You authenticate through the GitHub App or your workflow’s short-lived OIDC token, so there is no secret to store. Localizer serves open-source repositories only.

  1. Connect your repository. Add the GitHub Action to a workflow or install the GitHub App.

  2. Merge the onboarding pull request. It adds .localizer.yml, a locales package with one catalog per language, and the one-line integration.

  3. Keep shipping. When your strings change, the translations pull request updates itself. Review it and merge it like any other change.

  4. Your users see their language. Localizer reads their environment and OS settings, and falls back to English.

Localizer runs on forks of two large open-source CLIs. Browse their catalogs, or read the pull request it keeps up to date: the body lists what changed per language, what failed validation and which model translated.