Skip to main content
If you translate your store with Shopify’s languages and translation tools, Layers returns that translated text in storefront responses. A shopper browsing your French storefront sees French product titles, descriptions, option values, and filter labels in results that Layers powers, without any extra setup in the Layers dashboard.

How it works

Layers syncs your shop’s languages and the translations you publish in Shopify. When a storefront request includes the shopper’s locale, Layers swaps in the translated text for that language before returning results. Translation only changes the text shoppers read. Product and variant IDs, handles, prices, availability, and filter values stay the same in every language, so filtering, cart links, and analytics work the same way across languages. Layers ranks and matches results on your store’s original text, then applies translations to what it returns.

What gets translated

Layers applies translations to display text in search, collection (browse), recommendation block, and content search responses:
  • Products: Title, description, and product type.
  • Options and variants: Option names and values, and variant titles built from those option values.
  • Images: Product image and featured media alt text.
  • Metafields and metaobjects: Translated text values on product and variant metafields, and on the metaobjects they reference.
  • Collections: Collection titles attached to products.
  • Selling plans: Subscription and selling plan group names and options.
  • Content: Article, page, and blog titles, summaries, bodies, and image alt text in content search results.
  • Filters: Display labels for option and metafield filter values. The value you filter on stays in your store’s original language.
Text you haven’t translated in Shopify is returned in your store’s original language.

Which language a shopper gets

Layers uses the locale sent with the storefront request. The Layers storefront script adds the Shopify page’s locale to the Layers requests it tracks. If you call the API directly, pass the locale in the request context. See the locale context parameter in the Search API reference. Layers serves a translation only when all of these are true:
  • The language is published in Shopify. Languages you’ve added but not published are synced but not served, so you can prepare translations before launch.
  • The language is available on the shopper’s market. If the market doesn’t list its own languages, Layers uses the languages of your primary market.
  • The locale isn’t your store’s primary language. Requests in the primary language return your original text.
Regional locales fall back to their base language. For example, a pt-br request uses Portuguese (pt) translations if you haven’t published a separate Brazilian Portuguese language. When you translate content for a specific market in Shopify, Layers uses those market-specific translations first and falls back to the language-wide translation.

Keeping translations up to date

Layers picks up new and edited translations when the translated item changes in Shopify, and on a recurring background pass that catches translation-only edits.

Prerequisites

  • Your store’s languages are set up and published in Shopify.
  • The Layers app has been granted permission to read your store’s languages and translations. If your store installed Layers before translation support, accept the updated app permissions in Shopify when prompted. Until then, Layers returns your original text.

Troubleshooting

Results are still in the original language. Check that the request includes the shopper’s locale, that the language is published in Shopify, and that it’s enabled for the shopper’s market. Then confirm the item is actually translated in Shopify. A filter shows translated labels but the URL uses the original value. This is expected. Filter values stay in your original language so the same filter works in every language. Only the label shown to shoppers is translated. A newly published translation isn’t showing yet. Translation-only edits are picked up on the next background pass, so allow some time before checking again.

Next steps