Localisation with App Proxy

Topic summary

Goal: Use localized URLs and locales with Shopify App Proxy and render locale-specific data.

Early state and rollback:

  • Initial claim (Feb 2020): Localized URLs work; locale passed via Accept-Language header (e.g., /es/apps/example → es;q=1.0, en;q=0.5).
  • Soon after, localized routes like /de/apps/customapp returned 404; fix was rolled back with no ETA.

Workarounds (limited):

  • Parse language from Referer (e.g., /es/products/…).
  • Append query param (?language=es).
  • Limitations: only affects proxy response, not the theme; menu links won’t include locale; setting application/liquid can’t force theme locale.

Fix shipped later:

  • Localized proxy routes began working again. Accept-Language reflects route (e.g., /apps/example → en; /es/apps/example → es, en;q=0.5). Note: q indicates preference weighting.

Post-fix issues:

  • Accept-Language now overridden by store/route locale, making the original browser language unavailable via headers.
  • Brief outage (~12h) caused 404s, then recovered.
  • Open question on header format (e.g., “es, en;q=0.5”).
  • Bug reported: navigating from a non-primary locale to an app proxy page resets store locale to primary before the app runs, leading to wrong-language content.

Status:

  • Feature live but with unresolved bugs and no ETA for further fixes. Ensure target locale is published in Store Languages.
Summarized with AI on February 14. AI used: gpt-5.

Hi Scotty,

I have the same problem with our “custom app” (proxy app).

I can confirm I’m receiving the “accept-language”-header,

but this doesn’t contain the published languages from our shop.

It looks like it sends the languages from the clients-browser…

Published languages in our shop:

English = default, German and French

Received languages header in proxy app:

Chrome: [HTTP_ACCEPT_LANGUAGE] => nl,nl-NL;q=0.9,en;q=0.8,en-US;q=0.7,de;q=0.6,fr;q=0.5,sv;q=0.4,it;q=0.3,lb;q=0.2,da;q=0.1,la;q=0.1,es;q=0.1
IE edge: [HTTP_ACCEPT_LANGUAGE] => nl-NL,nl;q=0.8,en-GB;q=0.5,en;q=0.3

A much bigger issue for me is that front-end isn’t accepting localised URL’s;

So:

(I’ve already re-installed the app, and made sure that “read_locales” and “read_translations” are in the app scopes).

Can you please advise?