AI-powered i18n translator for JSON files. Translate your JSON files into multiple languages using advanced AI models.
- Visual JSON Structure Viewer: Selectively exclude nodes from translation
- Multi-Language Support: Translate to 40+ languages with custom language support
- AI-Powered Translation: Uses OpenAI, Anthropic, Mistral, and OpenRouter models
- Comprehensive Model Support: Supports all OpenAI models including GPT-5 series
- Secure API Key Storage: OS-level secure storage for API keys
- Progress Tracking: Real-time progress indicators during translation
- File Management: Automatic file naming with language codes and overwrite protection
Download the latest release from GitHub Releases and install:
- macOS: Download the
.dmgfile, open it, and drag LocaleKit to Applications - Windows: Download the
.msiinstaller and run it - Linux: Download the
.AppImageor.debpackage for your distribution
- Select a source JSON file
- Select an AI model
- Review and exclude nodes you don't want translated
- Select target languages
- Click Translate
- Your JSON is automatically converted to TOON (Token-Oriented Object Notation). A more compact format that reduces API payload size and token usage, making translations faster and more cost-effective
- Large files are automatically split into smaller chunks, translated separately, and then merged back together to prevent timeouts and handle files of any size
- Files are saved to the location of the source file
- If any languages fail, they remain selected in the Language Selector so you can retry immediately after reviewing the errors
- After completion, you'll see a summary of languages with warnings so you can inspect them before proceeding
Configure API keys and manage languages in Settings:
- App Settings Tab: Change the app language
- Languages Tab: Add, edit, or delete custom languages
- API Keys Tab: Manage API keys for different providers
- Usage Tab: View usage statistics and manage usage period
Lading file and JSON Structure
Selecting languages
Translation progress and logs
- Node.js 20+
- pnpm
- Rust (for Tauri)
# Install dependencies
pnpm install
# Run in development
pnpm tauri:dev
# Build for production
pnpm tauri:build- Add the language code to the
getAvailableLocales()function inlib/i18n/locale.ts:
export function getAvailableLocales(): string[] {
return ["en_gb", "tr_tr", "de_de", "fr_fr", "your_locale_code"];
}- Add the locale name mapping to the
getLocaleName()function in the same file:
export function getLocaleName(locale: string): string {
const names: Record<string, string> = {
en_gb: "English (UK)",
tr_tr: "Türkçe (Turkish)",
de_de: "Deutsch (German)",
fr_fr: "Français (French)",
your_locale_code: "Your Language Name",
};
return names[locale] || locale;
}Important: You must update both functions. If you only add the locale to getLocaleName() but forget to add it to getAvailableLocales(), the language won't appear in the settings.
- Create a new JSON file in the
messages/folder named{locale_code}.json(e.g.,en_us.json) with the same structure as the existing language files. Copy the structure frommessages/en_gb.jsonand translate all the values.
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Test thoroughly
- Submit a pull request
MIT License
- Issues: GitHub Issues
- Releases: GitHub Releases


