MCPInstall

software-localisation

Implements production-grade i18n/l10n for React, Vue, Angular, and Next.js with ICU format and RTL support. Use when setting up or debugging localisation.

Installs
192
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/vasilyu1983/ai-agents-public --skill software-localisation
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads software-localisation automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Software Localisation

Use this skill for production web-app i18n and l10n: library choice, message catalogs, ICU usage, locale routing, translation workflow, RTL, and release gates. The goal is not just translated strings. The goal is locale-safe product behavior.

When to Use This Skill

  • setting up or debugging i18n in React, Vue, Angular, or Next.js
  • choosing libraries and catalog strategy
  • implementing ICU pluralisation, formatting, and locale detection
  • adding RTL support
  • configuring extraction, translation workflow, or TMS integration
  • fixing missing translations, mixed-language regressions, or bad locale fallback behavior
  • delivering backend-generated prose (AI summaries, narratives) to localized web or native clients

Route Elsewhere

  • general frontend architecture -> software-frontend
  • international SEO and hreflang -> marketing-seo
  • cross-cultural UX and market adaptation -> software-ui-ux-design or marketing-geo-localization
  • general WCAG/ARIA compliance and European Accessibility Act (EAA) readiness -> software-accessibility; this skill only covers the i18n-specific slice (lang/dir propagation, script-aware line height, IME) in references/accessibility-i18n.md

When Not to Use This Skill

  • The product has one locale and no committed plan to add more — don't pre-build ICU catalogs, TMS integration, or locale routing "just in case." Ship plain strings and revisit when a second locale is real.
  • The ask is "translate this text" with no code, catalog, or product surface involved — that's a translation task, not a localisation-engineering task; do it directly.
  • The ask is about international SEO structure (hreflang, ccTLD vs subfolder) with no i18n implementation involved -> route to marketing-seo instead.

Native Mobile Boundary

This skill owns strings, plurals, catalogs, and the translation pipeline for native apps as well as web, including backend-generated prose and catalog key/value parity: see references/backend-generated-content-i18n.md. Framework setup here is web-first; the platform APIs belong to software-ios-native, software-android-native, or software-mobile. Anchors to check there:

  • iOS: String Catalogs (Localizable.xcstrings); plurals via the editor's "Vary by Plural", which adds each language's CLDR plural forms.
  • Android: per-app language preference (Android 13 / API 33+) via AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags(...)) (backward-compatible) or LocaleManager; declare locales with android:localeConfig, or androidResources { generateLocaleConfig = true } (AGP 8.1+).

Workflow

  1. Confirm framework, locale count, route strategy, and translation workflow.
  2. Choose the library and catalog model.
  3. Define explicit-route resolution separately from first-entry locale negotiation and persistence.
  4. Implement ICU or equivalent message formatting correctly.
  5. Add extraction, missing-key, and stale-translation controls (missing key detection); for LLM/MT drafts, enforce the ICU-AST, glossary, quality-estimation, and reviewer gates in references/translation-workflows.md.
  6. Add RTL and visual regression coverage where needed; see references/testing-i18n.md for pseudo-localisation, RTL automation, and pluralisation edge-case test patterns.
  7. Block release on mixed-language or unsafe fallback behavior for indexable or customer-visible routes.

Quick Reference

SituationLibraryWhy
React / TypeScript, general flexibilityi18next + react-i18nextSelector typing when enabled; plugin integration
ICU-first catalogs, FormatJS tooling already in usereact-intlICU catalogs with FormatJS extract/compile
Next.js App Routernext-intlBuilt for RSC + App Router; configured locale routing
Vuevue-i18nFramework-native; Vue tooling integration
Angular@angular/localizeBuild-time extraction and AOT compilation
Smaller bundle budgetLinguiMacro extraction; measure the shipped bundle
Team explicitly wants generated type wrapperstypesafe-i18nFull key-type safety; high maintenance model

Do not choose by popularity alone. Choose by routing model, extraction needs, ICU expectations, and team maintenance habits. For setup steps per framework, see references/framework-guides.md.

ICU MessageFormat 2 (MF2): Not Yet a Default Choice

