Local multilingual translation via Ollama — 119 languages, no API key, no network, no data leaves the machine. Use when translating to/from Japanese, Chinese, Korean, French, Spanish, German, Portuguese, Russian, Arabic, or any other language. Also for localization, i18n text, and roundtrip validation. Qwen3:32b on Apple Silicon — faster and cheaper than cloud APIs.
Offline-first. Qwen3 via Ollama. No data leaves the machine.
| Model | Size | Use |
|---|---|---|
qwen3:32b | 20GB | Default — best quality |
qwen3:30b | 19GB MoE | Fast — near-same quality |
qwen3:14b | 9.3GB | Acceptable quality, fastest |
ollama pull qwen3:32b # one-time
# Translate text to a target language
nu script/translate.nu "Japanese" "technical-formal" "Your text here"
# From a file
nu script/translate.nu "Japanese" "technical-formal" \
--file /path/to/input.txt
# Round-trip validation (EN -> JP -> EN)
nu script/translate.nu "Japanese" "technical-formal" \
"Your text" --roundtrip
Translation Progress:
- [ ] 1. Choose target language and register (see registers table below)
- [ ] 2. Run: nu script/translate.nu "Language" "register" "text"
- [ ] 3. Verify: does output read naturally? Check for register flattening.
- [ ] 4. For critical text: run --roundtrip and compare back-translation
- [ ] 5. For legal/published copy: use Qwen-MT API instead (see cjk.md)
| Context | Register |
|---|---|
| Engineering spec, PR | technical-formal |
| Stakeholder report | formal |
| Slack / team chat | casual |
| Customer-facing docs | polite |
| Legal / contract | keigo |
/no_think — default, faster, use for technical docs and UI strings/think — use for literary passages, ambiguous register, ironyFor CJK-specific system prompts, register rules, honorific mapping, chengyu handling, and Korean verb ending nuances: see cjk.md
Never interpolate text into jq strings. Always --arg + pipe via @-.
The script handles this correctly. See cjk.md for the pattern.