Instead of one-shot translation, Jta implements a 3-step cycle: 1. Translate 2. AI evaluates its own work (accuracy, fluency, style, terminology) 3. AI applies its own suggestions to improve
The trade-off: 3x API calls, but significantly better quality. For our production i18n files, this eliminated ~90% of manual fixes we used to do.
GitHub: https://github.com/hikanner/jta
Ronanxyz•13h ago
Traditional translation: Source → LLM → Done Jta's approach: Source → LLM → LLM self-critique → LLM improvement
Here's a real example:
*Step 1: Initial Translation* ``` Source: "Welcome to {app_name}" Translation: "欢迎使用 {app_name}" ```
*Step 2: AI Self-Critique* The AI analyzes its own work as an expert reviewer: ``` "The translation '欢迎使用' is accurate but could be more natural. Consider '欢迎来到' which conveys a warmer, more inviting tone that better matches the welcoming nature of 'Welcome to'." ```
*Step 3: AI Self-Improvement* ``` Improved: "欢迎来到 {app_name}" ```
This isn't post-processing with static rules—it's the AI acting as its own expert reviewer. The same model that translated understands the context, nuances, and challenges, making it uniquely qualified to critique and improve its own work.
*Why it works:* - *Context awareness*: The AI knows what it was trying to achieve - *Dynamic analysis*: Identifies issues specific to each translation's context - *Actionable feedback*: Generates specific improvements, not generic fixes - *Iterative quality*: Every translation gets a complete review-and-refine cycle ```
## Automatic Terminology Detection
One of the biggest pain points in i18n: inconsistent terminology. Jta solves this by using the LLM to analyze your source file and automatically identify:
*Preserve Terms* (never translate): - Brand names: "GitHub", "OAuth", "MyApp" - Technical terms: "API", "JSON", "HTTP"
*Consistent Terms* (always translate the same way): - Domain terms: "workspace" → "工作空间" (always) - Feature names: "credits" → "积分" (consistent across all strings)
The AI saves these to `.jta/terminology.json`:
```json { "version": "1.0", "sourceLanguage": "en", "preserveTerms": ["GitHub", "API", "OAuth"], "consistentTerms": ["repository", "commit", "pull request"] } ```
Then creates language-specific translation files:
```json // .jta/terminology.zh.json { "translations": { "repository": "仓库", "commit": "提交", "pull request": "拉取请求" } } ```
All future translations automatically use this dictionary. You can manually refine it, and the AI will respect your choices. This ensures 100% consistency across thousands of strings.
## Incremental Translation (80-90% Cost Savings)
Real-world i18n workflow: 1. Release 1.0: Translate 500 strings 2. Update 1.1: Add 10 new strings, modify 5 strings 3. Problem: Most tools re-translate all 500 strings
Jta's incremental mode: - Detects new keys (10 strings) - Identifies modified content (5 strings) - Preserves unchanged translations (485 strings) - Only translates 15 strings
*Result: 80-90% API cost reduction on updates*
Usage is dead simple:
```bash # First time: Full translation jta en.json --to zh
# After updates: Incremental (saves cost) jta en.json --to zh --incremental
# Re-translate everything if needed (quality refresh) jta en.json --to zh ```
The tool intelligently diffs the source file against existing translations, maintaining a perfect sync while minimizing API calls.
*Best practices:* - Development: Use `--incremental` for frequent updates - Production release: Use full translation for maximum quality - CI/CD: Use `--incremental -y` for automated updates
This makes Jta practical for continuous i18n workflows where you're updating translations multiple times per day.