Skip to content

Multilingual stores

For stores running several languages, typically through Shopify Markets. On a Japanese-only store, none of this applies.

Supported languages

Eleven languages have analysis support.

Japanese  English  French  Spanish  Italian  Portuguese
German  Dutch  Polish  Czech  Turkish

Analysis differs by language: Japanese uses morphological analysis, and the Latin-script languages get handling for inflection (plurals, conjugation).

An unsupported language cannot be searched. Those stores fall back to Shopify's own search automatically (degraded_reason: "analyzer_mismatch").

Selecting the language

The locale parameter picks the analyser.

GET /apps/marutto-search/search?type=search&contract=v1&q=dress&locale=en

Omitted, the store's default language is used.

Send the language of the page the shopper is on. Running the Japanese analyser over an English page splits words wrongly and costs accuracy. In a Shopify theme it is available as {{ request.locale.iso_code }}.

js
params.set("locale", window.Shopify?.locale ?? "ja");

Searching translated text

Titles and descriptions entered through Shopify's translation feature are indexed separately per language. An English query matches the English title; a Japanese query matches the Japanese one.

How translations stay in sync

Shopify has no webhook for translations. Editing a product's translation does not fire products/update.

Marutto Search therefore reconciles translations periodically. Unlike a product change (seconds), a translation change takes time to reach search results.

After bulk-updating translations, run a sync from the admin before checking results.

Currency

price_min and price_max are in the shop's base currency, not the presentment currency the shopper sees.

On a multi-currency Markets store, either

  • convert on your side, or
  • fetch prices for rendering from Shopify's Storefront API.

Tell us if multi-currency support matters to you.


Next: Glossary

Marutto Search