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.
npx skills add soulcodex/agentic --skill internationalization-i18ngit clone --depth 1 https://github.com/soulcodex/agenticWrote 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.
[](https://agentmods.dev/skills/soulcodex/agentic/internationalization-i18n)<a href="https://agentmods.dev/skills/soulcodex/agentic/internationalization-i18n"><img src="https://agentmods.dev/badge/skills/soulcodex/agentic/internationalization-i18n.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00072 | $0.00908 |
| Opus 5 | $0.00036 | $0.00454 |
| Sonnet 5 | $0.00014 | $0.00182 |
| Haiku 4.5 | $0.00007 | $0.00091 |
Grade A, and why
internationalization-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 6d 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.
How it starts
The opening of the file, as written. The whole thing — 116 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Internationalization (i18n) Skill
Step 1 — Audit Existing Setup
- Identify any hardcoded strings in templates, components, and error messages.
- Check whether an i18n library is already configured (vue-i18n, react-i18next, etc.).
- Note the target locales and RTL requirements (Arabic, Hebrew, etc.).
Step 2 — Choose Message Format
Use ICU Message Format for all translation strings. It handles pluralization, gender, and select cases in a portable way supported by most i18n libraries.
# Simple
"greeting": "Hello, {name}!"
# Plural
"item_count": "{count, plural, one {# item} other {# items}}"
# Select
"status": "{status, select, active {Active} inactive {Inactive} other {Unknown}}"
Step 3 — Organise Locale Files
locales/
en.json ← source of truth (all keys must exist here)
es.json
ar.json ← RTL locale
fr.json
Rules:
- One flat or namespaced JSON file per locale.
- Key names use
snake_caseor namespaced dot notation consistently. - The source locale (
en.json) is the authoritative key list.
Step 4 — Locale Detection
Detect locale in this priority order:
- User preference stored in a cookie or
localStorage. Accept-LanguageHTTP header (server-side rendering).- Browser
navigator.language. - Fallback to the source locale.
Step 5 — Pluralization and Formatters
Use the Intl.* browser APIs for locale-sensitive formatting — do not hardcode
format strings in translation messages:
// Numbers
new Intl.NumberFormat(locale, { style: 'currency', currency: 'USD' }).format(amount)
// Dates
new Intl.DateTimeFormat(locale, { dateStyle: 'medium' }).format(date)
// Relative time
new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }).format(-1, 'day')
Step 6 — RTL Layout
For RTL locales:
- Set
dir="rtl"on<html>or the root layout element. - Use CSS logical properties throughout:
margin-inline-startnotmargin-left,padding-inline-endnotpadding-right,text-align: startnottext-align: left. - Test bidirectional text (mixed LTR/RTL strings) in UI components.
- Flip icons and directional UI elements (arrows, carets) using
[dir="rtl"]CSS selectors.
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.
- 6d ago First seen · 116 lines · 72 tokens per session scan A 4bc69a419885
internationalization-i18n is a skill published in the GitHub repository soulcodex/agentic (10 stars, last pushed 2d ago), licensed MIT. It adds 72 tokens to every session and 908 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-08-31.
Other skills, from other repositories
hatch3r-design-system-detect
Detects existing design tokens, component library, and theming convention in a project before authoring new UI primitives — output a concise inventory for downstream implementers.
popular-web-designs
54 real design systems (Stripe, Linear, Vercel) as HTML/CSS.
localization-design
Design for multiple languages, writing directions, and cultural contexts — text expansion, RTL mirroring, and locale formats. Use when shipping beyond one locale. For the words themselves, use ux-writing (designer-toolkit).
doherty-threshold
Apply the Doherty Threshold — keep system response under 400ms to preserve user flow. Use when diagnosing perceived slowness or setting a performance budget. For what to show during unavoidable waits, use loading-states.
readable-measure
Set line length and measure for comfortable reading across type sizes and breakpoints. Use when tuning body text. Covers measure only — for the full size and weight scale, use typography-scale.
von-restorff-effect
Apply the Von Restorff Effect — the element that differs from its neighbours is the one remembered. Use when a single action must dominate. For overall ordering rather than single-element emphasis, use visual-hierarchy.