odoo-i18n

odoo-i18n is a skill for Claude Code from Viindoo/odoo-mcp-client. It costs 238 tokens per session (6,858 once invoked), scanned B, original, MIT.

A translation workflow for Odoo modules using POT and PO files, the standard files used to store translatable text and its translations. It also manages shared terminology across modules.

In plain words
What is it for?
Use it to translate modules, export or update translation files, and check that important terms stay consistent.
Why use it?
It helps preserve existing translations and prevents updates from accidentally replacing completed work with blank entries.

Skill for Claude Code

Written for Claude Code: argument-hint in frontmatter. Also seen: mentions subagents.

Runs only inside its plugin — its command needs a path that Claude Code sets for a plugin’s own hooks and for nothing else. Install the plugin, not this.

Part of the odoo-ai-agents plugin — 51 skills, 8 commands, 26 agents, 8 hooks, 1 MCP server shipped together

Good fit Use it to translate modules, export or update translation files, and check that important terms stay consistent.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.

Claude Code
/plugin marketplace add Viindoo/odoo-mcp-client
Claude Code
/plugin install odoo-ai-agents

Made for: Claude Code.

Or install odoo-ai-agents, the plugin that ships this one along with the rest of its 51 skills, 8 commands, 26 agents, 8 hooks, 1 MCP server.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for odoo-i18n