MF2 is standardized at the syntax level in Unicode's LDML spec (Stable since CLDR/LDML 47, March 2025), which makes it tempting to treat as "the new ICU." Do not migrate production catalogs to it until the toolchain catches up: check whether ICU's own implementations have left draft/technology-preview status, whether your library (react-intl/FormatJS, i18next, vue-i18n, Lingui) ships a production MF2 path, and whether your TMS round-trips it. Keep using MessageFormat 1 / ICU syntax (documented in references/icu-message-format.md) and re-check adoption status before recommending a switch — this is a common "the spec is final, so it must be safe to use" misdiagnosis.


Core Rules

Encoding and content model

  • use UTF-8 end to end
  • never concatenate translatable strings
  • use interpolation and ICU plural or select rules instead of ad hoc formatting

Locale routing and fallback

  • an explicit locale in a valid URL or deep link wins for that request; preserve it through navigation and canonical metadata (see references/locale-handling.md for date/number/currency detection specifics)
  • when no explicit locale is present, negotiate from authenticated preference, persisted choice, supported Accept-Language, then default locale
  • a stored preference may redirect an unlocalized entry route, but must not silently rewrite a shared explicit-locale URL
  • always define a fallback locale
  • never silently fall back to English on indexable non-English routes
  • metadata, breadcrumbs, JSON-LD, and visible copy must stay in the same locale

Translation workflow

  • extract keys, do not hand-copy them
  • keep namespace structure stable
  • add translator context, glossary rules, and review gates; see references/translation-workflows.md for extraction/TMS/CI pipeline patterns and references/content-management-patterns.md for TM, glossary, and cost-at-scale patterns
  • hardcoded string detection and missing-key checks should run in CI

RTL and accessibility

  • use CSS logical properties
  • set dir="rtl" where required
  • test with real RTL content; see references/rtl-support.md for Arabic/Hebrew/Farsi-specific patterns
  • verify BiDi handling, icons, and screen-reader behavior across locales

Production Gates

GateFailure conditionRemediation
Mixed-language outputAny locale-routed page renders keys from a different localeMissing-key CI check catches before merge
Missing-key bleedCore UX or marketing route shows a key ID or raw fallback stringExtraction + catalog diff in CI pipeline
Machine translation on release pathMT output inserted without glossary, tone, or reviewer gateAdd human review step for all customer-visible locales
Locale switch drops state or breaks navigationUser changes locale and loses cart, form, or route stateCentralize locale state; separate from route/cookie
RTL launched without visual validationArabic/Hebrew/Farsi layout broken on launchRequire visual pass on one RTL locale before release
Localized accessibility regressionLocale changes break language/direction markup, script rendering, or text inputTest the i18n accessibility slice in references/accessibility-i18n.md; route legal applicability to the accessibility owner

Known Traps

