Skip to content

Country, currency and language

If your store sells into more than one market or publishes in more than one language, Signal renders native selectors for both in the footer.

Markets and languages are configured in admin, not in the theme:

  • Settings → Markets — the countries you sell to, and the currency each uses.
  • Settings → Languages — the languages your store is published in.

The theme reads localization.available_countries and localization.available_languages and renders whatever is there.

Footer section

SettingTypeWhat it does
Show the country / region selectorCheckboxRenders the country and currency selector
Show the language selectorCheckboxRenders the language selector

Each selector is rendered only when there’s more than one option. A store selling to one country never shows a country picker, even with the setting on — a select with one option is a control that does nothing.

That means you can leave both switches on and the footer stays clean until you actually add a second market.

  • Country — the country name followed by its currency code and symbol: United Kingdom (GBP £). A shopper picking a market is usually picking a currency, so both are on the label.
  • Language — the endonym: Deutsch, not German. Someone looking for their own language looks for its own name. Each option carries a lang attribute so a screen reader pronounces it correctly.

Both render the current selection as selected, so the control shows where the shopper already is.

Both are ordinary dropdowns inside Shopify’s own localization form. A script submits them on change, which is what makes the selection feel immediate.

If scripting is unavailable, a submit button appears so the form can still be sent. Nothing about localization depends on the script running.

Switching country switches the currency Shopify quotes in, and every price in the theme — product cards, the cart drawer, quick view, the comparison matrix — formats in the active currency rather than a hardcoded one.

Switching language loads the matching translation file. Every piece of Signal’s own interface text is translatable, including the strings used by the parts of the store that update without a page reload — the layout passes them through as a JSON block that the script reads.

  • Both selects have real visible <label> elements, not placeholder-only labelling.
  • Ids are scoped by context, so the footer’s selectors can’t collide with another copy of the snippet elsewhere on the page.
  • The whole thing is one <form>, so it’s announced as a single group.

Under general: country, language, and update — the submit button shown when scripting is unavailable.