For Dashboard UI translations see Dashboard Customization: Translations.
What can be translated
Note that slugs are translated too. A French page can live at
/produits/sac-spree rather than at the English slug with French words on it — which is what search engines actually reward. See Slugs.
Reading translated content
Ask for a locale and you get that language back. Nothing else about the request changes:Responses vary by locale, so if you cache them, include the locale in the cache key. Spree sets
Vary headers for you, which is enough for a CDN but not for a hand-rolled in-memory cache.Writing translations
Merchants translate in the dashboard, switching locale on the record they’re editing. For bulk work — handing a catalogue to a translation agency — export to CSV, translate, and import it back. Translations can also be written through the Admin API, which is what you’d use to sync from an external translation service. Writes go through one batch endpoint — every entry succeeds or none do — so a product and its option values can be translated in a single request:Related
- Markets — which locale and currency a region gets
- Slugs — localized URLs
- Custom Fields — translating your own fields
- Localization — the locale, currency and country headers

