name: translate
description: Translate documentation pages to all missing locales. Use when a document exists in one locale but needs to be translated to others. Supports --dry-run, single-locale targeting, and incremental updates.
argument-hint: [locale] [--dry-run]
allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep
Translate Documentation
Translate the document at the given target path to locales that are missing or outdated.
Argument Parsing
Parse $ARGUMENTS into these parts:
- target: The first positional argument — a document path (e.g.
wonder-mesh,billing/plans.mdx,en-US/wonder-mesh) - locale filter (optional): If a second positional argument matches a known locale (
zh-TW,zh-CN,ja-JP,es-ES), translate to only that locale instead of all missing locales - --dry-run flag (optional): If present anywhere in the arguments, only print the detection summary — do NOT write any files
Examples:
/translate wonder-mesh→ translate to all missing locales/translate wonder-mesh zh-TW→ translate to zh-TW only/translate wonder-mesh --dry-run→ detection report only/translate wonder-mesh zh-TW --dry-run→ detection report for zh-TW only
Context
This is a Nextra-based documentation site with these locales:
en-US(English — primary/source locale)zh-TW(Traditional Chinese)zh-CN(Simplified Chinese)ja-JP(Japanese)es-ES(Spanish)
All docs live under pages/<locale>/. Each section has a _meta.ts file for navigation labels (these must also be translated).
Glossary
Before translating, read the glossary file at ${CLAUDE_SKILL_DIR}/glossary.json. This file maps English terms to their approved translations per locale. When translating:
- Terms marked
"keep": truemust remain in English (brand names, technical acronyms) - Terms with locale-specific values must use the exact translation provided (e.g. "server" → "伺服器" in zh-TW, "服务器" in zh-CN)
- This ensures terminology consistency across the entire documentation site
Dashboard UI Term Translations
When translating text that references platform UI elements (button labels, tab names, menu items, dialog titles), use the /i18n-lookup skill to find the exact translations from the Zeabur dashboard's i18n files. The dashboard i18n source is located at ../../dashboard/public/assets/locales/{locale}/.
Why this matters: Users reading docs in their language should see the same UI terms they see in the dashboard. For example, the "Networking" tab should appear as "網路" in zh-TW docs because that's what the dashboard displays.
If the dashboard i18n files are not available (the path does not exist), fall back to the glossary and contextual translation.
Instructions
Phase 1: Detect Missing & Outdated Translations
Determine the source locale — identify which locale(s) already have the target. If the target path includes a locale prefix (e.g.
en-US/wonder-mesh), use that. If it's just a relative path (e.g.wonder-mesh/get-started.mdx), search all locales to find the source. Preferen-USas the source if it exists there.List all files under the source path. For example, if the target is
wonder-mesh, list all.mdxfiles and_meta.tsfiles underpages/<source-locale>/wonder-mesh/.Determine target locales — if a locale filter was provided, only check that locale. Otherwise, check all 4 non-source locales.
For each target locale, check which files are missing or outdated:
- Missing: The file does not exist at all
- Outdated (stub): The file exists but is significantly shorter than the source (likely a stub/placeholder)
- Outdated (stale): The file exists but the source file has been modified more recently. Use
git log -1 --format="%H %ai" -- <file>to compare the last commit date of the source file vs the translated file. If the source file's last commit is newer than the translation's last commit, mark it as stale.
Print a summary table showing:
- Each target locale
- Each file and its status:
missing,outdated (stub),outdated (stale), orup-to-date - Total files needing action per locale
If
--dry-runis set: Stop here. Print the summary and exit. Do NOT proceed to Phase 2.If no files need action: Print "All translations are up to date." and exit.
Phase 2: Parallel Translation
Spawn one agent per target locale that needs translation. All translation agents run in parallel.
Each translation agent must:
- Read the glossary at
${CLAUDE_SKILL_DIR}/glossary.jsonand use it throughout translation. - Look up dashboard UI translations — scan the source file for UI element references (bold text like
**Button Label**, quoted UI text like"Tab Name"or「Menu Item」). For each one, first search theen-USdashboard i18n files at../../dashboard/public/assets/locales/en-US/to find the i18n key for the English term, then look up that key in the target locale's files at../../dashboard/public/assets/locales/{target-locale}/. Check relevant JSON files (common.json,service.json,servers.json,project.json). If the dashboard i18n path does not exist, skip this step silently and rely on the glossary and contextual translation. - Read the source file(s) in full.
- Read the corresponding
_meta.tsin the source locale for navigation labels. - If the file is
outdated (stale)(not missing):- Read the existing translation file
- Use
git diff <old-commit>..<new-commit> -- <source-file>to see what changed in the source - Update only the sections that changed, preserving the rest of the existing translation
- This is more efficient and preserves any manual translation adjustments
- If the file is
missingoroutdated (stub): Translate the full source file. - Translate all content into the target language:
- Translate all prose, headings, callouts, and UI text
- Consult the glossary for all terminology — use the exact translations specified
- For UI element references (button labels, tab names, menu items rendered in bold or quotes), use the translations found in step 2 from the dashboard i18n files. These take precedence over the glossary for UI-specific terms, since they reflect what users actually see in the platform
- Keep all MDX imports unchanged (e.g.
import { Callout } from 'nextra/components') - Keep all image paths unchanged (e.g.
) - Keep all URLs/links unchanged unless they are locale-specific documentation links
- Keep code blocks unchanged (only translate comments inside code blocks if they are user-facing)
- Keep frontmatter keys unchanged (
title,ogImageTitle,ogImageSubtitle) but translate their values - For
_meta.ts: translate the display labels but keep the keys unchanged - Preserve the original file structure and formatting exactly
- Write the translated files to the correct locale directory.
- If the locale's parent
_meta.tsdoes not have an entry for this section, add it with the translated label (consulting the glossary for the label).
Translation Quality Guidelines
- Use natural, idiomatic phrasing for each language — do not produce literal word-for-word translations
- For
zh-TW: use Traditional Chinese characters (繁體中文), not Simplified - For
zh-CN: use Simplified Chinese characters (简体中文) - For
ja-JP: use standard Japanese with appropriate kanji/hiragana/katakana mix - For
es-ES: use Castilian Spanish conventions - Always consult the glossary — terms marked
"keep": truestay in English, others use the specified translation - When a term is not in the glossary but is a well-known technical term, keep it in English
Phase 3: Verification (Main Agent)
After all translation agents complete, the main agent must:
- Verify file existence: Glob for all expected files across all target locales and confirm they exist.
- Verify
_meta.tsconsistency: Read each target locale's_meta.tsand confirm the section entry is present with a translated label. - Spot-check content quality: Read the first 20 lines of each translated file to verify:
- Frontmatter is properly translated
- MDX imports are preserved
- Image paths are unchanged
- The content is in the correct language
- Glossary terms are used correctly
- Verify structural consistency: Ensure every target locale has the same number of files for the target section.
- Print a final summary:
- Number of files created/updated per locale
- Translation mode used per file (full translation vs incremental update)
- Any issues found
- Confirmation that all target locales are complete