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/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.
<a href="https://agentmods.dev/skills/soulcodex/agentic/internationalization-i18n"><img src="https://agentmods.dev/badge/skills/soulcodex/agentic/internationalization-i18n.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.5 | $0.00029 | $0.00363 |
| Sonnet 5.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 1mo 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.
- 1mo 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 yesterday), licensed MIT. It adds 72 tokens to every session and 908 once invoked, about $0.0003 per session on Opus 5.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
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).
translations
Translate a Mendix app's user-visible strings with MDL — DESCRIBE TRANSLATIONS to export one file per language, CREATE [OR MODIFY|REPLACE] TRANSLATIONS to write them back. Use when localising an app, filling in a language with an LLM, or auditing which strings are still untranslated. Covers why a translation can be…
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.
marketer-localize-campaign
Localize a campaign across N markets.
dialectos
Use DialectOS to translate and QA Spanish across 25 regional dialect variants. Covers markdown/docs translation that preserves structure, i18n locale validation, glossary enforcement, formality checks, and launch certification via MCP or CLI.
i18n
A guide to adding multiple languages and regional formats to Flutter apps. It covers translation files, right-to-left layouts, plural and gender-aware messages, and changing the language while the app runs.