Skip to content
Back to skills

Localisation

ASecurity

Use when the product ships in more than one locale, or when a string, date, number, currency or layout could differ by region — by ux-architect when the locale set changes navigation, by privacy-reviewer when region determines obligation, and by any IC writing a user-visible string. Triggers on the first string, not on the first translation.

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 6, 2026
ai-agentsgo

Works with

  • cli

Security analysis

A100/100

Scanned September 6, 2026

npx -y skills add vmobifystudio/app-dev-team --skill localisation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Localisation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Localisation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vmobifystudio-localisation/badge)](https://www.skillsdirectory.com/skills/vmobifystudio-localisation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: localisation
description: Use when the product ships in more than one locale, or when a string, date, number, currency or layout could differ by region — by ux-architect when the locale set changes navigation, by privacy-reviewer when region determines obligation, and by any IC writing a user-visible string. Triggers on the first string, not on the first translation.
---

# Localisation

Localisation is an architecture decision taken at the first string, and a translation task only at
the end. Teams that reverse the order pay for it twice.

Where a platform skill exists, use it: `axiom-localization` on Apple platforms. **External and
optional** — missing → follow this file, never file its absence as a defect.

## Do this from the first ticket, in every locale count including one

- **Every user-visible string is a key in the catalogue.** No string literal in a view, ever. This
  is cheap now and a full re-read of the codebase later.
- **Never concatenate a sentence from fragments.** Word order differs by language. Use one
  parameterised string per sentence.
- **Plurals use the platform's plural rules**, not `if count == 1`. Several languages have more than
  two plural forms and `1 items` is the cheapest possible way to look unfinished.
- **Dates, times, numbers, currencies and units go through the locale-aware formatter.** A
  hand-formatted date is wrong in most of the world, silently.
- **Never sort or compare user-facing text with byte comparison.** Use the locale-aware collator.

## Layout

- **Assume text grows 30–40%** from English. A button that fits exactly is a button that clips.
- **RTL is a layout mode, not a translation.** Use leading/trailing, never left/right; mirror
  directional icons (back, next, progress) and never mirror ones with real-world orientation
  (a clock, a logo, a play button).
- Test at the longest supported locale and the largest Dynamic Type together — that combination is
  where clipping actually happens.

## Region is not language

Region determines: currency and price tier, legal and privacy obligation (`privacy-reviewer`),
store metadata and rating, available payment methods, and sometimes whether a feature may ship at
all. **A locale added to the catalogue is a market entered.** Say so explicitly rather than letting
a translation file imply it.

## Output

The locale set and its consequences are stated in `docs/12-flows.md` (navigation and layout impact)
and in `docs/15-aso.md` (store metadata per locale). Pseudo-localise before you have translations —
it finds hardcoded strings and clipping without waiting for a translator.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…