AgentStack
SKILL verified MIT Self-run

Localization

skill-ikhattab-l10n-skill-localization · by ikhattab

>

No reviews yet
0 installs
1 views
0.0% view→install

Install

$ agentstack add skill-ikhattab-l10n-skill-localization

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Localization? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Localization Skill

Helps AI agents correctly format, validate, and explain locale-specific conventions for currency, dates, numbers, units of measurement, and addresses — based on Unicode CLDR standards and real postal/regulatory rules.


Workflow

  1. Identify the locale — Use a BCP 47 locale tag when possible (e.g. de-DE, fr-CA,

pt-BR). If only a country name is given, infer the primary locale. If ambiguous (e.g. "Canada"), ask: English or French?

  1. Identify the domain(s) — What needs formatting/validating?
  • Currency → read references/currency.md
  • Date / Time → read references/datetime.md
  • Numbers → read references/numbers.md
  • Units of measurement → read references/units.md
  • Address / Phone → read references/addresses.md
  1. Apply rules — Use the locale data to:
  • Format: produce a correctly formatted string from raw values
  • Validate: check whether an existing formatted value matches the locale's conventions
  • Fix: reformat an incorrectly formatted value
  • Explain: describe the difference between two locales
  1. Output — Respond with the formatted result + a brief note on the rule applied (so

the human or downstream agent can understand why, not just what).


Quick-Reference: Most Common Locales

> For full data including edge cases, separators, and address templates, always consult the > relevant reference file.

Currency (symbol position · decimal · thousands)

| Locale | Country | Example | Symbol | Decimal | Thousands | |----------|-----------------|----------------|--------|---------|-----------| | en-US | USA | $1,234.56 | before | . | , | | en-GB | UK | £1,234.56 | before | . | , | | de-DE | Germany | 1.234,56 € | after | , | . | | nl-NL | Netherlands | € 1.234,56 | before | , | . | | fr-FR | France | 1 234,56 € | after | , | (nb) | | fr-CA | Canada (FR) | 1 234,56 $ | after | , | (nb) | | es-ES | Spain | 1.234,56 € | after | , | . | | pt-BR | Brazil | R$ 1.234,56 | before | , | . | | ru-RU | Russia | 1 234,56 ₽ | after | , | (nb) | | tr-TR | Turkey | ₺1.234,56 | before | , | . | | ja-JP | Japan | ¥1,234 | before | — | , | | zh-CN | China | ¥1,234.56 | before | . | , | | ko-KR | South Korea | ₩1,234 | before | — | , | | hi-IN | India | ₹12,34,567.00 | before | . | lakh | | ar-SA | Saudi Arabia | 1,234.56 ر.س | after | . | , |

(nb) = narrow no-break space U+202F

Date format (short numeric)

| Locale | Format | Example | Time | |--------|------------|----------------|-------| | en-US | M/D/YYYY | 6/5/2026 | 12 h | | en-GB | DD/MM/YYYY | 05/06/2026 | 24 h | | de-DE | DD.MM.YYYY | 05.06.2026 | 24 h | | nl-NL | DD-MM-YYYY | 05-06-2026 | 24 h | | fr-FR | DD/MM/YYYY | 05/06/2026 | 24 h | | es-ES | DD/MM/YYYY | 05/06/2026 | 24 h | | pt-BR | DD/MM/YYYY | 05/06/2026 | 24 h | | ru-RU | DD.MM.YYYY | 05.06.2026 | 24 h | | ja-JP | YYYY/MM/DD | 2026/06/05 | 24 h | | zh-CN | YYYY/M/D | 2026/6/5 | 24 h | | ko-KR | YYYY.MM.DD | 2026.06.05 | 24 h | | ar-SA | DD/MM/YYYY | 05/06/2026 | 12 h |

Measurement system

| Region | Distance | Temperature | Weight | Volume | |-------------------|----------|-------------|----------|---------| | USA | miles | °F | lb/oz | fl oz / gal | | UK | miles* | °C | kg / st | pints (beer), liters (fuel) | | Canada | km | °C | kg | liters | | Most of world | km | °C | kg | liters | | Myanmar / Liberia | mixed | °C | mixed | mixed |

*UK uses miles for road signs but km in most other contexts


Common Pitfalls to Catch

  • Germany vs Netherlands: both use EUR but symbol position is opposite
  • France/Russia: thousands separator is narrow no-break space (U+202F), not a regular space
  • India: uses lakh/crore grouping — 12,34,567 not 1,234,567
  • Japan/Korea: no decimal places for native currencies (¥, ₩)
  • US date 06/05: means June 5th — in Europe it means May 6th
  • UK mixed units: road distances in miles, most other distances in km; both °C and stones/pounds coexist
  • Brazil currency: R$ with a space before the number — not R$1.234, it's R$ 1.234
  • Japanese address order: reversed from Western — starts with postal code → prefecture → city → ward → block → building → recipient name

Reference Files

Load these on-demand based on which domain(s) apply:

| Domain | File | When to read | |-------------------|------------------------------|---------------------------------------------------| | Currency | references/currency.md | Formatting prices, invoice amounts, currency input fields | | Date & Time | references/datetime.md | Displaying or parsing dates, timestamps, durations | | Numbers | references/numbers.md | Non-currency numbers, percentages, large numbers | | Units | references/units.md | Distances, temperatures, weights, volumes | | Addresses | references/addresses.md | Address forms, mailing labels, postal validation |


Output Format Guidelines

When formatting for agents / downstream use:

Locale:  de-DE
Domain:  currency
Input:   1234.56 EUR
Output:  1.234,56 €
Rule:    Symbol after amount with space; comma decimal separator; dot thousands separator

When explaining differences for humans:

> In Germany (de-DE), the euro sign comes after the number with a space: 1.234,56 €. > In the Netherlands (nl-NL), the same amount is written with the euro sign before: € 1.234,56. > Both use a comma as the decimal separator and a dot for thousands.

When generating code, prefer using the platform's built-in i18n APIs:

  • JS/TS: Intl.NumberFormat, Intl.DateTimeFormat
  • Python: babel library or locale module
  • Java/Kotlin: java.text.NumberFormat, java.time.format.DateTimeFormatter
  • Swift: NumberFormatter, DateFormatter with .locale

Attribution

Inspired by @MostafaNageeb, who pointed out that trivial-looking formatting differences — like the € sign coming after the number in Germany (14 €) but before in the Netherlands (€ 14) — have a real impact on user trust. These details feel minor until a user notices them.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.