> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Messagerie multilingue

> Envoyez des messages personnalisés en plusieurs langues pour le push, l'email et les messages in-app en utilisant le tableau de bord OneSignal ou l'API.

Ce guide explique comment définir la langue d'un utilisateur dans OneSignal et envoyer des messages dans leur langue préférée pour les notifications push, les emails et les messages in-app.

## Définir la langue de l'utilisateur

OneSignal définit automatiquement la propriété `language` à partir de la langue de l'appareil lorsqu'un utilisateur est créé pour la première fois via les SDK web ou mobile.

Vous pouvez également définir ou mettre à jour manuellement la langue de l'utilisateur en utilisant le code de langue à 2 lettres [ISO 639-1](#supported-languages) avec :

1. La méthode `setLanguage` du SDK.
2. Le champ `language` dans les API [Créer un utilisateur](/reference/create-user) ou [Mettre à jour un utilisateur](/reference/update-user).
3. La colonne `language` dans l'[Importateur CSV](./import).

<Note>
  Consultez [Langues prises en charge](#supported-languages) pour une liste des codes de langue valides.
</Note>

***

## Envoyer des messages en différentes langues

Utilisez les onglets ci-dessous pour voir les options de localisation par canal de messagerie.

<Tabs>
  <Tab title="Notifications push">
    ### Envoi depuis le tableau de bord

    Depuis **Messages > Push > Nouveau message** ou [Modèles](./templates), cliquez sur **Ajouter des langues**. Choisissez parmi :

    #### Option 1 : Cases à cocher

    Sélectionnez les langues que vous prenez en charge. Toute langue non sélectionnée reviendra à Any/English.

    <Frame caption="Utilisation de cases à cocher pour sélectionner les langues.">
      <img src="https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/6291cdff9431f4ac7c4cbb7cbeff8d39f06c9cd5332f0b9b9309f8ff1071632a-Screenshot_2025-01-30_at_10.30.54_AM.png?fit=max&auto=format&n=jFWn5xzleD8du3j6&q=85&s=0fb96aa3471800377551d68effdfa1ae" width="1390" height="924" data-path="images/docs/6291cdff9431f4ac7c4cbb7cbeff8d39f06c9cd5332f0b9b9309f8ff1071632a-Screenshot_2025-01-30_at_10.30.54_AM.png" />
    </Frame>

    #### Option 2 : Importer le contenu linguistique

    Utilisez le modèle fourni pour formater le message dans chaque langue.

    <Frame caption="Modale pour copier et coller des données à partir d'une feuille de calcul.">
      <img src="https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/5aa9be9a86f23eaef5810d84496e974d3ec911f884e3bd2e4765cb97faa94e76-Screenshot_2025-01-30_at_10.46.31_AM.png?fit=max&auto=format&n=jFWn5xzleD8du3j6&q=85&s=06d2858a2e8eef6019f4b87ec9b862f6" width="1780" height="1018" data-path="images/docs/5aa9be9a86f23eaef5810d84496e974d3ec911f884e3bd2e4765cb97faa94e76-Screenshot_2025-01-30_at_10.46.31_AM.png" />
    </Frame>

    Copiez et collez le contenu dans le champ "Ajouter des langues".

    <Frame caption="Modale avec des données d'exemple.">
      <img src="https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/5661f24c79e47b246eaffc22955de3b5dfbc8ab746958b0c0db82a997a2ad5d3-Screenshot_2025-01-30_at_10.53.34_AM.png?fit=max&auto=format&n=jFWn5xzleD8du3j6&q=85&s=b1fd2210bc3fb85c554b0f71ffbd2f94" width="1780" height="1018" data-path="images/docs/5661f24c79e47b246eaffc22955de3b5dfbc8ab746958b0c0db82a997a2ad5d3-Screenshot_2025-01-30_at_10.53.34_AM.png" />
    </Frame>

    Prévisualisez le contenu pour vérifier, insérez le contenu, et de nouveaux onglets apparaîtront dans l'éditeur avec le contenu désigné rempli.

    <Frame caption="Aperçu du contenu.">
      <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/7acf7e51c3b6dd2ace8c4da6acd04942ca1a10086949e2f7ffd1c88328f1f78e-Screenshot_2025-01-30_at_10.54.27_AM.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=323fa5b31d9905bde453aa0ad893d919" width="1584" height="664" data-path="images/docs/7acf7e51c3b6dd2ace8c4da6acd04942ca1a10086949e2f7ffd1c88328f1f78e-Screenshot_2025-01-30_at_10.54.27_AM.png" />
    </Frame>

    #### Option 3 : Contenu dynamique

    Utilisez le [Contenu dynamique](./dynamic-content) qui implique la création et le téléchargement d'un fichier CSV avec les langues que vous prenez en charge.

    #### Dépannage

    * **Anglais requis** : Incluez une ligne pour `en` par défaut.
    * **Utilisez les en-têtes corrects** : `language_code`, `title`, `subtitle`, `message`
    * **Valeurs séparées par des virgules** : Assurez-vous du formatage CSV approprié.
    * **Langue non prise en charge** : Si elle n'est pas listée dans l'interface ou le modèle, elle n'est pas prise en charge. Utilisez la meilleure option suivante et contactez `support@onesignal.com`.

    <Info>
      L'éditeur du tableau de bord utilise un champ HTML standard. Les caractères spéciaux comme `%` peuvent causer des problèmes d'affichage dans les langues RTL. Ajoutez des [marques RLM](https://en.wikipedia.org/wiki/Right-to-left_mark) après ces caractères pour corriger les problèmes de formatage.
    </Info>

    ***

    ### Envoi via API

    Les champs `contents` et `headings` prennent en charge plusieurs langues :

    ```json theme={null}
      {
        "contents": {
          "en": "English content",
          "fr": "French content"
        },
        "headings": {
          "en": "English heading",
          "fr": "French heading"
        }
      }
    ```
  </Tab>

  <Tab title="Email">
    ### Envoi depuis le tableau de bord

    Depuis **Messages > Email > Nouveau message** ou [Modèles](./templates), choisissez parmi :

    #### Option 1 : Segments

    1. Créez un segment pour chaque langue.
    2. Créez un modèle par langue.
    3. Envoyez chacun à son segment correspondant.

    #### Option 2 : Syntaxe Liquid

    Utilisez la [syntaxe Liquid](./using-liquid-syntax) et la [substitution de propriétés ou de tags](./message-personalization) pour créer des instructions conditionnelles dans le message et afficher le contenu approprié en fonction de la langue de l'utilisateur.

    ```text Liquid theme={null}
    {% assign language = subscription.language %}
    {% if language == 'fr' %}
      Bonjour {{ name }}!
    {% elsif language == 'es' %}
      Hola {{ name }}!
    {% else %}
      Hi {{ name }}!
    {% endif %}
    ```

    <Frame caption="Exemple de modèle d'email multilingue utilisant la syntaxe Liquid.">
      <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/220a329-Multi-Language_Graphic_4.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=3e02125c87dbdf72ca3708c289831394" width="1869" height="1853" data-path="images/docs/220a329-Multi-Language_Graphic_4.png" />
    </Frame>

    #### Option 3 : Contenu dynamique

    Utilisez le [Contenu dynamique](./dynamic-content) qui implique la création et le téléchargement d'un fichier CSV avec les langues que vous prenez en charge.

    ***

    ### Envoi via API

    En utilisant l'[API Créer un message](/reference/create-message), vous pouvez :

    * Cibler des segments ou des filtres linguistiques comme vous le feriez avec le tableau de bord.
    * Créer des modèles de messages avec la syntaxe Liquid en utilisant `custom_data`, la substitution de propriétés ou de tags. Consultez [Personnalisation des messages](./message-personalization) pour plus de détails sur ces options.

    Exemple de personnalisation en masse avec `custom_data` :

    ```liquid Template theme={null}
    {% assign eid = message.custom_data.users[subscription.external_id] %}
    Hi {{ eid.first_name }}, you have {{ eid.points }} points. Your level is {{ eid.level }}.
    ```

    ```json API Request theme={null}
    {
      "app_id": "YOUR_APP_ID",
      "template_id": "YOUR_TEMPLATE_ID",
      "include_aliases": {
        "external_id": ["user123", "user456"]
      },
      "custom_data": {
        "users": {
          "user123": { "first_name": "John", "points": "150", "level": "Gold" },
          "user456": { "first_name": "Sarah", "points": "200", "level": "Platinum" }
        }
      }
    }
    ```

    <Check>
      Le client voit :

      * "Hi John, you have 150 points. Your level is Gold."
      * "Hi Sarah, you have 200 points. Your level is Platinum."
    </Check>
  </Tab>

  <Tab title="Messages in-app">
    ### Tableau de bord - Segments

    Pour envoyer un message in-app spécifique à une langue pour chaque langue que vous devez prendre en charge :

    1. Créez un segment pour chaque langue.
    2. Créez un message in-app par langue.
    3. Envoyez chacun à son segment correspondant.

    ### Substitution de tags

    Utilisez la [syntaxe Liquid](./using-liquid-syntax) et la [substitution de tags](./message-personalization) pour créer des instructions conditionnelles dans le message et afficher le contenu approprié en fonction des tags.

    <Warning>
      Seule la substitution de tags est prise en charge pour les messages in-app.
    </Warning>

    ```Text Tags theme={null}
    language : german
    first_name : Jon
    ```

    ```Text Template theme={null}
    {% assign lang = language%}
      {% if lang == "english" %}
        Good day {{first_name}}!
      {%- elsif lang == 'german' -%}
        Guten Tag {{first_name}}!
      {%- elsif lang == 'spanish' -%}
        Buenos Dias {{first_name}}!
      {%- elsif lang == 'french' -%}
        Bonjour {{first_name}}!
      {% else %}
        Hello {{first_name}}!
    {% endif %}
    ```

    ```Text Result theme={null}
    Guten Tag Jon!
    ```
  </Tab>

  <Tab title="SMS">
    ### Envoi depuis le tableau de bord

    Depuis **Messages > SMS > Nouveau message** ou [Modèles](./templates), choisissez parmi :

    #### Option 1 : Segments

    1. Créez un segment pour chaque langue.
    2. Créez un modèle par langue.
    3. Envoyez chacun à son segment correspondant.

    #### Option 2 : Contenu dynamique

    Utilisez le [Contenu dynamique](./dynamic-content) qui implique la création et le téléchargement d'un fichier CSV avec les langues que vous prenez en charge.

    ***

    ### Envoi via API

    Les champs `contents` et `headings` prennent en charge plusieurs langues :

    ```json theme={null}
      {
        "contents": {
          "en": "English content",
          "fr": "French content"
        },
        "headings": {
          "en": "English heading",
          "fr": "French heading"
        }
      }
    ```
  </Tab>
</Tabs>

***

## Langues prises en charge

Le code de langue correspond à la propriété utilisateur `language` au format ISO 639-1 à 2 lettres. Nous prenons en charge les codes de langue suivants.

<Note>
  Si le code de langue n'est pas inclus dans la fenêtre contextuelle et le modèle CSV, alors cette langue n'est pas prise en charge. Nous recommandons d'utiliser la meilleure langue suivante et de nous envoyer une demande de produit à `support@onesignal.com`
</Note>

| Langue                 | Code de langue |
| ---------------------- | -------------- |
| Anglais                | en             |
| Arabe                  | ar             |
| Azéri                  | az             |
| Bosniaque              | bs             |
| Catalan                | ca             |
| Chinois (simplifié)    | zh-Hans        |
| Chinois (traditionnel) | zh-Hant        |
| Croate                 | hr             |
| Tchèque                | cs             |
| Danois                 | da             |
| Néerlandais            | nl             |
| Estonien               | et             |
| Finnois                | fi             |
| Français               | fr             |
| Géorgien               | ka             |
| Bulgare                | bg             |
| Allemand               | de             |
| Grec                   | el             |
| Hindi                  | hi             |
| Hébreu                 | he             |
| Hongrois               | hu             |
| Indonésien             | id             |
| Italien                | it             |
| Japonais               | ja             |
| Coréen                 | ko             |
| Letton                 | lv             |
| Lituanien              | lt             |
| Malais                 | ms             |
| Norvégien              | nb             |
| Persan                 | fa             |
| Polonais               | pl             |
| Portugais              | pt             |
| Pendjabi               | pa             |
| Roumain                | ro             |
| Russe                  | ru             |
| Serbe                  | sr             |
| Slovaque               | sk             |
| Espagnol               | es             |
| Suédois                | sv             |
| Thaï                   | th             |
| Turc                   | tr             |
| Ukrainien              | uk             |
| Vietnamien             | vi             |

***
