Context-aware translation that preserves tone, style, and natural word order. Use when translating UI strings, documentation, marketing copy, or any multilingual content. Infers register, domain, and style from the source text and surrounding codebase context.
Scan existing locale files before translating to align with project conventions
Preserve placeholders and interpolation syntax
Translate meaning, not words
Related Skills
Match register consistently throughout a single piece
Split/restructure sentences for target language naturalness
Flag ambiguous source text rather than guessing
Preserve domain terminology as-is — if a term has established meaning in the field (e.g., harness, scaffold, shim, polyfill, middleware), keep it even if a "simpler" native word exists
Never produce literal word-for-word translations
Never mix registers within a single piece (formal + casual)
Never replace domain-specific terms with generic equivalents (e.g., "harness" → "framework", "shim" → "wrapper")
Never translate proper nouns unless existing translations do so
Never change the meaning to "sound better"
Never skip verification stage for batches > 10 strings
Never modify source file structure (keys, nesting, comments)
Context Inference
No config file required. Instead, infer translation context from:
Existing translations in the project — scan sibling locale files to match register, terminology, and style already in use
File location — messages/, locales/, .arb files reveal the framework and format
Surrounding code — component names, comments, and variable names hint at domain and audience
Source text itself — register, formality, sentence structure reveal intent
If context is insufficient to make a confident decision, ask the user. Prefer one targeted question over a batch of questions.
English compound sentences often split into shorter Korean/Japanese sentences
English bullet points may merge into flowing paragraphs in some languages
Omission of the obvious:
Korean/Japanese allow subject omission when contextually clear
Don't force subjects that feel unnatural
Stage 4: Verify
Check against rubric (see resources/translation-rubric.md):
Does it read like it was originally written in the target language?
Are domain terms consistent with existing translations in the project?
Is the register consistent throughout?
Is the meaning preserved (not just words)?
Are cultural references adapted appropriately?
Check against anti-AI patterns (see resources/anti-ai-patterns.md):
6. No AI vocabulary clustering or inflated significance
7. No promotional tone upgrade beyond the source
8. No synonym cycling — consistent terminology
9. No source-language word order leaking through
10. No unnecessary bold, em dashes, or formatting artifacts
Batch Translation Rules
When translating multiple strings (e.g., UI keys):
Read all strings first before translating any — context matters
Scan existing translations in the project to align terminology and style
Propose a translation, confirm with user before applying
Register conflict in source
Follow project's existing register, note the inconsistency
Placeholder in middle of sentence
Restructure around it; never break placeholder syntax
Translation too long for UI
Provide a shorter alternative with note
How to Execute
Follow the translation method (Stage 1-4) step by step.
Before submitting, verify against resources/translation-rubric.md and resources/anti-ai-patterns.md.
Execution Protocol (CLI Mode)
Vendor-specific execution protocols are injected automatically by oh-my-ag agent:spawn.
Source files live under ../_shared/runtime/execution-protocols/{vendor}.md.