oma-translator
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.
npx skills add first-fluke/oh-my-agent --skill oma-translator --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
What it does
Translate, review, or adapt multilingual content while preserving meaning, register, placeholders, structure, domain terminology, and natural target-language word order.
How it works
- Entry: Confirm source text, target language, content type, and output mode. Load existing translations, glossary, file context, or code context when available. Identify placeholders, formatting constraints, and ambiguity.
- Scenes:
- PREPARE: Determine language, register, domain, and structure constraints.
- ACQUIRE: Read existing translations and surrounding context.
- REASON: Analyze source meaning, connotations, figurative language, and terminology.
- ACT: Reconstruct natural target-language output.
- VERIFY: Run mechanical checks and translation rubric.
- FINALIZE: Emit translation, review notes, or file changes.
- Transitions: If context is insufficient, ask one targeted question. If batch size > 10, verification is mandatory before output. If CJK output contains em dashes or source-language artifacts, rewrite before final output. If placeholders or structure do not match, revise and rerun verification.
- Failure and recovery: If source meaning is ambiguous, flag ambiguity rather than guessing. If project conventions conflict with literal translation, follow project conventions and explain if needed. If file structure is risky to modify, preserve structure and limit edits to values.
- Context Inference: Infer from existing translations, file location, surrounding code, and source text itself; ask user if context is insufficient.
- Translation Method: Stage 1 Analyze Source for register, intent, domain terms, cultural references, sentence rhythm, comprehension challenges, figurative language mapping, and emotional connotations. Stage 2 Extract meaning; Stage 2.5 assign persona from translation_voice and content-type; Stage 3 Reconstruct in target language with correct word order, register, and sentence structure. Stage 4 Verification Gate: perform mechanical checks (A) and rubric (B) and follow anti-AI patterns (C). Ensure placeholders like {name}, {{count}}, %s, <tag>,
coderemain unchanged. Maintain structure parity and consistent sentence-ending style. If target context requires, align with sibling patterns in the project.
When to use
- Translating UI strings, error messages, or microcopy
- Translating documentation, README, or guides
- Translating marketing copy or landing pages
- Reviewing existing translations for naturalness
- Creating glossaries or translation style guides
- Any task involving multilingual content
What it can touch
- Tools declared: claude-code, codex, cursor
- Reads locale files and source context; may write translated content only when explicitly editing files
- Placeholder integrity: {name}, {{count}}, %s, <tag>,
codemust appear unchanged in the target
Caveats
- No i18n infrastructure setup, locale file additions, or code-level l10n patterns are described here (these are handled by other workflows)
- If context is insufficient, the agent will ask a targeted question instead of guessing
- Mechanical checks include: no em dash in CJK outputs without structural restructuring; replace curly quotes as required; maintain one sentence-ending style; ensure structure parity and sibling-pattern alignment
# Translator - Context-Aware Translation ## Scheduling ### Goal Translate, review, or adapt multilingual content while preserving meaning, register, placeholders, structure, domain terminology, and natural target-language word order. ### Intent signature - User asks to translate, localize, review translation quality, create a glossary, or adapt UI/docs/marketing copy. - User needs context-aware translation rather than mechanical word substitution. ### When to use - Translating UI strings, error messages, or microcopy - Translating documentation, README, or guides - Translating marketing copy or landing pages - Reviewing existing translations for naturalness - Creating glossaries or translation style guides - Any task involving multilingual content ### When NOT to use - i18n infrastructure setup (key extraction, routing, build) -> use dev-workflow - Adding new locale to framework config -> use dev-workflow - Code-level l10n patterns (date formatting, pluralization API) -> use relevant agent ### Expected inputs - Source text, target language, and optional locale or audience - Existing locale files, glossary, code context, or style constraints - Optional user/author writing sample for
- Scheduling
- Goal
- Intent signature
- When to use
- When NOT to use
- Expected inputs
- Expected outputs
- Dependencies
- Control-flow features
- Structural Flow
- Entry
- Scenes
- Transitions
- Failure and recovery
rg "<source-key-or-term>" .
What does the oma-translator skill do?
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.
How do I install it?
Run `npx skills add first-fluke/oh-my-agent --skill oma-translator --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From first-fluke/oh-my-agent, a repository with 1,204 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
