Access Default Language Product Object in Liquid When Switching Storefront Language

Topic summary

Main issue: A developer needs the product object in the store’s default language (English) within a Shopify Theme App Extension (TAE), even when customers switch the storefront language. They want variants, options, images, and metafields in English for internal logic matching.

Initial guidance: A responder notes Liquid and frontend APIs aren’t designed to mix locales in a single render. They suggest handling language via frontend mechanisms (e.g., locale‑aware URLs) and question forcing unlocalized data when a user selects another language.

Clarification: The developer’s app stores metaobjects and product option configurations only in English (the only locale app APIs can write to). In TAE Liquid, the product object becomes localized (e.g., options_with_values, variant titles), causing mismatches with the app’s English configuration.

Constraint: URL prefixes like /en/ don’t help inside TAE, and Liquid lacks a known filter like product | locale: 'en' to override locale.

Status/outcome: No Liquid-level solution was provided. The likely path is using the Storefront API/AJAX or other frontend data fetching. The question remains open for a Liquid-only method.

Summarized with AI on December 10. AI used: gpt-5.

I’m building a Shopify Theme App Extension and need to get the product object in the default language (English). Right now, when a customer switches the storefront language, the product object automatically reflects the selected language.

I want to fetch the default locale product (variants, images, metafields, etc.) in Liquid, regardless of the current language.

Is there a Liquid-only solution?

Neither liquid nor the frontend api’s were built for intermingling different languages.
If you must force multiple languages onto visitors for some reason put the literal translations in the content itself.

All of those things should already be the default data unless someone’s gone out of the way to localize them.
In which case why force unlocalized content on visitors that have specifically selected THEIR language.

Regardless of what hoops your trying to jump through.
This type of has to be done on the frontend such as if using dynamic urls
https://shopify.dev/docs/storefronts/themes/markets/multiple-currencies-languages#locale-aware-urls

So /en/ directory as a prefix on routes may be the way to go etc
https://shopify.dev/docs/api/ajax/section-rendering#locale-aware-urls

Thanks for the explanation! I understand your point that product/title/description data should normally be the default unless translated.

However, my use case is a bit different:

I am building a Theme App Extension (TAE) where my app stores and references metaobjects + product option configurations that are always created in English, because that’s the store’s default language and the only locale app APIs allow writing to.

The issue I’m facing:
When the storefront language changes (example: French, Japanese, etc.), the Liquid product object exposed inside a TAE block becomes localized. This means product.options_with_values, variant titles, and sometimes metafields return localized values — while my app’s saved configurations remain in English.

Because of that, I need to fetch the default (en) version of the product object so I can match the product options/values correctly with my app’s configuration.

I’m not trying to show English to customers — just need the English keys internally for logic comparisons inside the TAE.

If Liquid provided a way to access:

product | locale: 'en'

—or something similar—
it would solve this without relying on AJAX calls or the Storefront API.

Using /en/ prefixed URLs works on the frontend, but TAE Liquid code doesn’t run through URL prefixes and doesn’t let me dynamically fetch the product in another locale.

So my actual question is:
Is there any Liquid-level method to access the default-language product object (en) inside a Theme App Extension block, or is the Storefront API the only option?

Any insights appreciated!