Everything your CLI says
Command descriptions, flag help, usage text, Cobra’s built-in commands and the errors it prints are translated automatically. Your own messages go through a few helpers at your output chokepoints.
$ LANG=ja_JP.UTF-8 taskctl --help
taskctl は小さなタスクリストを管理します。
使い方:
taskctl [command]
利用可能なコマンド:
add タスクを追加します。
done タスクを完了にします。
list タスクを一覧表示します。
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:
$ taskctl add --helpAdd 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")$ taskctl add --helpタスクを追加します。
使い方: taskctl add <title> [flags]
フラグ: --due string 期限 (YYYY-MM-DD 形式)。 -h, --help add のヘルプ --priority level タスクの優先度: level は low、normal、high のいずれかです。 (デフォルト: "normal")$ taskctl add --helpEine Aufgabe hinzufügen.
Verwendung: taskctl add <title> [flags]
Optionen: --due string Fälligkeitsdatum im Format YYYY-MM-DD. -h, --help Hilfe zu add --priority level Priorität der Aufgabe: level ist low, normal oder high. (Standard: "normal")$ taskctl addError: se aceptan 1 argumento(s), se recibieron 0Uso: taskctl add <title> [flags]
Opciones: --due string Fecha de vencimiento en formato AAAA-MM-DD. -h, --help ayuda de add --priority level Prioridad de la tarea: level es low, normal o high. (predeterminado: "normal")Command names, flags, placeholders and your users’ data stay exactly as they are.
Everything your CLI says
Command descriptions, flag help, usage text, Cobra’s built-in commands and the errors it prints are translated automatically. Your own messages go through a few helpers at your output chokepoints.
No runtime cost
Catalogs are compiled in with go:embed. Nothing is downloaded and nothing is reported. English
output is unchanged, and other languages add a few milliseconds at startup.
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.
Safe by design
Every translation is checked twice, by the service and again at runtime. Placeholders, flags and code spans must survive intact, and output that isn’t yours is never touched.
Human edits win
Translations are plain JSON in your repository. Correct any entry in a pull request, and Localizer never overwrites it.
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.
Connect your repository. Add the GitHub Action to a workflow or install the GitHub App.
Merge the onboarding pull request. It adds .localizer.yml, a locales/ directory with one
catalog per language, and the one-line integration.
Keep shipping. When your strings change, the translations pull request updates itself. Review it and merge it like any other change.
Your users see their language. Localizer reads their environment and OS settings, and falls back to English.
© 2026 Snizyx Software LLC