Skip to content

Internationalization

Add a string to the English source file, run sync, and it's translated into 30 languages automatically. The pipeline uses content hashing so only changed strings are re-translated.

Quick start

bash
# Translate everything from scratch (first-time setup)
python3 scripts/translate-locales.py full

# Update only changed strings (daily workflow)
python3 scripts/translate-locales.py sync

# Verify translations are current (no API key needed)
python3 scripts/translate-locales.py check

Two locale file types

TypePatternAudienceReferenced via
Storefront{lang}.jsonCustomers{{ 'key.path' | t }} in Liquid
Schema{lang}.schema.jsonMerchants in theme editor"t:key.path" in schema JSON

English source files (en.default.json and en.default.schema.json) are the single source of truth. Every other locale mirrors their key structure.

Supported languages (30)

bgcsdadeeles
fifrhrhuidit
jakoltnbnlpl
pt-BRpt-PTrorusksl
svthtrvizh-CNzh-TW

Next steps