Overview
Two different things need translating, and they’re handled separately because they belong to different people. Your content — product names, descriptions, category names — is written by whoever runs the store. Spree stores a version of each field per language. The interface — button labels, error messages, email wording — is written by Spree, and is already translated into dozens of languages by the community.Which languages a region gets is decided by its Market. A market sets the default locale alongside the currency, so a visitor from France lands on French prices and French copy without choosing anything.
Translating content
Every translatable record keeps one row per language, so a product genuinely has a French name rather than a French name pasted over the English one.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:Translating the interface
Spree’s own strings — everything in the dashboard and in transactional emails — come from a community-maintained project covering 40+ languages.See the supported locales in the Spree I18n repository. Contributions are welcome if yours is incomplete.
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

