Guide

The multi-language subscription portal, in detail

If you sell in more than one market, the portal needs to render in every language your subscribers actually use — not just English with a translate widget on top. This guide walks through which languages are supported out of the box, how the translation system is structured, how right-to-left languages work, what happens when a string isn't translated yet, and why brand-translated copy consistently outperforms machine translation in subscription retention.

13 min readUpdated 21 May 2026By SimpleSubscription Team
On this page (9)
  1. Which languages are supported out of the box
  2. How translation strings are structured
  3. How the portal picks a subscriber's language
  4. Right-to-left languages: Arabic, Hebrew, and what flips
  5. What happens when a string isn't translated yet
  6. Why brand-translated copy outperforms machine translation
  7. Date, currency, and number formatting per locale
  8. When you don't actually need multi-language
  9. The ongoing translation workflow

A multi-language portal is one of those features that sounds binary — 'do you support French, yes or no?' — but in practice has half a dozen design decisions hiding behind it. Which languages ship by default. How translation strings are organized so a small team can maintain them. What the portal does when a subscriber's language is set to one you don't have translations for. How right-to-left languages flip layout without flipping numbers or product photography. And — the one most teams underestimate — the gap between machine-translated default copy and copy written in your brand's voice in each language. A subscriber reading awkward auto-translated text often bounces back to email support, defeating the point of the portal. This guide covers each of those layers in the order you'll think about them when you set the portal up for a multi-market store.

Which languages are supported out of the box

Modern subscription portals typically ship with 12–16 languages translated by default. The default set covers the major European markets, the main Asian languages, and a few Nordic languages where Shopify has high merchant density. The exact list varies by vendor, but the overlap between major apps is large enough that you can plan for the same core set whichever app you pick.

  • English, Spanish, French, German, Italian, Portuguese (PT-PT and PT-BR usually distinct)
  • Dutch, Swedish, Danish, Norwegian (Bokmål), Finnish
  • Polish, Czech (sometimes), Russian (sometimes, depending on vendor policy)
  • Japanese, Simplified Chinese, Traditional Chinese, Korean
  • Arabic and Hebrew (RTL — covered separately below)

If you sell in a language outside this default set — say Vietnamese, Thai, Greek, Hungarian — most apps let you add custom translations via a JSON upload or per-string admin override. It's a one-time effort and the file is portable across stores, so if you have an agency or contractor who builds Shopify stores for a regional market, they often have the file already.

Tip
Check coverage of your magic-link email

Most apps translate the portal interface fully but lag on the transactional emails — the magic-link login, the renewal-reminder, the dunning sequence. Before you launch in a new language, send each transactional email to yourself in that language and read it end-to-end. A polished portal undermined by an English magic-link email gives subscribers the impression that the multi-language support is half-finished.

Default sets cover ~14 languages. Verify the magic-link email and renewal-reminder are translated, not just the portal UI.

How translation strings are structured

Under the hood, every visible string in the portal has a translation key. The English value is the default, and each other language has its own value for the same key. When the portal renders a page, it looks up the key in the subscriber's selected language, falls back to English if the key is missing, and renders the string.

This matters because it tells you what you can and can't edit. You can edit any string per language — change the French version of the skip button without affecting the German version. You can add custom keys if your app supports it (less common). You cannot insert HTML or React components into a translation value safely; what's allowed is plain text, sometimes with simple variable placeholders like {nextOrderDate}.

  • Each language has its own copy of the editable-strings table — edits in one don't affect the others
  • Placeholders use a templating syntax (typically {variableName} or %{variableName}) — preserve these exactly when translating
  • Pluralization is usually handled per-language (English has 'singular/plural'; Russian/Polish have more forms; Japanese/Chinese often have just one form)
  • Date and number formats are not in the translation strings — they're handled by the locale layer separately
  • Currency symbol placement (€10 vs 10 €) follows the locale, not the translation string

If you have an in-house translator or agency, give them direct admin access to the string editor rather than handing over a CSV. The reason: context matters enormously for short interface strings. 'Skip' in isolation might be translated as 'Hop over' when the right translation is 'Postpone' — but a translator looking at the live portal sees the button next to the next-order date and gets the context immediately.

Strings are keyed and editable per language. Give translators portal access, not just a spreadsheet — context kills accuracy.

How the portal picks a subscriber's language

