dev-i18n

dev-i18n is a skill for Claude Code from christopherlouet/claude-base. It costs 79 tokens per session (2,684 once invoked), scanned A, original, MIT.

A guide to adding multiple languages and regional formats to web and mobile applications. It covers translated text, plural forms, dates, and numbers.

In plain words
What is it for?
Use it to choose an internationalization library, organize translation files, extract text, and support localized web or mobile interfaces.
Why use it?
It helps prevent scattered translations and incorrect language or regional formatting as an application grows.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

Not installable on its own: it runs a file from its repository that does not travel with it. Clone the repository, or install whatever ships that file. The line is node scripts/check-i18n.js.

Install

Getting it into your agent

There is no command for this one: it runs only inside a plugin, and the catalogue could not identify which plugin ships it. The source is linked below.

Made for: Claude Code.

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

README.md
[![agentmods](https://agentmods.dev/badge/skills/christopherlouet/claude-base/dev-i18n.svg)](https://agentmods.dev/skills/christopherlouet/claude-base/dev-i18n)
Your own site
<a href="https://agentmods.dev/skills/christopherlouet/claude-base/dev-i18n"><img src="https://agentmods.dev/badge/skills/christopherlouet/claude-base/dev-i18n.svg" alt="Measured on agentmods" height="20"></a>
Per session 79 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,684 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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.00079 $0.02684
Opus 5 $0.00039 $0.01342
Sonnet 5 $0.00016 $0.00537
Haiku 4.5 $0.00008 $0.00268

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

Security

Grade A, and why

dev-i18n 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 2d 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.

.claude/skills/dev-i18n/SKILL.md · 426 lines

How it starts

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

Internationalization (i18n)

Choosing your lib

Web

Lib Stack Strength Avoid
next-intl Next.js 13+ App Router Server Components first, type-safe, localized routes Pages Router projects (use next-i18next)
react-i18next React vanilla / SPA Mature, large ecosystem, plugins Heavy for SSR without effort
formatjs (react-intl) React ICU MessageFormat standard More verbose boilerplate
vue-i18n Vue 3 / Nuxt Native, Composition API, lazy load Vue-specific
svelte-i18n / paraglide Svelte/SvelteKit Lean, compile-time (paraglide) Smaller ecosystem

Mobile

Lib Stack
flutter_localizations + intl Flutter official, ARB files
slang Flutter alternative, type-safe, code-generation
react-native-localize + i18next React Native

next-intl (Next.js App Router)

Setup

npm install next-intl
messages/
  fr.json
  en.json
app/
  [locale]/
    layout.tsx
    page.tsx
middleware.ts
i18n/
  request.ts
  routing.ts

Config

// i18n/routing.ts
import { defineRouting } from "next-intl/routing";

export const routing = defineRouting({
  locales: ["fr", "en"],
  defaultLocale: "fr",
  localePrefix: "as-needed",  // /en/about, /about (default locale)
});
// middleware.ts
import createMiddleware from "next-intl/middleware";
import { routing } from "./i18n/routing";

export default createMiddleware(routing);

export const config = {
  matcher: ["/", "/(fr|en)/:path*"],
};

Server Component usage

// app/[locale]/page.tsx
import { getTranslations } from "next-intl/server";

export default async function Page() {
  const t = await getTranslations("home");
  return <h1>{t("title")}</h1>;
}

Client Component usage

"use client";
import { useTranslations } from "next-intl";

export function Greeting() {
  const t = useTranslations("home");
  return <p>{t("welcome", { name: "Alice" })}</p>;
}

Read the full file on GitHub · 426 lines

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. 2d ago First seen · 426 lines · 79 tokens per session scan A dabbe21fe854

Subscribe to this mod's changes

dev-i18n is a skill published in the GitHub repository christopherlouet/claude-base (5 stars, last pushed yesterday), licensed MIT. It adds 79 tokens to every session and 2,684 once invoked, about $0.0004 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-09-03.

Related

Other skills, from other repositories

hns-oss-docs-readme-sync

README 4-file synchronization procedure for the oss-docs harness: Korean README.ko.md as primary source, en/ja/zh derivation, the shared language-switcher header contract, section-order parity checklist, and the manual verification recipe (no linter exists for READMEs). Loaded by the content-author and…

modu-ai/moai-adk · 83 tokens

moai-domain-humanize

AI text humanization and 윤문 (post-editing) specialist that detects and removes AI tells while preserving meaning, facts, and figures. Covers Korean, English, Japanese, and Chinese with a shared severity model (S1/S2/S3), quality grades (A/B/C/D), and 30%/50% over-editing guardrails. Use to make AI-generated text read…

modu-ai/moai-adk · 101 tokens

hns-oss-docs-i18n-rules

HARD i18n rules digest for the oss-docs harness specialists working on moai-adk-go README 4-locale set and the docs-site (adk.mo.ai.kr). Covers the canonical-locale chains, the 4-locale same-PR obligation, Mermaid TD-only, the no-emoji + icon-shortcode rule, emphasis-marker spacing, the URL blacklist, version SSOT…

modu-ai/moai-adk · 119 tokens

i18n-localization

Internationalization and localization for global applications. Use when adding multi-language support, handling regional formats, or preparing apps for global markets.

travisjneuman/.claude · 32 tokens

swiss-citation-formats

Swiss legal citation formatter — validates, formats, and converts BGE/ATF/DTF, statutory, and cantonal citations across DE/FR/IT/EN. Trigger when: citations need formatting, validation, or cross-language conversion. Uses legal-citations MCP (validate, format, convert). Also handles citation conversion delegated by…

fedec65/bettercallclaude · 108 tokens

swiss-legal-translation

Swiss legal translator — translates Swiss legal texts (contracts, submissions, statutes, opinions) between DE, FR, IT, and EN with correct terminology and register. Trigger when: a user asks to translate a Swiss legal document or term, or a document must be prepared in a different national language. Uses fedlex-sparql…

fedec65/bettercallclaude · 122 tokens