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

# 다국어 메시징

> OneSignal 대시보드 또는 API를 사용하여 푸시, 이메일 및 In-app 메시징에서 여러 언어로 개인화된 메시지를 보내세요.

이 가이드는 OneSignal에서 사용자의 언어를 설정하고 푸시 알림, 이메일 및 In-app 메시지에서 사용자가 선호하는 언어로 메시지를 보내는 방법을 설명합니다.

## 사용자 언어 설정

OneSignal은 웹 또는 모바일 SDK를 사용하여 사용자가 처음 생성될 때 장치의 언어에서 `language` 속성을 자동으로 설정합니다.

[ISO 639-1](#supported-languages) 2자 언어 코드를 사용하여 다음 방법으로 사용자의 언어를 수동으로 설정하거나 업데이트할 수도 있습니다:

1. SDK의 `setLanguage` 메서드
2. [Create user](/reference/create-user) 또는 [Update user](/reference/update-user) API의 `language` 필드
3. [CSV Importer](./import)의 `language` 열

<Note>
  유효한 언어 코드 목록은 [지원되는 언어](#supported-languages)를 참조하세요.
</Note>

***

## 다른 언어로 메시지 보내기

아래 탭을 사용하여 메시징 채널별 현지화 옵션을 확인하세요.

<Tabs>
  <Tab title="푸시 알림">
    ### 대시보드 전송

    **Messages > Push > New Message** 또는 [Templates](./templates)에서 **Add Languages**를 클릭합니다. 다음 중 선택하세요:

    #### 옵션 1: 체크박스

    지원하는 언어를 선택합니다. 선택하지 않은 언어는 Any/English로 대체됩니다.

    <Frame caption="체크박스를 사용하여 언어 선택">
      <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>

    #### 옵션 2: 언어 콘텐츠 가져오기

    제공된 템플릿을 사용하여 각 언어로 메시지 형식을 지정합니다.

    <Frame caption="스프레드시트에서 데이터를 복사하여 붙여넣는 모달">
      <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>

    콘텐츠를 "Add Languages" 필드에 다시 복사하여 붙여넣습니다.

    <Frame caption="예제 데이터가 있는 모달">
      <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>

    콘텐츠를 미리 보기하여 다시 확인하고, 콘텐츠를 삽입하면 지정된 콘텐츠가 채워진 새 탭이 편집기에 나타납니다.

    <Frame caption="콘텐츠 미리보기">
      <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>

    #### 옵션 3: Dynamic Content

    지원하는 언어로 CSV 파일을 생성하고 업로드하는 [Dynamic Content](./dynamic-content)를 사용합니다.

    #### 문제 해결

    * **영어 필수**: 기본값으로 `en`에 대한 행을 포함합니다.
    * **올바른 헤더 사용**: `language_code`, `title`, `subtitle`, `message`
    * **쉼표로 구분된 값**: 적절한 CSV 형식을 확인합니다.
    * **지원되지 않는 언어**: UI 또는 템플릿에 나열되지 않은 경우 지원되지 않습니다. 차선책을 사용하고 `support@onesignal.com`에 문의하세요.

    <Info>
      대시보드 편집기는 표준 HTML 필드를 사용합니다. `%`와 같은 특수 문자는 RTL 언어에서 표시 문제를 일으킬 수 있습니다. 이러한 문자 뒤에 [RLM 마크](https://en.wikipedia.org/wiki/Right-to-left_mark)를 추가하여 형식 문제를 해결하세요.
    </Info>

    ***

    ### API 전송

    `contents` 및 `headings` 필드는 여러 언어를 지원합니다:

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

  <Tab title="이메일">
    ### 대시보드 전송

    **Messages > Email > New Message** 또는 [Templates](./templates)에서 다음 중 선택하세요:

    #### 옵션 1: Segment

    1. 각 언어에 대한 Segment를 생성합니다.
    2. 언어별 템플릿을 생성합니다.
    3. 각각을 해당 Segment로 보냅니다.

    #### 옵션 2: Liquid 구문

    [Liquid 구문](./using-liquid-syntax) 및 [속성 또는 태그 대체](./message-personalization)를 사용하여 메시지에 조건문을 생성하고 사용자의 언어에 따라 적절한 콘텐츠를 렌더링합니다.

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

    <Frame caption="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>

    #### 옵션 3: Dynamic Content

    지원하는 언어로 CSV 파일을 생성하고 업로드하는 [Dynamic Content](./dynamic-content)를 사용합니다.

    ***

    ### API 전송

    [Create message API](/reference/create-message)를 사용하면 다음을 수행할 수 있습니다:

    * 대시보드에서와 마찬가지로 언어 Segment 또는 필터를 타겟팅합니다.
    * `custom_data`, 속성 또는 태그 대체를 활용하여 Liquid 구문으로 메시지 템플릿을 생성합니다. 이러한 옵션에 대한 자세한 내용은 [메시지 개인화](./message-personalization)를 참조하세요.

    `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>
      고객에게 표시되는 내용:

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

  <Tab title="In-app 메시지">
    ### 대시보드 - Segment

    지원해야 하는 각 언어로 언어별 In-App 메시지를 보내려면:

    1. 각 언어에 대한 Segment를 생성합니다.
    2. 언어별 In-app 메시지를 생성합니다.
    3. 각각을 해당 Segment로 보냅니다.

    ### 태그 대체

    [Liquid 구문](./using-liquid-syntax) 및 [태그 대체](./message-personalization)를 사용하여 메시지에 조건문을 생성하고 태그를 기반으로 적절한 콘텐츠를 렌더링합니다.

    <Warning>
      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">
    ### 대시보드 전송

    **Messages > SMS > New Message** 또는 [Templates](./templates)에서 다음 중 선택하세요:

    #### 옵션 1: Segment

    1. 각 언어에 대한 Segment를 생성합니다.
    2. 언어별 템플릿을 생성합니다.
    3. 각각을 해당 Segment로 보냅니다.

    #### 옵션 2: Dynamic Content

    지원하는 언어로 CSV 파일을 생성하고 업로드하는 [Dynamic Content](./dynamic-content)를 사용합니다.

    ***

    ### API 전송

    `contents` 및 `headings` 필드는 여러 언어를 지원합니다:

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

***

## 지원되는 언어

언어 코드는 ISO 639-1 코드 2자 형식의 `language` 사용자 속성에 매핑됩니다. 다음 언어 코드를 지원합니다.

<Note>
  팝업 및 CSV 템플릿에 언어 코드가 포함되지 않은 경우 해당 언어는 지원되지 않습니다. 차선책 언어를 사용하고 `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            |

***
