Translate I18n
Documentstranslate-i18nTranslate I18n is an Agent Skill for documents published in the liaohch3/claude-tap repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
Fill missing i18n translations in the viewer source JSON. Run this after adding or modifying English or Chinese UI strings in claude_tap/viewer_i18n.json — it auto-translates to ja, ko, fr, ar, de, ru via OpenRouter.
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Inspect the Agent Skill at https://github.com/liaohch3/claude-tap/blob/HEAD/.agents/skills/translate-i18n/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/translate-i18n, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
Translate i18n
Automatically fill missing translations for the viewer's claude_tap/viewer_i18n.json source file. The script uses English and Chinese as source languages and translates to Japanese, Korean, French, Arabic, German, and Russian.
Prerequisites
OPENROUTER_API_KEYmust be set in the environment (it is in the user's.zshrc)- Default model:
google/gemini-2.5-flash
Workflow
1. Check what's missing (dry run)
Always preview first to confirm which keys need translation:
uv run python scripts/translate_i18n.py --dry-run
This parses claude_tap/viewer_i18n.json, finds keys present in both en and zh-CN but missing in other languages, and lists them without modifying the file.
2. Run the translation
uv run python scripts/translate_i18n.py
The script calls OpenRouter once per target language, then writes the translations back into viewer_i18n.json in-place.
3. Verify the result
After translation, run the formatter and tests to make sure nothing broke:
uv run python -m json.tool claude_tap/viewer_i18n.json >/dev/null
uv run pytest tests/test_translate_i18n.py -v
Options
| Flag | Purpose |
|---|---|
--dry-run | Show missing keys only, no file changes |
--model MODEL | Override the OpenRouter model (default: google/gemini-2.5-flash) |
--target {viewer,cli} | Translation target preset (default: viewer) |
--file PATH | Override target file path |
--object-name NAME | Override the legacy JS/Python i18n object name |
How it works
The script:
- Loads the viewer i18n JSON source file
- Validates that every language block is a string-to-string map
- Identifies keys present in
en+zh-CNbut missing in target languages - Sends a structured prompt to OpenRouter with existing translations for consistency
- Normalizes fullwidth punctuation for CJK languages (matching zh-CN style)
- Inserts new entries after the existing keys in each target language
Common scenarios
Added a new UI string: Add the key to both en and zh-CN blocks in claude_tap/viewer_i18n.json, then run this skill. The other 6 languages will be filled automatically.
Changed an existing string: The script only fills missing keys. To re-translate an existing key, first delete it from the target language blocks, then run the script.