README.md
[![agentmods](https://agentmods.dev/badge/skills/viindoo/odoo-mcp-client/odoo-i18n/github.svg)](https://agentmods.dev/skills/viindoo/odoo-mcp-client/odoo-i18n)
Your own site
<a href="https://agentmods.dev/skills/viindoo/odoo-mcp-client/odoo-i18n"><img src="https://agentmods.dev/badge/skills/viindoo/odoo-mcp-client/odoo-i18n/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for odoo-i18n

Your own site · 80×15
<a href="https://agentmods.dev/skills/viindoo/odoo-mcp-client/odoo-i18n"><img src="https://agentmods.dev/badge/skills/viindoo/odoo-mcp-client/odoo-i18n.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 238 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 6,858 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00238 $0.06858
Opus 5 $0.00119 $0.03429
Sonnet 5 $0.00048 $0.01372
Haiku 4.5 $0.00024 $0.00686

Measured 7d ago against content hash 92b343d01310, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade B, and why

odoo-i18n scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Recursive force deletemediumDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

`find <ISOLATE_DIR>/i18n/ -mindepth 1 -maxdepth 1 -type d -mmin +43200 -exec rm -rf {} +`

Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.

plugins/odoo-ai-agents/skills/odoo-i18n/SKILL.md · 367 lines

How it starts

The opening of the file, as written. The whole thing — 367 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Role

i18n conductor for Odoo translation. Owns the .pot/.po lifecycle, the glossary, and the subagent lifecycle for translating a module or module scope onto a target Odoo series. Makes the orchestration decisions (phase model tier, when to stop for a human, when to dispatch the leaf translator) and delegates actual term translation to the odoo-translator agent.

The load-bearing belief: a translation is MEMORY to be forwarded, never regenerated. Re-exporting a .po from a database that has NOT loaded the existing translation overwrites it with empty msgstrs and silently destroys 40-90% of the human translation with a clean exit code. The non-destructive method: build a FRESH instance, LOAD the existing .po into it, re-export (which then reproduces the translation), then RECONCILE by a git-ops diff-review - adjudicate every removed/changed entry before commit (no polib), into the THREE buckets of ${CLAUDE_PLUGIN_ROOT}/snippets/po-entry-semantics.md § Adjudicating a removed or changed entry.

The second load-bearing belief, and the one a two-bucket habit gets wrong: a translation equal to its source is stored as an EMPTY msgstr - that is Odoo's convention, not a lost string. Such an entry comes back blank from every re-export, so a blank is NOT proof of missing work: it is either a NEW term or an ARTEFACT of the round-trip, and translating an ARTEFACT overwrites a reviewed do-not-localise decision. Both rules, with the test that separates them, are in ${CLAUDE_PLUGIN_ROOT}/snippets/po-entry-semantics.md; term choice is ${CLAUDE_PLUGIN_ROOT}/snippets/translation-term-policy.md. Neither is restated in this skill.

The third load-bearing belief, and the one that decides what a run can even SEE: the BUILD SHAPE is part of the method. The catalog is bounded by what is in the database, so the export instance must be installed WITH DEMO DATA (demo-owned records carry translatable terms and the exporter filters by module alone), must have en_US plus every target language active, and must be the ONE build every artifact of the run - the .pot and each .po - is exported from. A demo-less or mixed-build run does not merely produce a smaller catalog: it makes committed entries reappear as removals whose msgids are still in source, which is the exact shape that gets mis-ruled and "fixed" by deleting real translation. Grounded, per-series flags and the gate that checks it: references/i18n-recipe.md KT4/KT5 + Validation gate 6.

A clean export + a green install is NOT proof the translation survived; only an adjudicated diff-review plus an Odoo -u reload proves it. Full non-destructive recipe (3-layer L1/L2/L3 + validation + glossary): references/i18n-recipe.md - the SSOT this skill and odoo-forward-port both point at.

Sole dispatcher (single source of truth for i18n fan-out). This skill is the ONLY component that launches the odoo-translator agent. Any other skill that needs a module translated, a .pot/.po exported/merged, or cross-module terminology audited routes that work HERE via the Skill tool instead of spawning the agent itself, so the non-destructive merge contract and the per-language leaf scoping (P1-P5) are enforced in one place. A live instance is provisioned by invoking the odoo-instance skill (never the raw odoo-instance-ops agent).

WORKTREE_PATH is required whenever this skill runs. .po / .pot files are git-tracked, so per ${CLAUDE_PLUGIN_ROOT}/snippets/dispatch-brief.md field 5 the write happens in a dedicated worktree - never the principal checkout. A caller (forward-port, modules-upgrade, a run-harness node) passes WORKTREE_PATH:; you forward it verbatim to every odoo-translator leaf. Invoked with no WORKTREE_PATH and no worktree of your own -> provision one via git-toolkit:git-ops before P2, per ${CLAUDE_PLUGIN_ROOT}/snippets/git-delegation.md. The verification instance must load THAT tree, not the principal checkout: pass WORKTREE_PATH through to odoo-instance (${CLAUDE_PLUGIN_ROOT}/skills/odoo-instance/SKILL.md § WORKTREE_PATH substitution) so the export reads the code you are translating.

Read the full file on GitHub · 367 lines

Files

What ships with it

2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 7d ago First seen · 367 lines · 238 tokens per session scan B 92b343d01310

Subscribe to this mod's changes

odoo-i18n is a skill published in the GitHub repository Viindoo/odoo-mcp-client (7 stars, last pushed 4d ago), licensed MIT. It adds 238 tokens to every session and 6,858 once invoked, about $0.0012 per session on Opus 5. A static security scan graded it B with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.

Related

Other skills, from other repositories

chinese-documentation

A Chinese technical-documentation style guide covering spacing, punctuation, numbers, terminology, and links when Chinese and English appear together.

jnMetaCode/superpowers-zh · 62 tokens

azure-ai-translation-text-py

Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications. Triggers: "text translation", "translator", "translate text", "transliterate", "TextTranslationClient".

microsoft/skills · 60 tokens

harden

Improve interface resilience through better error handling, i18n support, text overflow handling, and edge case management. Makes interfaces robust and production-ready. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.

fengshao1227/ccg-workflow · 62 tokens

seedance-vocab-ja

This skill should be used when the user asks for Japanese Seedance 2.0 prompt wording, Japanese cinematic vocabulary, or translation of camera, lighting, action, VFX, audio, and production terms into Japanese.

Emily2040/seedance-2.0 · 50 tokens

asc-subscription-localization

Bulk-localize subscription, subscription-group, and in-app purchase display names across App Store locales using asc, including API 4.4.1 version-scoped v2 resources. Use when filling or updating subscription/IAP names and descriptions without App Store Connect UI work.

rorkai/app-store-connect-cli-skills · 60 tokens

i18n-helper

A helper for adding internationalization, which lets software show different languages and regional text. It finds user-visible text written directly in code and moves it into language files.

laolaoshiren/claude-code-skills-zh · 33 tokens