# Multiple Languages

Jimo allows displaying content in a specific language depending on the **user's browser language.**\
You can do it manually if you want, but **we offer an automatic translation of content with AI**.

{% hint style="info" %}
Additionally, you can **force a specific language** using an SDK command instead of relying on the browser’s settings, you can **use the Jimo SDK.**&#x20;

This allows you to adapt translations based on your own website’s language parameter instead of relying on the browser's default setting.

[See the SDK documentation on forcing a language for details.](/docs/for-developers/for-developers/sdk-methods.md#force-language)
{% endhint %}

***

#### **Quick access**

* [Languages available](#languages-available)
* [Translate your content in a Jimo's experience](#can-i-show-poke-content-in-different-languages-in-a-poke)

***

## Languages available

Jimo allows you to translate your content into **34 different languages**:

<details>

<summary>See the full list of supported languages</summary>

<table><thead><tr><th width="80.2222900390625" align="center">Flag</th><th>Language</th><th>Code</th></tr></thead><tbody><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1e6-1f1f1">🇦🇱</span></td><td>Albanian</td><td><code>sq</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f8-1f1e6">🇸🇦</span></td><td>Arabic</td><td><code>ar</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1e7-1f1ec">🇧🇬</span></td><td>Bulgarian</td><td><code>bg</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1e8-1f1f3">🇨🇳</span></td><td>Chinese (Simplified)</td><td><code>zh</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f9-1f1fc">🇹🇼</span></td><td>Chinese (Traditional)</td><td><code>zh-hant</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1e8-1f1ff">🇨🇿</span></td><td>Czech</td><td><code>cs</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1e9-1f1f0">🇩🇰</span></td><td>Danish</td><td><code>da</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f3-1f1f1">🇳🇱</span></td><td>Dutch</td><td><code>nl</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1ec-1f1e7">🇬🇧</span></td><td>English</td><td><code>en</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1eb-1f1ee">🇫🇮</span></td><td>Finnish</td><td><code>fi</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1eb-1f1f7">🇫🇷</span></td><td>French</td><td><code>fr</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1e9-1f1ea">🇩🇪</span></td><td>German</td><td><code>de</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1ec-1f1f7">🇬🇷</span></td><td>Greek</td><td><code>el</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1ee-1f1f1">🇮🇱</span></td><td>Hebrew</td><td><code>he</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1ed-1f1fa">🇭🇺</span></td><td>Hungarian</td><td><code>hu</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1ee-1f1e9">🇮🇩</span></td><td>Indonesian</td><td><code>id</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1ee-1f1f9">🇮🇹</span></td><td>Italian</td><td><code>it</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1ef-1f1f5">🇯🇵</span></td><td>Japanese</td><td><code>jp</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f1-1f1e6">🇱🇦</span></td><td>Laotian</td><td><code>lo</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f3-1f1f4">🇳🇴</span></td><td>Norwegian</td><td><code>no</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f3-1f1f4">🇳🇴</span></td><td>Norwegian Bokmål</td><td><code>nb</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f3-1f1f4">🇳🇴</span></td><td>Norwegian Nynorsk</td><td><code>nn</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f5-1f1f1">🇵🇱</span></td><td>Polish</td><td><code>pl</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f5-1f1f9">🇵🇹</span></td><td>Portuguese</td><td><code>pt</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f7-1f1f4">🇷🇴</span></td><td>Romanian</td><td><code>ro</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f7-1f1fa">🇷🇺</span></td><td>Russian</td><td><code>ru</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f7-1f1f8">🇷🇸</span></td><td>Serbian</td><td><code>sr</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f8-1f1f0">🇸🇰</span></td><td>Slovak</td><td><code>sk</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1ea-1f1f8">🇪🇸</span></td><td>Spanish</td><td><code>es</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f8-1f1ea">🇸🇪</span></td><td>Swedish</td><td><code>sv</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f9-1f1ed">🇹🇭</span></td><td>Thai</td><td><code>th</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1f9-1f1f7">🇹🇷</span></td><td>Turkish</td><td><code>tr</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1fa-1f1e6">🇺🇦</span></td><td>Ukrainian</td><td><code>uk</code></td></tr><tr><td align="center"><span data-gb-custom-inline data-tag="emoji" data-code="1f1fb-1f1f3">🇻🇳</span></td><td>Vietnamese</td><td><code>vi</code></td></tr></tbody></table>

</details>

It will be automatically displayed depending on **the user's browser language.**\
If the language is not found it will fall back to the default version.&#x20;

If you ever need any other languages, reach out to Jimo's support team and we'll add it!&#x20;

<figure><img src="/files/FXuj73pwf0Q6CtGfTpWC" alt=""><figcaption><p>Languages available</p></figcaption></figure>

{% hint style="warning" icon="user-gear" %}

### What if my website uses a custom language param in the user data?

Some apps store the user's language as part of the user profile (e.g. a `locale` or `preferred_language` field in your backend) rather than relying on the browser language. In that case, you can push that value directly to Jimo so translations match the user's preference regardless of the browser settings.

The recommended setup is to **push the language code via the SDK** using the [force language](/docs/for-developers/for-developers/sdk-methods.md#force-language) method. Pass the [language code](#languages-available) (e.g. `fr`, `en`, `pt`) from your user data to the SDK at init time or whenever the user changes their language preference.

1. Read the user's language preference from your user data or app state.
2. Pass the matching language code to the SDK (`sq`, `ar`, `bg`, `zh`, `zh-hant`, etc., see the [full list](#languages-available)).
3. Jimo will then display the matching translation for every experience the user sees, ignoring the browser language.

This approach is useful when your product lets users pick their own UI language independently from their browser, or when you need translations to follow the user across devices.
{% endhint %}

{% hint style="success" icon="file-brackets-curly" %}

### What if my website uses a language slug in the URL?

Some websites use a language slug in the URL (e.g. `yoursite.com/fr/pricing` vs `yoursite.com/en/pricing`) rather than relying on the browser language. In that case, the built-in translation feature may not be the best fit, since the same user's browser language won't reflect the page they're actually on.

The recommended workaround is to **duplicate the experience per language** and use **URL targeting** on the audience to fire each version only on the matching URL pattern.

1. Build your experience in the default language.
2. Duplicate it once per language you need.
3. Translate each duplicate's content.
4. On each duplicate, set the audience to target the matching URL pattern (e.g. `/fr/*` for the French version, `/en/*` for the English one).

See [Target specific URLs, domains & where](/docs/publish/target-specific-urls-domains-where.md) for the full audience URL targeting setup.
{% endhint %}

## How to display experiences in different languages?

&#x20;In your **Experience edition** (Jimo's builder), click on the **Translation Feature on the left bar**, and you will see all your step contents, then **Add a translation**.

<figure><img src="/files/sgZCekUA8hnz5EIkZAOh" alt=""><figcaption></figcaption></figure>

Add your different languages, then modify the content with the right language manually or do it automatically with **Smart Translate**.

<figure><img src="/files/ljumKeWccEM1Xj2lxqKW" alt=""><figcaption><p>Translation tab</p></figcaption></figure>

* **A (Add Translations Button)**: Click here to start adding translations to different elements of your tour. This is your first step towards creating a multilingual experience.
* **B (Smart Translate)**: Utilize this AI-powered tool to automatically generate translations based on your original content. It's efficient for quickly producing accurate translations across various languages.
* **C (Language Selection)**: This dropdown menu lets you select the language you're working on. Once selected, you can proceed to input or edit translations specific to that language.
* **D (Translation Editor)**: In this section, manually input or edit the translations for elements like titles, paragraphs, labels, and calls-to-action. This editor shows you exactly where each translated text will appear in your tour, ensuring you can tailor the content to fit cultural nuances and language specifics.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.usejimo.com/docs/build/multiple-languages.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