Three signals are used, usually in this priority order: explicit subscriber selection (the language picker in the portal), the Shopify customer record's locale (set at checkout), and the browser's Accept-Language header. The first one set wins.

This is mostly invisible — subscribers land in the right language without thinking about it. The places it goes wrong are predictable: a subscriber who originally checked out in English but now lives in Berlin will see English forever unless the customer record updates. A subscriber on a shared device with English browser settings will see English even if their personal preference is Spanish. Both cases are why the language picker in the portal matters — give subscribers an easy override.

Watch out
The hidden language picker is a churn driver

Some merchants hide the language picker on the assumption that the customer record always has the right language. It doesn't — subscribers move, share devices, or were imported from a migration with stale locale data. If you hide the picker, subscribers who land on the wrong language can't fix it and either email support or bounce. Keep the picker visible in the header or footer.

When a subscriber changes their language in the portal, the change should persist for future sessions — typically stored against the customer record so it propagates back to Shopify too. The next renewal-reminder email then arrives in the right language without the subscriber having to do anything else.

Picker explicit > customer record > browser. Always keep the language picker visible; never assume the customer record is current.

Right-to-left languages: Arabic, Hebrew, and what flips

Arabic, Hebrew, Farsi, and Urdu read right-to-left. A portal that supports RTL doesn't just translate the text — it flips the layout direction so the entire interface mirrors. Buttons on the right become buttons on the left, the back arrow points the other way, the date picker opens from the opposite side, and so on.

What does not flip: numbers (still read left-to-right inside RTL text), product photography, logos, and currency amounts. The portal handles this automatically via CSS logical properties (margin-inline-start instead of margin-left, etc.) so the layout adapts without breaking when the language changes.

  • Layout direction: dir="rtl" applied at the document root flips block-level positioning automatically
  • Icons that imply direction (arrows, chevrons) need to flip — most portals handle this automatically with CSS transforms
  • Numbers and dates render LTR inside RTL text — typical browser behavior, no custom config needed
  • Custom CSS overrides may break in RTL if they use left/right instead of logical properties — test custom CSS in both directions
  • Magic-link email needs separate RTL handling — verify the email template renders correctly in Arabic before launching to that market
Tip
Test RTL with the actual language, not just the direction

Some merchants test RTL by flipping the dir attribute without changing the text, which catches layout issues but not typography ones. Arabic and Hebrew have different vertical metrics than Latin scripts — line-heights that look right in English can look cramped in Arabic. Test with real translated text in production-typical lengths (RTL strings are often longer than English).

RTL flips layout, not numbers/photos. Test with real translated text — flipping direction alone misses typography issues.

What happens when a string isn't translated yet

Falling back from a missing translation is one of those small decisions that has a disproportionate impact on perceived polish. Three strategies exist, with different trade-offs.

  1. Fall back to English — the default and safest option. Subscribers see English where the translation is missing, which is suboptimal but not broken. Used by most portals.
  2. Show the key name — useful in development (you immediately see which keys are missing), bad in production (subscribers see 'portal.skip_button.label' instead of a real word).
  3. Fall back to a related language — Spanish missing falls back to Portuguese, Norwegian missing falls back to Danish. Rare; only some portals support this, and it can produce confusing results when the languages diverge.

The right default is fall-back-to-English. The reason: English missing renders something coherent (slightly off-brand), whereas key-name renders something broken. Most portals let you check which keys are missing in your active languages from an admin report so you can fill the gaps over time.

Watch out
The 'mostly translated' trap

Stores that launch in a new language with 80% of strings translated see worse engagement than stores that launch with 100% translated even if the missing 20% are obscure error messages. Subscribers experience the gaps as inconsistency and lose confidence in the overall flow. Either fully translate before launching a language or be ready for the metric impact.

If you're launching in a language progressively, prioritize translating the high-traffic strings first: the welcome message, the four primary action buttons, the confirmation messages, the next-order-date label, and the entire magic-link email. These represent ~80% of what subscribers read. Edge-case error messages can lag behind without obvious damage.

Fall back to English by default. Translate high-traffic strings 100% before launching a language; deep edge cases can lag.

Why brand-translated copy outperforms machine translation

The default translations that ship with subscription portals are competent and generic. They're typically professional human translation, but they were done once by a translator who didn't know your brand. The English source says 'Manage your subscription' and the French translation says 'Gérez votre abonnement'. Both are accurate. Neither sounds like your store.

