# Translations

{% hint style="info" %}

* **Editing English content** is available on **All plans**
* **Changing the default language** and editing content in that language require **Essential and above**
* **Detect Language** (auto-detect by IP or browser) is available on **Advanced and Ultimate**
  {% endhint %}

{% embed url="<https://go.screenpal.com/watch/cTinFXnl2M2>" %}

### Overview

Joy's Translations feature lets you display your loyalty content in your customers' preferred language — either by setting a fixed default language, or by letting Joy detect it automatically.

**Joy translates everywhere your customers see loyalty content:**

| Surface                                     | Translatable |
| ------------------------------------------- | ------------ |
| Loyalty widget (popup)                      | ✅            |
| Loyalty page (embedded)                     | ✅            |
| Account page (loyalty hub)                  | ✅            |
| Checkout page (Shopify checkout extensions) | ✅            |
| Apple Wallet & Google Wallet passes         | ✅            |

{% hint style="success" %}
Many apps on the Shopify market are unable to translate their checkout UI extensions or customer account UI — leaving customers on international stores stuck reading English at the most critical moments. Joy translates across all surfaces, including checkout and account pages.
{% endhint %}

All 38 supported languages can be fully customized — you can edit every label, message, and button text to match your brand voice.

### Supported languages

Joy supports 38 languages out of the box:

|                      |                       |                    |            |
| -------------------- | --------------------- | ------------------ | ---------- |
| Arabic               | Czech                 | Danish             | Dutch      |
| English              | Estonian              | Finnish            | French     |
| German               | Greek                 | Hebrew             | Hindi      |
| Croatian             | Hungarian             | Indonesian         | Irish      |
| Italian              | Japanese              | Korean             | Lithuanian |
| Luxembourgish        | Malay                 | Norwegian (Bokmål) | Polish     |
| Portuguese           | Romanian              | Russian            | Slovak     |
| Slovenian            | Spanish               | Swedish            | Thai       |
| Turkish              | Ukrainian             | Urdu               | Vietnamese |
| Chinese (Simplified) | Chinese (Traditional) |                    |            |

***

### How it works

Joy's translation system has two layers:

1. **Default Language** — the language shown to all visitors by default. On All plans this is English; on Essential and above you can change it to any supported language.
2. **Detected Language** — when enabled (Advanced+), Joy detects each customer's language automatically and switches all loyalty surfaces to match. Three methods are available: **Shopify language selector** (recommended), Browser Language, or Customer IP.

{% hint style="info" %}
If a customer's language is not in your Detected Language list, the widget always falls back to your **Default Language**.
{% endhint %}

***

### Set up the default language

{% stepper %}
{% step %}
Go to **Joy Loyalty > Translations**
{% endstep %}

{% step %}
Under **Default Language**, select the language you want to use as the base for your widget
{% endstep %}

{% step %}
**Save** your changes — the widget will now display in that language for all customers
{% endstep %}
{% endstepper %}

***

### Set up detected language

{% hint style="info" %}
Detected Language requires **Advanced or Ultimate** plan.
{% endhint %}

{% stepper %}
{% step %}
Go to **Joy Loyalty > Translations**
{% endstep %}

{% step %}
Under **Detected Language**, choose how to detect each customer's language:

* **Shopify language selector** ⭐ — syncs with whichever language the customer selects on your Shopify storefront. Works without requiring the customer to be logged in. **Recommended for multi-language stores.**
* **Browser Language** — detects language from the customer's browser settings
* **Customer's IP** — detects language based on geographic location
  {% endstep %}

{% step %}
Click **Add Detected Language** and select all the languages you want to support
{% endstep %}

{% step %}
**Save** — Joy will now automatically display the widget in each customer's language when they're logged in
{% endstep %}
{% endstepper %}

#### Translate with Shopify language selector (recommended)

This is the most seamless option for multi-language Shopify stores. Joy syncs with whichever language the customer has selected on your storefront — no customer login required, and it works across the widget, loyalty page, account page, and checkout extensions all at once.

Combine the [Shopify language selector](https://help.shopify.com/en/manual/international/localization-and-translation) with Joy translation settings for a consistent translated experience across your entire store.

{% embed url="<https://app.arcade.software/share/GxKUi33tqFayrdO4NYuK>" %}

***

### Edit widget content

You can customise every piece of text in the widget — button labels, messages, point names, and more.

{% stepper %}
{% step %}
Go to **Joy Loyalty > Translations**, then select **Widget Design**
{% endstep %}

{% step %}
Choose the language you want to edit from the language tabs
{% endstep %}

{% step %}
Navigate through the tabs (Earn, Redeem, VIP, etc.) and update each label as needed
{% endstep %}

{% step %}
Click **Save** to apply your changes
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
**Keep variables in English.** When editing translations, always preserve variable placeholders in their original English format: `{{variable_name}}`. Only translate the surrounding text.

✅ **Correct (Spanish):** `Página {{page_number}}`

❌ **Incorrect:** `Página {{número_de_página}}` — this will display as raw text, not the actual value.
{% endhint %}

***

### Checkout sign-up block translations

Joy's **sign-up block** — the checkout extension that invites guest customers to join your loyalty program — now detects the customer's browser language and displays translated text automatically.

The following text elements in the sign-up block are translated:

| Text element      | Example (English)                                                       |
| ----------------- | ----------------------------------------------------------------------- |
| Heading           | "Claim your points!"                                                    |
| Body content      | "You have earned X points. Join our loyalty program to receive rewards" |
| Sign-up button    | "Join program"                                                          |
| Login button      | "Sign in"                                                               |
| Login description | "Already a member?"                                                     |

Language detection for the sign-up block uses the Shopify `useLanguage` hook — it reads the customer's browser locale at checkout and applies the matching translation automatically. Fallback to English is used when no translation exists for a language.

To set up or customise translations for the checkout sign-up block, go to **Joy → Translations** and select the **Checkout** tab.

***

### Wallet pass translations

If you use Apple Wallet or Google Wallet passes, the pass content (tier name, points label, store name) can also be translated. Wallet pass translations follow the same language settings as your widget — when a customer's language is detected, their pass will display in that language automatically.

***

### FAQ

**Q: Can I translate email notifications as well?**\
A: Not yet — email notification translation is not currently supported. The Translations feature covers the loyalty widget, loyalty page, account page, checkout extensions, and wallet passes.

**Q: Do I need to translate every label manually when adding a new language?**\
A: No. When you add a new detected language, Joy automatically translates all widget labels using Google Translate. You can then review and refine any labels you want to customise — but the full translation is ready to use immediately.

**Q: How many detected languages can I add?**\
A: Up to 5 additional languages by default.

**Q: Does translated content affect my Shopify store's SEO?**\
A: The Joy widget is loaded client-side and does not affect Shopify's storefront HTML for SEO purposes. For SEO-relevant multi-language content, use Shopify's native translation tools.

**Q: Can I rename the word "points" to something custom in each language?**\
A: Yes. Go to Translations, select a language, and update the "Points" label in the translation editor. Each language can have a different label — for example "Stars" in English and "Étoiles" in French.

**Q: Is the Detect Language feature available on all plans?**\
A: No — Detect Language requires **Advanced or Ultimate**. On Essential, you can set a fixed default language other than English but cannot enable automatic language detection.