TrapPrevention
Keys drift between extraction, TMS, and runtime — fallback "works" but locale is brokenRun missing-key checks in CI; diff extraction output against TMS catalog before release
Visible strings translated, but validation messages / metadata / emails / JSON-LD left in EnglishEnumerate all locale surfaces (UI, email, SEO, legal) at project start; treat each as a separate test gate
String concatenation for grammar-sensitive or gendered copyUse ICU {count, plural, ...} / {gender, select, ...} (or the library's own plural syntax, e.g. vue-i18n pipe plurals); never "Hello " + name
Only Latin-script locales testedRequire one long-string locale (de/ru) and one non-Latin (ja/ar) before "complete"
Locale persisted separately in route, cookie, and client state with no precedence ruleSeparate resolution rules: explicit URL/deep-link locale for the request; otherwise authenticated preference > persisted choice > supported Accept-Language > default
Machine translation shipped without glossary or reviewRequire glossary, tone rules, and human review gate for all customer-visible content
Plural category count assumed from memory (e.g. "French is just one/other like English")CLDR revises per-language category counts over time (French now has one, many, other); verify against the current CLDR plural rules chart, don't hardcode from a prior project
Translated content rendered as raw HTML (v-html, dangerouslySetInnerHTML, ICU HTML tags) with no CSP/Trusted TypesReal XSS advisories exist for this exact pattern in both vue-i18n (CVE-2025-53892) and Angular's i18n pipeline (CVE-2026-27970) — treat translation-file write access as privileged and pin patched library versions

Common Anti-Patterns

Anti-patternCorrect approach
English as silent fallback on locale-routed pagesFail visibly in CI or preview when a key is missing in a non-default locale
Business logic encoded in translation keysKeys represent UI text; business logic belongs in code
Translations split by developer convenienceSplit by stable product domain and runtime loading boundary
CSS directional properties (left, right) patched per-view for RTLUse CSS logical properties (inline-start, inline-end) from the start
Each product surface (marketing, support, product) runs separate locale logicCentralize fallback, formatting, and detection in one shared locale layer

Ops Runbook

For large locale catalogs or mixed-language incidents:

  • diff keys first
  • translation pass second
  • treat marketing and SEO locale gaps as release blockers
  • chunk large locale files instead of reading them in one pass

Use references/ops-runbook.md for the detailed triage procedure.

Navigation

Core references

  • references/framework-guides.md
  • references/icu-message-format.md
  • references/translation-workflows.md
  • references/rtl-support.md
  • references/locale-handling.md
  • references/testing-i18n.md
  • references/accessibility-i18n.md
  • references/content-management-patterns.md
  • references/ops-runbook.md
  • references/backend-generated-content-i18n.md — backend-generated prose for localized clients (generate-in-locale vs translate-after-cache), locale contract, native catalog parity

Templates and data

  • assets/react-i18next-setup.md
  • assets/vue-i18n-setup.md
  • assets/nextjs-i18n-setup.md
  • data/sources.json

Maintenance

  • python3 scripts/check_urls.py
  • python3 scripts/check_examples.py

Related Skills

  • software-frontend
  • marketing-seo
  • software-accessibility

Learnings Loop

When prior decisions or pitfalls are relevant, consult learnings.consolidated.md if present; use learnings.md only for needed history or as the available fallback. Otherwise skip both.

After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.

FAQ

What does the software-localisation skill do?

Implements production-grade i18n/l10n for React, Vue, Angular, and Next.js with ICU format and RTL support. Use when setting up or debugging localisation.

How do I install software-localisation?

Run npx skills add https://github.com/vasilyu1983/ai-agents-public --skill software-localisation in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/software-localisation/ (personal) or .claude/skills/software-localisation/ (project).

Which AI agents can use software-localisation?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is software-localisation safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains software-localisation?

It is published by vasilyu1983 in vasilyu1983/ai-agents-public. It has 192 recorded installs.

More from vasilyu1983/ai-agents-public

View all →

software-architecture-design

vasilyu1983/ai-agents-public

Designs runtime topology in a chosen solution. Use when choosing monolith vs services, cells, consistency, ADRs. Not for cross-system design (software-solution-architecture).

product-management

vasilyu1983/ai-agents-public

Guides founder-PM discovery, roadmaps, prioritization, and PMF measurement. Use when planning product strategy, metrics, or roadmaps.

AI & Agents914 installs

document-xlsx

vasilyu1983/ai-agents-public

Builds Excel charts, pivots, validation, exports, Office Scripts/Graph automation, and workbook audits. Use when automating workbooks; for plain edits prefer official xlsx skill.

Data & Databases875 installs

software-ui-ux-design

vasilyu1983/ai-agents-public

Designs and audits UI/UX systems with usability and accessibility requirements. Use when shaping flows, design systems, interaction patterns, or WCAG-aware product behavior.

Frontend & Design731 installs

document-pdf

vasilyu1983/ai-agents-public

Handles PDF/UA accessibility, real redaction, metadata scrubbing, signing, and extraction. Use when redacting or signing PDFs; for plain create/merge prefer the official pdf skill.

Docs & Writing689 installs

qa-testing-playwright

vasilyu1983/ai-agents-public

Builds and debugs Playwright E2E suites. Use when authoring browser tests, fixing flakes, or hardening Playwright CI and locator strategy.

Testing & QA665 installs

Popular frontend & design skills

View category →

setup-matt-pocock-skills

mattpocock/skills

Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.

Frontend & Design1.1M installs

frontend-design

anthropics/skills

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

OfficialFrontend & Design1M installs

hyperframes-animation

heygen-com/hyperframes

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

prototype

mattpocock/skills

Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.

Frontend & Design999.2K installs

hyperframes-core

heygen-com/hyperframes

The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

Frontend & Design930.5K installs

vercel-react-best-practices

vercel-labs/agent-skills

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

OfficialFrontend & Design843.1K installs