When you edit the English copy to match your brand voice — say, 'Your next box' instead of 'Manage your subscription' — the other languages stay at the original generic default unless you edit them too. So a subscriber who reads English sees 'Your next box' and a subscriber who reads French sees 'Gérez votre abonnement'. Same store, different feeling.

The fix is brand-voice translation: hire a translator (or use a bilingual team member) to translate your edited English copy into each language you sell in. This is genuinely high-leverage work — the LTV impact of subscribers who feel the portal speaks their language naturally is large enough that even a few hundred dollars per language pays for itself within the first cohort.

Tip
Machine translation is fine for first drafts, not for launch

Run your edited English copy through DeepL or GPT-4 to get a starting point for each target language, then have a native speaker read it before you publish. AI translation in 2026 catches the gist but consistently misses tone — formal where you want casual, casual where you want formal. The cost of one round of native-speaker review per language is small; the cost of the wrong tone going live is larger than it looks.

  • Edit your English copy first — that becomes the source of truth
  • Use DeepL or GPT-4 to generate first-draft translations of the edited English
  • Have a native speaker review each draft for tone, formality (tu vs vous, du vs Sie), and dialect (es-ES vs es-MX)
  • Publish to the per-language string editor; verify in a real subscriber session in that language
  • Iterate based on real subscriber sessions — your sample size will be small early but the data still beats guessing
Edit English, AI-translate as first draft, native-speaker review per language, publish. The retention uplift pays for the translation budget within the first cohort.

Date, currency, and number formatting per locale

Localization is more than language. Subscribers in different locales expect different date formats (15/10/2026 in the EU, 10/15/2026 in the US, 2026-10-15 in ISO/Japan), different number separators (1,000.00 in the US, 1.000,00 in Germany, 1 000,00 in France), and different currency-symbol placement ($10 in the US, 10 € in France, € 10 in the Netherlands).

Most subscription portals handle this automatically via the subscriber's locale — set the language to French and the dates render as DD/MM/YYYY without any extra config. The currency follows the Shopify market the subscription is in, not the language. A French-speaking subscriber in Canada sees CAD prices in French formatting; a French-speaking subscriber in France sees EUR prices in French formatting. The combination matters; don't assume language = country.

  • Date format — follows locale, not language; en-US is MM/DD/YYYY, en-GB is DD/MM/YYYY
  • Number separator — period vs comma, follows locale
  • Currency symbol placement — follows locale; the symbol comes from the Shopify market's currency, not the language
  • Time formats — 12-hour vs 24-hour follows locale (US is 12-hour, most of Europe is 24-hour)
  • Week start day — Monday in most of Europe, Sunday in the US; affects calendar pickers
Locale handles dates/numbers/time automatically. Currency follows market, not language — French in Canada sees CAD.

When you don't actually need multi-language

Multi-language is a real feature with a real maintenance cost. If 95% of your subscribers are in one market and one language, the right answer is to launch in that language and skip the rest. A polished single-language portal beats a half-finished multi-language one.

The threshold is roughly this: if a second language would cover more than 10% of your subscribers, it's worth translating. If it covers less than 5%, the marginal subscribers in that language are probably better served by a clean English fallback. Between 5–10% is judgment — translate if you already have the language capability in-house, skip otherwise.

Watch out
The 'we'll add more languages later' trap

Stores that launch in English-only and add languages later often end up never adding them — the translation work falls down the priority list against features that look more strategic. If you genuinely need three languages, plan the translation work as part of launch, not as a fast-follow. Adding a language after the fact, when you have real subscribers in that language already running on broken English, is a worse subscriber experience than running them on English from day one.

Skip languages that cover <5% of subscribers. If you commit to a language, fully translate before launch — half-finished is worse than English-only.

The ongoing translation workflow

Translation isn't a one-time setup. Every time you add a feature, the new strings need translating. Every time your subscription app vendor adds a default string, you should review it across your active languages. Treat translations as a small but recurring maintenance task — typically 15–30 minutes per quarter for a brand selling in 3–4 languages.

