> For the complete documentation index, see [llms.txt](https://native-app-co.gitbook.io/omnibus-owl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://native-app-co.gitbook.io/omnibus-owl/integrations/markets-and-translations.md).

# Multi-market & translations

How Omnibus Owl handles multiple markets and currencies, and how to translate the storefront widget into your shoppers' languages.

Omnibus Owl is built for international stores. It records prices **per market** and displays the widget in each shopper's **language**.

## Multi-market & multi-currency

Price history is stored **per country/market**, so each market keeps its own reference price in its own currency. A shopper in Germany sees the German-market lowest price in euros; a shopper in Sweden sees the Swedish-market price in kronor — automatically, with no extra configuration.

This applies everywhere prices appear:

* the [storefront widget](/omnibus-owl/core-features/lowest-price-widget.md) (uses the shopper's market context),
* the [admin price-history block](/omnibus-owl/core-features/price-history-in-admin.md) (market selector).

Markets come from your active **Shopify Markets** configuration, with your primary market listed first.

## Widget translations

The **Languages** tab of the **Omnibus Lowest Price** page lets you translate the **storefront widget text** into each of your shop's languages. It has two editable fields:

| Field                  | Example default                                                                                                        |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **Lowest price label** | *Lowest price in last 30 days: {{ lowest\_price }} ({{ lowest\_price\_date }})*                                        |
| **Info tooltip text**  | *This is the lowest price of this product in the last 30 days, displayed in accordance with the EU Omnibus Directive.* |

The card shows **one tab per language** you've enabled in Shopify. Edit each language's wording independently; shoppers see the text for whichever storefront language they're viewing.

With [Anchored price (Croatia)](/omnibus-owl/core-features/anchored-price.md) switched on, a third field appears — the **Anchored price label** (default *Sidrena cijena ({{ anchored\_price\_date }}): {{ anchored\_price }}*), with its own placeholders `{{ anchored_price }}`, `{{ anchored_price_with_currency }}` and `{{ anchored_price_date }}`.

### Placeholders

Both the **Lowest price label** and the **Info tooltip text** can contain these placeholders, filled in automatically for the variant the shopper is viewing (and updated when they switch variants):

| Placeholder                          | Filled with                                                                                                                | Example      |
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- | ------------ |
| `{{ lowest_price }}`                 | The lowest price, in your store's **HTML without currency** format — the same format most themes use for the product price | *849,00 Kč*  |
| `{{ lowest_price_with_currency }}`   | The lowest price, in your store's **HTML with currency** format                                                            | *849,00 CZK* |
| `{{ lowest_price_date }}`            | The date that price was set, in the **Date format** from the Settings tab, in your store's timezone                        | *12.06.2026* |
| `{{ current_price }}`                | The variant's current selling price (its Shopify **Price**) in the shopper's market currency                               | *799,00 Kč*  |
| `{{ current_price_with_currency }}`  | The current price, in the **HTML with currency** format                                                                    | *799,00 CZK* |
| `{{ original_price }}`               | The variant's **Compare-at price** when it's on sale; if there's no higher compare-at price, the current price             | *999,00 Kč*  |
| `{{ original_price_with_currency }}` | The original price, in the **HTML with currency** format                                                                   | *999,00 CZK* |

Type the placeholders exactly as shown, including the spaces inside the braces. For example, to keep the main line short and put the details in the tooltip:

* **Lowest price label:** *Lowest price in last 30 days: {{ lowest\_price }}*
* **Info tooltip text:** *Lowest price in last 30 days: {{ lowest\_price }} ({{ lowest\_price\_date }}). Regular price: {{ original\_price }}, current price: {{ current\_price }}.*

Line breaks you type in the **Info tooltip text** field are kept, so you can list values one per line, for example:

```
Lowest price (30 days): {{ lowest_price }}
Date: {{ lowest_price_date }}
Current price: {{ current_price }}
```

`{{ current_price }}` and `{{ original_price }}` come from the variant's Shopify price fields, so a Shopify automatic discount (one applied at checkout without changing the price) isn't reflected in them.

Both money formats come from Shopify, not from Omnibus Owl: **Shopify admin → Settings → General → Store currency → Change formatting**. If the widget shows a currency code (*CZK*) while your theme shows a symbol (*Kč*), switch the label to `{{ lowest_price }}` — or edit the **HTML with currency** format in Shopify.

{% hint style="info" %}
**Installed before 21 September 2026?** The default label used `{{ lowest_price_with_currency }}` back then, and we never overwrite text you already have. If your widget shows *50,00 PLN* next to a theme price of *50,00 zł*, open the **Languages** tab and replace `{{ lowest_price_with_currency }}` with `{{ lowest_price }}` in each language. On new installs Omnibus Owl picks the placeholder for you: it checks whether your published theme shows currency codes next to prices (the **Show currency codes** theme setting in Dawn- and Horizon-family themes) and uses `{{ lowest_price_with_currency }}` if it does, `{{ lowest_price }}` otherwise. If you change that theme setting or switch themes later, adjust the label to match.
{% endhint %}

{% hint style="success" %}
Omnibus Owl pre-fills professional translations for **20 languages** so you're compliant out of the box: English, Spanish, German, French, Italian, Portuguese, Polish, Dutch, Romanian, Greek, Swedish, Finnish, Norwegian, Hungarian, Danish, Croatian, Slovak, Lithuanian, Estonian, and Latvian. Any other language you enable gets a starter English text you can edit. Your customisations are always preserved.
{% endhint %}

## App interface language

Separately from the widget, you can change the language of the **app's own admin interface** via the **gear icon** in the top-right corner of the app's [home page](/omnibus-owl/getting-started/app-dashboard.md) — it opens **App settings** with the language selector. Use this if your Shopify admin language isn't one the app supports. The app interface is available in 21 languages, shown by their native names (English, Deutsch, Français, Español, Italiano, Polski, Nederlands, and more).

{% hint style="info" %}
**Two different translation settings:** the *Languages* tab changes what your **shoppers** see on the storefront; *App language* changes what **you** see inside the app. They're independent.
{% endhint %}
