5.7 KiB
5.7 KiB
Example: Basic Translation
This example demonstrates the most common use case: translating a JSON i18n file to multiple languages.
Scenario
User has locales/en.json containing English translations and wants to add Chinese, Japanese, and Korean support.
User Request
"Translate my en.json to Chinese, Japanese, and Korean"
Claude's Workflow
Step 1: Understand the Request
Claude recognizes:
- Task: Translation
- Source file: en.json (implied to be in locales/)
- Target languages: Chinese (zh), Japanese (ja), Korean (ko)
- Mode: First-time translation (full, not incremental)
Step 2: Locate the Source File
# Find JSON files in locale directories
find . -type f -name "en.json" \( -path "*/locales/*" -o -path "*/locale/*" -o -path "*/i18n/*" \)
Output:
./locales/en.json
Step 3: Check Environment
# Verify jta is installed
jta --version
If not installed:
# Install via Homebrew (macOS)
brew tap hikanner/jta && brew install jta
Check API key:
# Check if API key exists
if [[ -n "$OPENAI_API_KEY" ]]; then
echo "✓ API key found"
fi
Step 4: Preview Source File
# Show file structure
jq '.' locales/en.json | head -20
Output:
{
"app": {
"name": "My App",
"welcome": "Welcome to {appName}!"
},
"settings": {
"title": "Settings",
"language": "Language"
}
}
Step 5: Execute Translation
# Translate to Chinese, Japanese, and Korean
jta locales/en.json --to zh,ja,ko -y
What happens:
- Terminology Detection: Jta analyzes content and detects important terms
- Batch Processing: Splits into batches (default 20 keys per batch)
- Translation: Sends each batch to AI provider
- Agentic Reflection: AI evaluates and improves translations
- Output: Creates zh.json, ja.json, ko.json
Step 6: Monitor Progress
Console output:
📄 Loading source file...
✓ Source file loaded (100 keys)
📚 Loading terminology...
🔍 Detecting terminology...
✓ Detected 8 terms (3 preserve, 5 consistent)
🤖 Translating to Chinese (zh)...
Processing ━━━━━━━━━━━━━━━━━━━━ 100% (100/100)
✓ Chinese translation completed
🤖 Translating to Japanese (ja)...
Processing ━━━━━━━━━━━━━━━━━━━━ 100% (100/100)
✓ Japanese translation completed
🤖 Translating to Korean (ko)...
Processing ━━━━━━━━━━━━━━━━━━━━ 100% (100/100)
✓ Korean translation completed
💾 Saving translations...
✓ Saved to locales/zh.json
✓ Saved to locales/ja.json
✓ Saved to locales/ko.json
Step 7: Verify Results
# Check created files
ls -lh locales/*.json
Output:
-rw-r--r-- 1 user staff 2.3K en.json
-rw-r--r-- 1 user staff 2.8K zh.json
-rw-r--r-- 1 user staff 3.1K ja.json
-rw-r--r-- 1 user staff 2.9K ko.json
Validate JSON structure:
for file in locales/{zh,ja,ko}.json; do
if jq empty "$file" 2>/dev/null; then
echo "✓ $file is valid JSON"
fi
done
Step 8: Show Statistics
📊 Translation Statistics
Chinese (zh):
Total items: 100
Success: 100
Failed: 0
Duration: 45s
API calls: 15 (5 translate + 5 reflect + 5 improve)
Japanese (ja):
Total items: 100
Success: 100
Failed: 0
Duration: 48s
API calls: 15
Korean (ko):
Total items: 100
Success: 100
Failed: 0
Duration: 43s
API calls: 15
Total Duration: 2m 16s
Total API calls: 45
Estimated cost: ~$0.90 (using GPT-4o)
Terminology saved to .jta/ directory for future consistency.
Claude's Response to User
✅ Translation completed successfully!
I've translated your en.json to Chinese, Japanese, and Korean.
**Files created:**
- `locales/zh.json` (Chinese Simplified)
- `locales/ja.json` (Japanese)
- `locales/ko.json` (Korean)
**Statistics:**
- Total items: 100 per language
- Success rate: 100%
- Duration: 2 minutes 16 seconds
- API calls: 45 total (15 per language with Agentic reflection)
- Estimated cost: ~$0.90
**Terminology management:**
Jta detected 8 important terms and saved them to `.jta/` directory:
- Preserve terms (never translate): API, OAuth, JSON
- Consistent terms (translate uniformly): credits, workspace, settings, profile, template
All placeholders ({appName}), HTML tags, and URLs have been preserved in the translations.
Would you like me to show you a sample of the translations or make any adjustments?
Sample Translations
English (source)
{
"app": {
"welcome": "Welcome to {appName}!",
"description": "Manage your <b>workspace</b> settings"
},
"user": {
"credits": "You have {count} credits remaining"
}
}
Chinese (zh.json)
{
"app": {
"welcome": "欢迎来到 {appName}!",
"description": "管理您的<b>工作空间</b>设置"
},
"user": {
"credits": "您还有 {count} 积分"
}
}
Japanese (ja.json)
{
"app": {
"welcome": "{appName}へようこそ!",
"description": "<b>ワークスペース</b>の設定を管理"
},
"user": {
"credits": "残り {count} クレジットがあります"
}
}
Korean (ko.json)
{
"app": {
"welcome": "{appName}에 오신 것을 환영합니다!",
"description": "<b>워크스페이스</b> 설정 관리"
},
"user": {
"credits": "{count}개의 크레딧이 남아 있습니다"
}
}
Notes
- All placeholders (
{appName},{count}) preserved - HTML tags (
<b>) preserved - Terminology consistency maintained ("workspace" → "工作空间", "ワークスペース", "워크스페이스")
- Agentic reflection ensured natural, fluent translations