The only i18n automation tool with intelligent context awareness and enterprise self-hosted LLM support. Unlike simple ChatGPT wrappers, TranslatorSync understands your project and preserves your existing translations.
🎯 9.3/10 quality • ⚡ 1000x faster than manual • 💰 50,000x cheaper than services • 🏢 Enterprise-ready
- Auto-detects project context - Reads package.json & README to understand your app
- Smart translation adaptation - Adjusts style, tone, and terminology automatically
- Learns from existing translations - Maintains consistency with your current translation style
- Context-driven quality - UI apps get concise translations, docs get natural flow
- Length-smart - Preserves UI space constraints without hardcoded limits
- Technical term intelligence - Knows when to keep English terms vs translate
- 1000x faster than manual translation (1.1s vs 30 min)
- 50,000x cheaper than professional services ($0.0001 vs $5 per translation)
- Only translates missing keys - Never overwrites existing translations
- Incremental workflow - Add new keys, run once, done
- Zero configuration - Works perfectly out of the box
- Never breaks builds - Perfect JSON/file format preservation
- 🌐 Universal Format Support - JSON (React/Vue/Angular) and Fluent (.ftl)
- 🤖 Any OpenAI-Compatible API - Cloud providers (OpenAI, DeepSeek) or self-hosted for complete data control
- 🔄 Smart Sync Strategy - Only missing keys, preserves existing translations
- 🎯 Perfect Variable Handling -
{{variables}}
,{variables}
,%{variables}
, etc. - 📁 Any Project Structure - Flat files, nested directories, custom patterns
- ✏️ Easy Customization - Edit project description to fine-tune translation style
- 🔄 Easy Re-translation - Delete keys to regenerate, clear files to start fresh
- 🔒 Production Ready - Comprehensive error handling, retry logic, telemetry
- 9.3/10 average quality - Often better than original human translations
- Context-aware translations - Understands your project domain and audience
- Consistent terminology - Maintains style across all languages
- Smart length preservation - UI elements stay within space constraints
- Cultural appropriateness - Native-feeling translations, not literal conversions
Feature | TranslatorSync | i18n-ally | Transmart | Others |
---|---|---|---|---|
Auto-translate missing keys only | ✅ | ❌ Manual | ❌ | |
Preserves existing translations | ✅ Always | ✅ | ❌ Dangerous | Varies |
AI with context awareness | ✅ Full context | ❌ | ❌ | ❌ |
Understands your project | ✅ Reads docs | ❌ | ❌ | ❌ |
Self-hosted LLM support | ✅ Exclusive | ❌ | ❌ | ❌ |
Multiple AI providers | ✅ 3+ | ❌ | ❌ OpenAI only | Limited |
Production quality | ✅ 92% coverage | - | - | - |
🏢 Enterprise-Ready with Self-Hosted LLMs
- Only tool supporting private LLM infrastructure
- Complete data control - no external APIs required
- Works with any OpenAI-compatible endpoint
🧠 Intelligent Translation (Not Just ChatGPT Wrapper)
- Analyzes your README and package.json
- Uses existing translations for consistency
- Adapts to your project type automatically
✅ Respects Your Work
- Never overwrites existing translations
- Only translates what's missing
- Preserves your formatting and structure
See detailed competitive analysis →
# Run without installation
npx translator-sync init
# Or install as dev dependency
npm install --save-dev translator-sync
# Run without installation
bunx translator-sync init
# Or install as dev dependency
bun add --dev translator-sync
# Run directly
deno run -A npm:translator-sync init
Tested on Chatbot UI (React + Next.js + react-i18next):
English | Expected | TranslatorSync | Quality |
---|---|---|---|
"Settings" | "Configuración" | "Configuraciones" | 9/10 ⭐ |
"New Chat" | "Nueva conversación" | "Nuevo chat" | 8/10 ✅ |
"Export" | "Exportar" | "Exportar" | 10/10 🎯 |
"Stop generating" | "Detener generación" | "Dejar de generar" | 9/10 ⭐ |
Average Quality: 9.3/10 • Speed: 1.1 seconds • Cost: $0.0001
✅ Better than expected - Often improves on original translations!
✅ Context-aware - Understands it's a modern UI interface
✅ Length-smart - Automatically preserves space constraints
# Using npm/npx/bunx/deno
npx translator-sync init
-
Auto-detects project context from
package.json
description andREADME.md
- Suggests smart defaults based on your project type (UI, docs, API, etc.)
-
Stores raw project description in
.translator-sync.json
for full customization - You can edit the description during setup or anytime later for perfect context
On first run, TranslatorSync:
- Analyzes your project description using AI to extract key context
- Determines optimal translation approach: domain (UI/docs/marketing), tone (casual/formal), length constraints
- Learns from existing translations to match your established style and terminology
- Caches context settings for consistent future translations
# Run anytime after adding new keys
npx translator-sync # npm
bunx translator-sync # Bun
deno run -A npm:translator-sync # Deno
- Scans only missing keys - finds what exists in primary language but missing in others
- Preserves existing translations - never overwrites your current work
- Applies learned context - domain-appropriate style, consistent terminology, proper length
-
Handles variables perfectly - maintains
{{user}}
,{count}
,%{name}
exactly - Updates only what's needed - surgical precision, never breaks builds
-
Edit project description anytime in
.translator-sync.json
to refine translation style - Re-translate any key by simply deleting it from translation files
- Bulk re-translation by clearing entire language files
- Instant context updates - description changes apply to next translation run
- Consistent results - same keys always translate the same way
# Your typical workflow:
1. Add new English keys to your app
2. Run `npx translator-sync` (or bunx/deno equivalent)
3. All missing translations appear instantly
4. Deploy with confidence - zero broken builds
Perfect for:
- 🚀 Rapid development - Add features without translation delays
- 🔄 Continuous localization - Keep translations in sync as you build
- 🎯 A/B testing - Quickly translate experimental copy
- 🌍 Multi-language launches - Support new languages in minutes
# Using npm
npx translator-sync init
# Using Bun
bunx translator-sync init
# Using Deno
deno run -A npm:translator-sync init
🌐 TranslatorSync Setup
Select translation provider:
1. OpenAI (GPT-4.1-nano) - Best quality ✅
2. DeepSeek (DeepSeek-v3) - Budget-friendly
3. Other (see docs for more options)
? Enter choice (1-3): 1
? Enter your OPENAI API key: ***
? Primary language code (default: en): en
? Where are your translation files? ./locales
✅ Configuration saved to .translator-sync.json
# If installed as dependency, add to package.json scripts:
"scripts": {
"translate": "translator-sync"
}
# Then run:
npm run translate # npm
bun run translate # Bun
deno task translate # Deno (add to deno.json tasks)
# Or run directly:
npx translator-sync
bunx translator-sync
deno run -A npm:translator-sync
# With options:
npx translator-sync --dry-run --verbose
locales/
├── en/
│ └── translation.json
├── es/
│ └── translation.json
└── fr/
└── translation.json
locales/
├── en.json
├── es.json
└── fr.json
locales/
├── en/
│ ├── common.json
│ ├── dashboard.json
│ └── auth.json
└── es/
├── common.json
├── dashboard.json
└── auth.json
locales/
├── en.ftl
├── es.ftl
└── fr.ftl
TranslatorSync uses a .translator-sync.json
file:
{
"version": "1.0",
"provider": "openai",
"model": "gpt-4.1-nano",
"baseUrl": "https://api.openai.com/v1",
"primaryLanguage": "en",
"directories": ["./locales", "./public/locales"],
"options": {
"preserveFormatting": true,
"costWarningThreshold": 1.0,
"maxConcurrentRequests": 3
}
}
# Required
TRANSLATOR_API_KEY=your-api-key-here
# Provider configuration
TRANSLATOR_SERVICE=openai # Provider type
TRANSLATOR_MODEL=gpt-4.1-nano # Model name
TRANSLATOR_BASE_URL=https://api.openai.com/v1 # API endpoint
# Optional
LOG_LEVEL=info # debug, info, warn, error
NODE_ENV=production # Environment
Enterprise Note: Set TRANSLATOR_BASE_URL
to your internal LLM API endpoint for complete data control.
TranslatorSync works with any OpenAI-compatible API, including self-hosted models for enterprise security requirements.
Provider | Models | Security | Setup |
---|---|---|---|
OpenAI | gpt-4.1-nano, gpt-4.1-mini | Cloud service | API key required |
DeepSeek | deepseek-v3 | Cloud service | API key required |
Self-hosted | Any OpenAI-compatible | Full control | Custom base URL |
Enterprise LLM | Anthropic, Google, Azure | Private infrastructure | OpenAI-compatible wrapper |
For companies with security requirements or existing LLM infrastructure:
# Use your own hosted LLM API
export TRANSLATOR_API_KEY=your-internal-key
export TRANSLATOR_SERVICE=openai # Uses OpenAI-compatible format
export TRANSLATOR_BASE_URL=https://your-internal-llm.company.com/v1
export TRANSLATOR_MODEL=your-model-name
Benefits:
- No external API dependencies
- Complete data control and privacy
- Use existing enterprise LLM infrastructure
- Same functionality as cloud providers
Cloud Providers:
# OpenAI
export TRANSLATOR_API_KEY=sk-...
export TRANSLATOR_SERVICE=openai
export TRANSLATOR_MODEL=gpt-4.1-nano
# DeepSeek
export TRANSLATOR_API_KEY=sk-...
export TRANSLATOR_SERVICE=deepseek
export TRANSLATOR_MODEL=deepseek-v3
Self-hosted/Enterprise:
# Your internal LLM infrastructure
export TRANSLATOR_API_KEY=your-api-key
export TRANSLATOR_SERVICE=openai
export TRANSLATOR_BASE_URL=https://llm.yourcompany.com/v1
export TRANSLATOR_MODEL=your-model-name
Automatically preserves all variable formats:
-
React i18next:
{{name}}
,{{count}}
-
Vue i18n:
{name}
,{count}
-
React Intl:
{name}
-
Ruby i18n:
%{name}
-
Fluent:
{$name}
English (en/translation.json):
{
"welcome": "Welcome, {{name}}!",
"items": "You have {{count}} items",
"auth": {
"login": "Please log in to continue",
"error": "Invalid credentials"
}
}
Auto-translated Spanish (es/translation.json):
{
"welcome": "¡Bienvenido, {{name}}!",
"items": "Tienes {{count}} artículos",
"auth": {
"login": "Por favor inicia sesión para continuar",
"error": "Credenciales inválidas"
}
}
- Initial setup (1000 keys): ~$0.05-$0.10
- Regular sync (20 keys): ~$0.001-$0.005
- Monthly usage (100 keys): ~$0.01-$0.05
translator-sync
📁 locales/
Primary: en.json (1045 keys)
🔄 es.json - 20 missing keys
✅ Updated es.json
📊 Summary:
Translations: 20
Cost: $0.0006
Mode: Production
name: Sync Translations
on:
push:
paths: ["locales/en/**"]
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Sync Translations
env:
TRANSLATOR_API_KEY: ${{ secrets.TRANSLATOR_API_KEY }}
TRANSLATOR_SERVICE: openai
TRANSLATOR_MODEL: gpt-4.1-nano
run: |
npx translator-sync
- name: Commit Changes
run: |
git config --local user.email "bot@company.com"
git config --local user.name "Translation Bot"
git add locales/
git diff --staged --quiet || git commit -m "chore: sync translations [skip ci]"
git push
- Bun v1.2+ (primary runtime)
- Node.js 18+ (npm compatibility)
- TypeScript 5+
# Clone repository
git clone https://github.com/your-org/translator-sync.git
cd translator-sync
# Install dependencies
bun install
# Run tests
bun test
# Run linting
bun run check
# Build for production
bun run build
# Run all tests
bun test
# Run unit tests only
bun test tests/unit/
# Run integration tests only
bun test tests/integration/
# Run with coverage report
bun test --coverage
# Run with real API (requires API key)
TRANSLATOR_API_KEY=sk-... bun test tests/integration/llm/
TranslatorSync uses GitHub Actions for continuous integration:
- Automated testing on all PRs
- Code coverage enforcement (minimum 50%)
- Linting & formatting checks
- Type safety validation
- Security audits for dependencies
- Multi-platform testing (Ubuntu, macOS, Windows)
See CI/CD documentation for details.
# Technical documentation
translator-sync --context="technical"
# Marketing content
translator-sync --context="marketing"
# Specific tone
translator-sync --context="formal"
# Process multiple directories
translator-sync ./web/locales ./mobile/locales ./api/locales
# Large projects with rate limiting
translator-sync --max-concurrent=1 --delay=1000
# Review mode (manual approval)
translator-sync --review
# Quality scoring
translator-sync --quality-check
# Translation memory
translator-sync --use-memory
- ✅ JSON & Fluent support
- ✅ OpenAI, DeepSeek, Groq providers
- ✅ Variable preservation
- ✅ Cost tracking
- 🚧 Anthropic Claude support
- 🚧 Google Gemini support
- 🚧 Translation memory
- 🚧 Quality scoring
- 📋 Pluralization rules
- 📋 Context-aware translation
- 📋 Translation review workflow
- 📋 Custom translation models
We welcome contributions! Please see our Contributing Guide for complete documentation.
Note: This repository uses Jujutsu (jj) and master
as the default branch.
# Fork and clone your fork
jj git clone https://github.com/your-username/translator-sync.git
# Create new changelist from master
jj new master -m "feat: add amazing feature"
# Make changes and test
bun test
# Create bookmark and push for PR
jj bookmark create feat-amazing -r @
jj git push --bookmark feat-amazing --allow-new
- [ ] Privacy-First Telemetry - Anonymous usage analytics and automatic feedback gathering to improve the tool
MIT © TranslatorSync Contributors
- Built with Bun - Fast JavaScript runtime
- Powered by OpenAI, DeepSeek, Groq
- Inspired by the i18n community
Made with ❤️ for the internationalization community