

We’ll use Spanish as an example, but the same structure applies to any locale or market.
This guide assumes you already have a working Saleor setup and access to the Nimara codebase.
Start by adding a new sales channel in your e-commerce engine. Since Nimara is designed to work flexibly with platforms like Saleor, we’ll use it here to set up support for Spanish, including a dedicated channel and locale.
Head to your Saleor dashboard:
For the Shipping Zones, I selected all of Europe, as in my case, orders will be fulfilled from a warehouse in Germany.
After setting up the new channel, assign the products you want to be available in that channel. Then jump into the Nimara codebase.
Let’s start with types. Correctly typing everything from the beginning helps avoid issues down the line.
Head over to: apps/storefront/src/regions/types.ts
Extend the SUPPORTED_LANGUAGES definition - in this example, we’re adding Spanish:
Locales link language to regional formatting. So we add the new locale to SUPPORTED_LOCALES:
If you added a brand new sales channel (not just a new language for an existing channel), also update SUPPORTED_MARKETS:
Spain uses the Euro, so we must include that by adding it to SUPPORTED_CURRENCIES:
Now let’s move on to the routing.ts file, located at: apps/storefront/src/i18n/routing.ts
Add a new locale prefix:
This ensures URLs like /es/products resolve correctly.
One last thing: don’t forget to add the new locale to ALL_LOCALES in: packages/domain/src/consts.ts
If you've typed everything correctly, this next part should be straightforward.
Now we wire everything up in the main configuration. This step links locales to specific channels, defines the new language, and tells the app how to handle the Spanish market.
Go to:apps/storefront/src/regions/config.ts
Your editor will likely point out any missing values. Start with LOCALE_CHANNEL_MAP:
Each language has metadata: name, code, and locale. Now add your language to the LANGUAGES object:
Finally, define the new market: its ID, name, default language, currency, and Saleor channel.
You’ll need a translation file so the UI shows proper Spanish labels and messages.
apps/storefront/messages/en-GB.jsonapps/storefront/messages/es-ES.jsonTime to verify everything works as expected. Start the dev server:
Then open your browser and switch to the new Spanish locale. You should see:
es-ES.json fileYou're all set! Nimara should now fully support your new Spanish market. If you need to add more markets, just repeat the same structure.
Do you need more than multiple languages and channels? Whether you require custom pricing rules, localized content, or tailored fulfillment logic, Nimara can adjust to your needs. Just let us know, and we’ll be happy to help.