International commerce

Shopify Markets Multi-Language Options

Selling personalized products across languages breaks in three predictable places: label translation, custom-text encoding, and POD partner font support. Shopify Markets + Translate & Adapt handles the first cleanly; the other two are where merchants lose orders. Here is the full setup for personalization options across English, Spanish, French, German, Japanese, Simplified Chinese, and Arabic markets.

Last updated: August 23, 2026~12 min readBy the Print It My Way team

The three layers of multi-language personalization

Multi-language personalization is not just translating "Add your name" into French. It's three separate layers: (1) UI label translation via Translate & Adapt, (2) customer input encoding — what characters the customer can type into the text field, and (3) POD partner glyph support — whether the print vendor's fonts can actually render what the customer typed. Skipping any of the three produces order-cancellation-level bugs (blank prints, boxed characters, engraving files that fail QC).

Layer 1: UI label translation with Translate & Adapt

Shopify's free Translate & Adapt app (installed on every Shopify plan) surfaces every string across your store — including product option labels, metafields, and app-set custom fields — into a translation editor. For personalization apps that follow Shopify's metafield conventions (Print It My Way does), all option labels appear in Translate & Adapt automatically. Merchants who use apps with non-standard string storage may need to translate labels inside the app's own settings.

Setup checklist:
1. Settings → Markets → add target markets (e.g., France, Germany, Japan)
2. Assign a domain / subfolder / subdomain per market
3. Settings → Languages → publish target languages
4. Install Translate & Adapt → auto-translate or manual per option label
5. Preview each market URL → verify option labels render translated

Layer 2: customer text-input encoding

The default text-input field on most personalization apps accepts UTF-8, which technically handles every writing system. In practice, three things break:

Layer 3: POD partner glyph support

POD partnerLatinCJK (Chinese/Japanese)Arabic / HebrewCyrillicEmoji
PrintfulFull (500+ fonts)Partial (Noto Sans JP + SC)Yes (Noto Sans Arabic)Yes (Noto Sans)Blocked
PrintifyFullPartial (~15 CJK fonts)Yes (~5 Arabic fonts)YesBlocked
GelatoFullFull (Japan warehouse)YesYesBlocked
GootenFullLatin transliteration onlyNot supportedYesBlocked
CustomCatFullNot supportedNot supportedPartialBlocked
The failure mode nobody warns you about: customer places a Japanese-name engraving order, POD partner receives the print file with the correct glyphs, but the partner's automated proof system rejects it as "text unreadable" and cancels the order silently. Merchants find out three weeks later via customer email. Solution: pre-render the print file client-side (canvas → PNG) and submit the PNG instead of the text + font, forcing the POD partner to print exactly what the customer saw.

Font fallback strategy

Load market-specific web fonts only for markets that need them. Loading Noto Sans JP on the US storefront wastes 1.2MB and hurts INP scores.

<!-- Load per-market via Shopify localization variable -->
{% if localization.language.iso_code == "ja" %}
  <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+JP&display=swap" rel="stylesheet">
{% elsif localization.language.iso_code == "zh-CN" %}
  <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC&display=swap" rel="stylesheet">
{% elsif localization.language.iso_code == "ar" %}
  <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Arabic&display=swap" rel="stylesheet">
{% endif %}

Live preview across languages

Your live product preview canvas needs a font that supports the customer's input script. Most previews use Google Fonts (Inter, Roboto, etc.) which lack CJK glyphs. Detect the input's Unicode range on keyup and swap the preview font dynamically:

function detectFontForText(text) {
  if (/[぀-ヿ一-鿿]/.test(text)) return "'Noto Sans JP', sans-serif";
  if (/[一-鿿]/.test(text)) return "'Noto Sans SC', sans-serif";
  if (/[؀-ۿ]/.test(text)) return "'Noto Sans Arabic', sans-serif";
  return "'Inter', sans-serif";
}

Character limits per script

English name field ~20 chars. Chinese name field 8 chars (kanji are ~2.5x wider). Arabic 15 chars (letters connect and take more physical space). Set per-language maxlength to prevent print files from clipping.

Frequently asked questions

How do I translate Shopify personalization option labels?

Use Shopify's free Translate & Adapt app. Option labels stored via standard metafields appear in the translation editor automatically. For apps with non-standard string storage, translate inside the app's own settings.

What character encoding do Shopify personalization fields use?

UTF-8 by default. This covers every writing system, but normalize input with text.normalize("NFC") before submitting to POD partners — some fulfillment systems reject decomposed Unicode forms.

Can I offer Japanese / Chinese / Arabic name engraving?

Yes — Printful, Printify, and Gelato all support CJK and Arabic glyphs. Gooten and CustomCat do not. Verify your POD partner's supported scripts before enabling those languages, and load a matching Noto Sans font per market.

Why does my Japanese customer's engraving come back blank?

Most common cause: the preview font on the storefront doesn't include CJK glyphs, so what the customer typed rendered as "tofu" (blank boxes), and your POD partner's file processor rejected it. Load Noto Sans JP for Japanese-market shoppers, and pre-render the preview to PNG before submitting to POD.

How do I set per-market character limits for personalization text?

Load a per-language maxlength based on localization.language.iso_code. Chinese: 8-10 chars, Japanese: 10-12 chars, Arabic: 12-15 chars, Latin scripts: 20 chars. Character widths differ dramatically across scripts.

Does Shopify Markets work with personalization apps?

Yes if the app stores its labels in Shopify metafields (Print It My Way, Bold Options, Infinite Options all do). Translate & Adapt then handles UI localization automatically.

How do I handle right-to-left text input for Arabic personalization?

Add dir="auto" to the input element — the browser detects script direction and orients the cursor correctly. For the storefront layout, use CSS logical properties (margin-inline-start instead of margin-left) so the same theme works for both LTR and RTL markets.

Best Shopify app for multi-language personalization?

Print It My Way for Translate & Adapt compatibility, per-market fonts, and CJK/Arabic-aware preview rendering. Combined with Shopify Markets (native) for storefront translation.

Related reading

Try it free on Shopify

Print It My Way's permanent Free plan supports Shopify Markets, Translate & Adapt integration, and per-market fonts including CJK and Arabic.

Install Print It My Way