i18nizer is a developer-first CLI that extracts translatable strings from JSX/TSX files, automatically generates i18n JSON files, and rewrites your components to use t().
It is designed to be fast, scriptable, CI-friendly, and completely independent from your project configuration.
- OpenAI
- Google Gemini
- Hugging Face (DeepSeek)
npm install -g i18nizerRequires Node.js 18+
i18nizer keys --setOpenAI <YOUR_OPENAI_API_KEY>
i18nizer keys --setGemini <YOUR_GEMINI_API_KEY>
i18nizer keys --setHF <YOUR_HUGGING_FACE_API_KEY>Keys are stored inside:
[HOME]/.i18nizer/api-keys.json
i18nizer extract <file-path> --locales en,es,fr --provider openaiFlags:
--locales→ Languages to generate (default:en,es)--provider→openai | gemini | huggingface(optional)
export function Login() {
return (
<div>
<h1>Welcome back</h1>
<p>Please sign in to continue</p>
<button>Sign in</button>
</div>
);
}import { useTranslations } from "next-intl";
export function Login() {
const t = useTranslations("Login");
return (
<div>
<h1>{t("welcomeBack")}</h1>
<p>{t("pleaseSignInToContinue")}</p>
<button>{t("signIn")}</button>
</div>
);
}{
"Login": {
"welcomeBack": "Welcome back",
"pleaseSignInToContinue": "Please sign in to continue",
"signIn": "Sign in"
}
}.i18nizer/
├─ api-keys.json
├─ tsconfig.json
└─ messages/
├─ en/
│ └─ Login.json
├─ es/
│ └─ Login.json
└─ fr/
└─ Login.json
- Works with JSX & TSX
- Rewrites components automatically (
t("key")) - Always generates English camelCase keys
- Supports any number of locales
- Isolated TypeScript parsing (no project tsconfig required)
- Friendly logs, and errors
- Configurable output directory
- Framework support (Vue, Svelte)
- i18n library presets (
next-intl,react-i18next) - Watch mode
- Non-AI fallback mode
- API keys are never committed
- JSON files are stored per project in
.i18nizer/ - Designed for incremental adoption
Made with ❤️ by Yoannis Sánchez Soto