> ## 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.

# Mensagens em múltiplos idiomas

> Envie mensagens personalizadas em vários idiomas através de push, email e mensagens in-app usando o painel ou API do OneSignal.

Este guia explica como definir o idioma de um usuário no OneSignal e enviar mensagens no idioma preferido dele através de notificações push, emails e mensagens in-app.

## Definir idioma do usuário

O OneSignal define automaticamente a propriedade `language` a partir do idioma do dispositivo quando um usuário é criado pela primeira vez usando os SDKs web ou mobile.

Você também pode definir ou atualizar manualmente o idioma do usuário usando o código de idioma de 2 letras [ISO 639-1](#idiomas-suportados) com:

1. O método `setLanguage` do SDK.
2. O campo `language` nas APIs [Create user](/reference/create-user) ou [Update user](/reference/update-user).
3. A coluna `language` no [Importador CSV](./import).

<Note>
  Consulte [Idiomas suportados](#idiomas-suportados) para uma lista de códigos de idioma válidos.
</Note>

***

## Enviar mensagens em diferentes idiomas

Use as abas abaixo para visualizar opções de localização por canal de mensagem.

<Tabs>
  <Tab title="Notificações Push">
    ### Envio pelo painel

    Em **Messages > Push > New Message** ou [Templates](./templates), clique em **Add Languages**. Escolha entre:

    #### Opção 1: Caixas de seleção

    Selecione os idiomas que você suporta. Qualquer idioma não selecionado voltará para Any/English.

    <Frame caption="Usando caixas de seleção para selecionar os idiomas.">
      <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>

    #### Opção 2: Importar conteúdo de idioma

    Use o modelo fornecido para formatar a mensagem em cada idioma.

    <Frame caption="Modal para copiar e colar dados de uma planilha.">
      <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>

    Copie e cole o conteúdo de volta no campo "Add Languages".

    <Frame caption="Modal com dados de exemplo.">
      <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>

    Visualize o conteúdo para verificar novamente, insira o conteúdo e novas abas aparecerão no editor com o conteúdo designado preenchido.

    <Frame caption="Visualização de conteúdo.">
      <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>

    #### Opção 3: Conteúdo Dinâmico

    Use [Conteúdo Dinâmico](./dynamic-content) que envolve criar e fazer upload de um arquivo CSV com os idiomas que você suporta.

    #### Solução de problemas

    * **Inglês obrigatório**: Inclua uma linha para `en` como padrão.
    * **Use cabeçalhos corretos**: `language_code`, `title`, `subtitle`, `message`
    * **Valores separados por vírgula**: Garanta formatação CSV adequada.
    * **Idioma não suportado**: Se não estiver listado na IU ou modelo, não é suportado. Use a próxima melhor opção e entre em contato com `support@onesignal.com`.

    <Info>
      O editor do painel usa um campo HTML padrão. Caracteres especiais como `%` podem causar problemas de exibição em idiomas RTL. Adicione [marcas RLM](https://en.wikipedia.org/wiki/Right-to-left_mark) após esses caracteres para corrigir problemas de formatação.
    </Info>

    ***

    ### Envio por API

    Os campos `contents` e `headings` suportam vários idiomas:

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

  <Tab title="Email">
    ### Envio pelo painel

    Em **Messages > Email > New Message** ou [Templates](./templates), escolha entre:

    #### Opção 1: Segmentos

    1. Crie um segmento para cada idioma.
    2. Crie um template por idioma.
    3. Envie cada um para seu segmento correspondente.

    #### Opção 2: Sintaxe Liquid

    Use [sintaxe Liquid](./using-liquid-syntax) e [substituição de propriedade ou tag](./message-personalization) para criar declarações condicionais na mensagem e renderizar o conteúdo apropriado com base no idioma do usuário.

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

    <Frame caption="Exemplo de template de email multilíngue usando sintaxe 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>

    #### Opção 3: Conteúdo Dinâmico

    Use [Conteúdo Dinâmico](./dynamic-content) que envolve criar e fazer upload de um arquivo CSV com os idiomas que você suporta.

    ***

    ### Envio por API

    Usando a [API Create message](/reference/create-message), você pode:

    * Direcionar segmentos ou filtros de idioma como faria com o painel.
    * Criar Templates de mensagem com sintaxe Liquid utilizando `custom_data`, substituição de propriedade ou tag. Consulte [Personalização de Mensagens](./message-personalization) para mais detalhes sobre essas opções.

    Exemplo de personalização em massa com `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>
      Cliente vê:

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

  <Tab title="Mensagens in-app">
    ### Painel - Segmentos

    Para enviar uma Mensagem In-App específica de idioma para cada idioma que você precisa suportar:

    1. Crie um segmento para cada idioma.
    2. Crie uma mensagem in-app por idioma.
    3. Envie cada uma para seu segmento correspondente.

    ### Substituição de tag

    Use [sintaxe Liquid](./using-liquid-syntax) e [substituição de tag](./message-personalization) para criar declarações condicionais na mensagem e renderizar o conteúdo apropriado com base em tags.

    <Warning>
      Apenas a substituição de Tag é suportada para mensagens 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">
    ### Envio pelo painel

    Em **Messages > SMS > New Message** ou [Templates](./templates), escolha entre:

    #### Opção 1: Segmentos

    1. Crie um segmento para cada idioma.
    2. Crie um template por idioma.
    3. Envie cada um para seu segmento correspondente.

    #### Opção 2: Conteúdo Dinâmico

    Use [Conteúdo Dinâmico](./dynamic-content) que envolve criar e fazer upload de um arquivo CSV com os idiomas que você suporta.

    ***

    ### Envio por API

    Os campos `contents` e `headings` suportam vários idiomas:

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

***

## Idiomas suportados

O código de idioma mapeia para a propriedade de usuário `language` no formato de código de 2 letras ISO 639-1. Suportamos os seguintes códigos de idioma.

<Note>
  Se o código de idioma não estiver incluído no pop-up e template CSV, então este idioma não é suportado. Recomendamos usar o próximo melhor idioma e nos enviar uma solicitação de produto para `support@onesignal.com`
</Note>

| Language              | Language Code |
| --------------------- | ------------- |
| English               | en            |
| Arabic                | ar            |
| Azerbaijani           | az            |
| Bosnian               | bs            |
| Catalan               | ca            |
| Chinese (Simplified)  | zh-Hans       |
| Chinese (Traditional) | zh-Hant       |
| Croatian              | hr            |
| Czech                 | cs            |
| Danish                | da            |
| Dutch                 | nl            |
| Estonian              | et            |
| Finnish               | fi            |
| French                | fr            |
| Georgian              | ka            |
| Bulgarian             | bg            |
| German                | de            |
| Greek                 | el            |
| Hindi                 | hi            |
| Hebrew                | he            |
| Hungarian             | hu            |
| Indonesian            | id            |
| Italian               | it            |
| Japanese              | ja            |
| Korean                | ko            |
| Latvian               | lv            |
| Lithuanian            | lt            |
| Malay                 | ms            |
| Norwegian             | nb            |
| Persian               | fa            |
| Polish                | pl            |
| Portuguese            | pt            |
| Punjabi               | pa            |
| Romanian              | ro            |
| Russian               | ru            |
| Serbian               | sr            |
| Slovak                | sk            |
| Spanish               | es            |
| Swedish               | sv            |
| Thai                  | th            |
| Turkish               | tr            |
| Ukrainian             | uk            |
| Vietnamese            | vi            |

***
