agentsclimarketplace

Localization

Skill ikhattab/l10n-skill/skills/localization

Use this skill whenever a task involves locale-aware formatting, validation, or display of any of the following: currency (symbol position, decimal/thousands separators), dates and times (order, separators, 12/24h), numbers (grouping, decimal mark), units of measurement (metric/imperial/regional), or addresses and phone numbers (field order, postal code format). Trigger on any of: "format for [locale/country]", "localize this", "how is X written in Y", "is this format correct for Z", "display price/date/address for [country]", or whenever user-facing content needs adapting to a specific region or locale code (e.g. de-DE, fr-CA, ja-JP). Also trigger when validating or fixing existing formatted values, generating locale-aware code snippets, or explaining regional formatting differences.From its SKILL.md

Install
npx -y skills add ikhattab/l10n-skill --skill localization

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

7.8 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it

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?

  2. 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
  3. 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
  4. 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)

LocaleCountryExampleSymbolDecimalThousands
en-USUSA$1,234.56before.,
en-GBUK£1,234.56before.,
de-DEGermany1.234,56 €after,.
nl-NLNetherlands€ 1.234,56before,.
fr-FRFrance1 234,56 €after, (nb)
fr-CACanada (FR)1 234,56 $after, (nb)
es-ESSpain1.234,56 €after,.
pt-BRBrazilR$ 1.234,56before,.
ru-RURussia1 234,56 ₽after, (nb)
tr-TRTurkey₺1.234,56before,.
ja-JPJapan¥1,234before,
zh-CNChina¥1,234.56before.,
ko-KRSouth Korea₩1,234before,
hi-INIndia₹12,34,567.00before.lakh
ar-SASaudi Arabia1,234.56 ر.سafter.,

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

Date format (short numeric)

LocaleFormatExampleTime
en-USM/D/YYYY6/5/202612 h
en-GBDD/MM/YYYY05/06/202624 h
de-DEDD.MM.YYYY05.06.202624 h
nl-NLDD-MM-YYYY05-06-202624 h
fr-FRDD/MM/YYYY05/06/202624 h
es-ESDD/MM/YYYY05/06/202624 h
pt-BRDD/MM/YYYY05/06/202624 h
ru-RUDD.MM.YYYY05.06.202624 h
ja-JPYYYY/MM/DD2026/06/0524 h
zh-CNYYYY/M/D2026/6/524 h
ko-KRYYYY.MM.DD2026.06.0524 h
ar-SADD/MM/YYYY05/06/202612 h

Measurement system

RegionDistanceTemperatureWeightVolume
USAmiles°Flb/ozfl oz / gal
UKmiles*°Ckg / stpints (beer), liters (fuel)
Canadakm°Ckgliters
Most of worldkm°Ckgliters
Myanmar / Liberiamixed°Cmixedmixed

*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:

DomainFileWhen to read
Currencyreferences/currency.mdFormatting prices, invoice amounts, currency input fields
Date & Timereferences/datetime.mdDisplaying or parsing dates, timestamps, durations
Numbersreferences/numbers.mdNon-currency numbers, percentages, large numbers
Unitsreferences/units.mdDistances, temperatures, weights, volumes
Addressesreferences/addresses.mdAddress 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.

What ships with it: 5 files

35.2 KB alongside SKILL.md

references/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.