i18n-check

i18n-check is a skill for Claude Code from mgiovani/cc-arsenal. It costs 225 tokens per session (1,724 once invoked), scanned A, original, MIT.

A checker for translation files and text in software applications. It looks for missing translations, untranslated copied text, obsolete keys, and new interface text that bypasses the translation system.

In plain words
What is it for?
Use it to inspect supported internationalisation setups, find missing or orphaned translation keys, detect unchanged translations, and identify hardcoded interface copy.
Why use it?
It helps find language problems before users see missing, outdated, or accidentally untranslated interface text.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter. Also seen: mentions subagents.

Part of the cc-arsenal-dev plugin — 19 skills shipped together , and of cc-arsenal

Good fit Use it to inspect supported internationalisation setups, find missing or orphaned translation keys, detect unchanged translations, and identify hardcoded interface copy.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/mgiovani/cc-arsenal/i18n-check
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add mgiovani/cc-arsenal --skill i18n-check
Clone the repo
git clone --depth 1 https://github.com/mgiovani/cc-arsenal

Made for: Claude Code.

Or install cc-arsenal-dev, the plugin that ships this one along with the rest of its 19 skills.

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 i18n-check

README.md
[![agentmods](https://agentmods.dev/badge/skills/mgiovani/cc-arsenal/i18n-check/github.svg)](https://agentmods.dev/skills/mgiovani/cc-arsenal/i18n-check)
Your own site
<a href="https://agentmods.dev/skills/mgiovani/cc-arsenal/i18n-check"><img src="https://agentmods.dev/badge/skills/mgiovani/cc-arsenal/i18n-check/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 i18n-check

Your own site · 80×15
<a href="https://agentmods.dev/skills/mgiovani/cc-arsenal/i18n-check"><img src="https://agentmods.dev/badge/skills/mgiovani/cc-arsenal/i18n-check.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 225 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,724 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. 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.00225 $0.01724
Opus 5 $0.00112 $0.00862
Sonnet 5 $0.00045 $0.00345
Haiku 4.5 $0.00022 $0.00172

Measured 10d ago against content hash 489a4dd4c473, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-10, from the pricing page.

Security

Grade A, and why

i18n-check scanned grade A with 0 findings 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 10d 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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/i18n-check/SKILL.md · 135 lines

How it starts

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

i18n Check

Finds the three ways translations silently rot: a key added to the default locale but never copied to the others (missing), a key copied but never translated (still reads identical to the source), and a key left behind in one locale after being renamed or removed from the default (orphan). Also catches new UI copy that was hardcoded instead of routed through the i18n layer in the first place: the most common way a translation key never gets created.

Step 1: Detect the framework

Look for these signals, in order, and stop at the first match:

Signal Framework Locale file layout
package.json has next-intl; i18n.ts/i18n/request.ts next-intl messages/<locale>.json, nested
package.json has i18next/react-i18next i18next public/locales/<lang>/<ns>.json or src/locales/<lang>.json, nested
package.json has react-intl react-intl lang/<locale>.json, flat, or inline defineMessages (no files)
package.json has vue-i18n vue-i18n src/locales/<lang>.json/.yaml, or <i18n> SFC blocks
manage.py + locale/<lang>/LC_MESSAGES/*.po Django gettext .po catalogs, source strings live in code
Gemfile + config/locales/*.yml Rails I18n YAML keyed by locale at the top level

If two signals match (e.g. a monorepo with a Rails API and a Vue frontend), run this skill once per app, not once for the whole repo: their locale files don't overlap.

Read references/frameworks.md for the exact default-locale detection and the flatten/diff one-liner for whichever framework you found. Every framework's diff reduces to the same three sets (missing / untranslated / orphan) even though the file format differs.

Step 2: Diff every locale against the default

For each non-default locale file, flatten both it and the default locale to key -> value pairs and compute:

  • Missing: key exists in the default locale, absent here.
  • Untranslated: key exists in both, and the value is byte-identical to the default locale's value.
  • Orphan: key exists here, absent from the default locale (usually a rename or deletion that didn't propagate).

Read the full file on GitHub · 135 lines

Files

What ships with it

4 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. 10d ago First seen · 135 lines · 225 tokens per session scan A 489a4dd4c473

Subscribe to this mod's changes

i18n-check is a skill published in the GitHub repository mgiovani/cc-arsenal (8 stars, last pushed yesterday), licensed MIT. It adds 225 tokens to every session and 1,724 once invoked, about $0.0011 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

vs-item-onboarding

Match the language of the user's most recent message in every line of prose you write — confirmation prompts, status notes, hand-off summaries, questions, error explanations, and any internal thinking / reasoning / planning output that the host may surface (e.g. blocks, "thinking" panels, scratchpad notes, todo…

volcengine/SearchCLI · 86 tokens

format-time

Convert UTC timestamps to the user's timezone before showing them in chat, charts, Telegram, or any user-facing output. Use this helper whenever you would otherwise write a raw strftime("%H:%M") of a UTC datetime in something the user reads.

leopu00/job-hunter-team · 54 tokens

gitlab

Agent-callable GitLab tools — manage issues and merge requests, review diffs, commit files, run pipelines, and search. Use when the user mentions GitLab or wants to review or merge an MR, commit code, run CI, or manage issues — even if they don't name GitLab explicitly.

zapier/connectors · 64 tokens

alpaca

Agent-callable Alpaca trading tools — place and manage stock, crypto, and options orders, read account balances, positions, and portfolio history, look up assets and market hours, and read watchlists. Use when the user mentions Alpaca or wants to trade or inspect a brokerage account, even if they don't name Alpaca…

zapier/connectors · 70 tokens

dataforseo

Agent-callable DataForSEO tools — Google SERP results, keyword and domain analytics, backlinks, Google Maps business data, on-page audits, and AI-search visibility (LLM answers + brand mentions). Use when the user wants SEO or AI-search data, even if they don't name DataForSEO.

zapier/connectors · 65 tokens

discord

Agent-callable Discord tools — send and manage messages, start threads and forum posts, manage channels, members, and roles, and post via webhooks. Use when the user mentions Discord or wants to post, read, or manage Discord servers, channels, or members, even if they don't name Discord explicitly.

zapier/connectors · 64 tokens