Checklist
Quarterly translation maintenance
  • Pull the list of new default strings from your subscription app's changelog or release notes
  • Review the auto-translation for each, edit for brand voice in each active language
  • Check the missing-translation report in the admin — fill any gaps
  • Send the magic-link email to yourself in each active language and read it end-to-end
  • Skim a real subscriber session in each language (use the admin's session-replay if available)
  • Update the brand-voice glossary document so the next translation pass stays consistent

If your store is large enough to have a marketing or localization team, give them direct admin access to the portal string editor and treat the portal as just another surface they own (alongside storefront copy, email marketing, etc.). The portal is a brand surface even if it doesn't feel like one — subscribers spend more time there per visit than on most product pages.

Treat translation as a recurring quarterly task. New default strings appear; new features ship; the brand-voice glossary needs upkeep.

Multi-language portal FAQ

Which languages are supported by default?

Most modern subscription portals support ~14 languages out of the box: English, Spanish, French, German, Italian, Portuguese, Dutch, Swedish, Danish, Norwegian, Finnish, Polish, Japanese, Simplified and Traditional Chinese. Arabic and Hebrew are usually included with full RTL layout support. Languages outside this set are typically addable via custom translation upload.

Can I edit translations per language?

Yes. Every visible string in the portal is editable per language. Edits to French don't affect German; each language has its own copy of the editable-strings table. Use the per-language editor in the portal admin.

How does the portal know which language to show?

It uses three signals in priority order: explicit subscriber selection (the language picker), the Shopify customer record's locale, and the browser's Accept-Language header. The first signal set wins. Make sure the language picker is visible so subscribers who land on the wrong language can fix it.

What happens if a translation is missing?

The portal falls back to English by default. This is the right behavior — a subscriber sees coherent English where the translation is missing, which is better than seeing the raw key name. Check the missing-translation report in admin to fill gaps over time.

Does the portal support right-to-left languages like Arabic and Hebrew?

Yes. Arabic, Hebrew, Farsi, and Urdu render with full RTL layout — buttons mirror, arrows flip, the entire interface direction reverses. Numbers, photos, and currency amounts stay LTR within RTL text (standard browser behavior). Test the magic-link email separately in RTL — it has its own template.

Should I use machine translation or hire human translators?

Machine translation (DeepL, GPT-4) is fine for first drafts of brand-edited copy, but always have a native speaker review before publishing. AI catches gist but misses tone, formality choices (tu vs vous), and dialect (es-ES vs es-MX). The cost of one round of native review per language is small; the cost of going live with wrong-tone copy is larger than it looks.

Do dates and currencies localize automatically?

Yes. Date format (DD/MM/YYYY vs MM/DD/YYYY), number separators (1,000.00 vs 1.000,00), currency symbol placement, and 12/24-hour time follow the subscriber's locale automatically. Currency itself follows the Shopify market the subscription is in — a French speaker in Canada sees CAD in French formatting, a French speaker in France sees EUR.

Can I add a language that's not in the default set?

Most apps support custom-translation uploads via JSON or per-string admin override. You'll need to provide the translation file (your translator can produce it from a template the app exports). The work is one-time and portable across stores using the same app.

Does the magic-link email translate too?

Yes, on most modern portals — but check it before launching a new language. The email template lags the portal UI on some apps. Send the magic-link email to yourself in each active language and read it end-to-end before declaring multi-language support done.

What if my translator updates the wrong string?

Most portals keep a recent-changes log so you can see who edited what and revert if needed. Give translators direct admin access (not a spreadsheet) so they see context — but limit access to the string editor, not full admin.

How much does it cost to translate a portal into one language?

A native-speaker review of the default ~150 portal strings plus the brand-edited overlay typically costs $150–400 per language depending on rates. For a multi-market store the LTV uplift from natural-sounding copy pays this back within the first cohort. Translation agencies and Fiverr both work; staying with the same translator across updates keeps voice consistent.

Do I need to translate every language Shopify supports?

No. Translate the languages that cover more than ~10% of your subscribers. Below 5% the marginal subscribers in that language are usually better served by clean English fallback than by half-finished translations. Between 5–10% is judgment — translate if you already have in-house capability.

The pillar

Read the complete Shopify Subscription App overview

Pricing, every feature, side-by-side comparison, FAQ — the single page that ties all these guides together.

Go to the pillar

Launch a portal subscribers feel at home in

SimpleSubscription ships with 14+ languages, RTL support, and full per-language brand-voice editing on every paid plan.

Install on Shopify

90-day free trial · Zero transaction fees · Free migration