콘텐츠로 건너뛰기

현지화

여러 국가에 고객을 보유한 기업의 경우, Braze 여정 초기에 현지화를 처리하면 시간과 리소스를 절약할 수 있습니다.

작동 원리

로케일 정보는 Braze SDK(자동) 또는 REST API를 사용하여 수집한 데이터를 기반으로 사용자 프로필에 저장됩니다. 로케일에는 언어와 지역 식별자가 포함됩니다. 이 정보는 Braze 세분화 툴의 CountryLanguage 에서 확인할 수 있습니다.

번역 관리

번역을 관리하기 위해 다음과 같은 접근 방식을 고려해 보세요.

모든 지역에 하나의 템플릿 사용

이 접근 방식에서는 Braze의 단일 템플릿에 Liquid을 사용하여 현지화를 적용합니다. 발송 후 대시보드에서 집계된 Campaign 분석을 제공합니다. 사용자 수준의 인게이지먼트는 국가수신한 Campaign 필터를 결합하는 등 커스텀 Segment 퍼널을 사용하여 측정할 수 있습니다.

장점 고려 사항
- 중앙 집중식 접근 방식
- 이메일 제작 시간 단축, 이메일을 여러 번 만들 필요 없음
- 수동 보고서 작성 필요
- Campaign 보고서에 국가별 측정기준이 아닌 집계된 측정기준이 표시됨
- Liquid이 예상대로 채워지는지 철저한 테스트 필요
- 국가 값을 가져오는 방식이나 설정된 국가 수에 따라 각 국가를 테스트하기 어려울 수 있음
- 시간대별로 특정 시간에 발송을 예약하기 어려움
- 국가별로 다른 콘텐츠를 발송하려는 경우 사용이 어려움

국가별 하나의 템플릿 사용

이 접근 방식에서는 템플릿을 발송 로케일별로 분리합니다. 발송 후 대시보드에서 각 국가별로 발송 분석을 별도로 보고하며, 다운스트림 사용자 수준의 Currents 이벤트도 특정 Campaign에 연결됩니다.

  • 템플릿은 유지 관리 및 추적 목적으로 태그를 구현하는 것이 좋습니다.
  • Campaigns는 동일한 Braze 템플릿Content Blocks(Liquid이 포함된 이메일 템플릿 등)에서 구성을 상속받을 수 있습니다.
  • 기존 Campaigns 및 템플릿을 복제하여 더 빠르게 가치를 실현할 수 있습니다.
장점 고려 사항
- 여러 지역으로 확장 가능
- Braze 내에서 국가별 매출 보고(예: Campaign별)
- 국가별로 크게 다른 콘텐츠가 있는 경우 유연성 확보
- 전략적 구조화 필요
- 더 많은 제작 노력 필요(예: 각 국가별 별도 Campaign)

모든 지역에 하나의 여정 사용

이 접근 방식에서는 Canvas 기본 사항과 Liquid을 사용하여 각 사용자에 대한 메시징을 정의하고 현지화를 처리합니다.

Canvas 발송 후 대시보드에서 집계된 Canvas 분석을 제공하며, 사용자 수준의 인게이지먼트는 국가수신한 Canvas 단계 필터를 결합하는 등 커스텀 Segment 퍼널을 통해 측정할 수 있습니다.

장점 고려 사항
- 중앙 집중식 접근 방식
- 이메일 제작 시간 단축 - 이메일을 여러 번 만들 필요 없음
- 수동 보고서 작성 필요
- Canvas 보고서에 국가별 측정기준이 아닌 집계된 측정기준이 표시됨
- Liquid이 예상대로 채워지는지 철저한 테스트 필요
- 국가 값을 가져오는 방식이나 설정된 국가 수에 따라 각 국가를 테스트하기 어려울 수 있음
- 시간대별로 특정 시간에 발송을 예약하기 어려움
- 국가별로 다른 콘텐츠를 발송하려는 경우 사용이 어려움

국가별 하나의 여정 사용

이 접근 방식에서는 Canvas 여정 빌더가 여러 Canvas 구성 요소를 통해 사용자 여정을 만들 수 있는 유연성을 제공합니다. 이러한 구성 요소는 구성 요소 수준 및 전체 여정 수준에서 복제할 수 있습니다.

현지화는 다음과 같은 방법으로 달성할 수 있습니다:

  • 국가별 별도 Canvases 사용 — 오디언스 필터를 사용하여 퍼널 상단에서 복잡한 사용자 여정을 정의합니다
  • 국가별 맞춤 사용자 여정 — 오디언스 경로를 구현하여 대규모로 사용자를 직관적으로 세분화하고, 단일 Canvas 내에서 각 국가별로 별도의 메시지 스레드를 생성합니다

발송 후 대시보드에서 국가별 동적 분석과 고객의 현재 위치를 기반으로 한 사용자 수준의 Currents 이벤트를 제공합니다.

장점 고려 사항
- Braze 내에서 국가별 매출 보고(예: Canvas, 배리언트 또는 단계별)
- 국가별로 크게 다른 콘텐츠가 있는 경우 유연성 확보
- 향후 여정의 일부로 다른 채널 추가 가능
- 전략적 구조화 필요
- 더 많은 제작 노력 필요(예: 각 국가별 별도 메시지 단계)
- 단일 Canvas에서 각 국가별로 커스텀 복잡한 여정이 있으면 Canvas가 커지고 읽기 어려울 수 있음

번역된 메시지 발송하기

사용자의 언어, 로케일 또는 커스텀 속성에 기반한 개인화된 메시지를 발송하려면 다음 방법 중 하나를 사용하세요.

번역 Liquid 태그 (권장)

Braze는 {% translation salutation %}Hello!{% endtranslation %} Liquid 태그를 지원하여 하나의 메시지로 다양한 언어의 사용자를 타겟팅할 수 있습니다.

전체 안내는 번역 태그 사용 가이드를 참조하세요.

대안 접근 방식

메시지 본문에 콘텐츠를 직접 붙여넣고 Liquid을 사용하여 수신자에게 올바른 언어를 조건부로 표시할 수 있습니다. 이를 수행하려면:

  1. 메시지를 작성한 후 Language를 선택하여 선택한 각 언어에 대한 Liquid 조건 로직을 생성합니다.
  2. 다음 Liquid 템플릿을 사용하여 메시지를 구성할 수 있습니다. 템플릿이 포함된 각 필드에 대해 템플릿 섹션의 괄호 뒤에 변형을 입력해야 합니다. 변형은 앞의 괄호에 참조된 언어 코드에 해당해야 합니다.

     {% if ${language} == 'en' %}
     This is a message in English from Braze!
     {% elsif ${language} == 'es' %}
     Este es un mensaje en español de Braze !
     {% elsif ${language} == 'zh' %}
     这是一条来自Braze的中文消息。
     {% else %}
     This is a message from Braze! This will go to anyone who does not match the other specified languages!
     {% endif %}
    
  3. 발송 전에 사용자의 ID 또는 이메일을 입력하여 메시지가 개인의 언어에 따라 어떻게 표시되는지 확인하여 메시지를 테스트합니다.

Braze Content Blocks는 재사용 가능한 콘텐츠 블록입니다. 블록이 변경되면 해당 블록을 참조하는 모든 곳이 업데이트됩니다. 예를 들어, 이메일 헤더나 푸터에 대한 업데이트는 모든 이메일에 반영되며, 번역을 관리하는 데에도 사용할 수 있습니다. 이 블록은 REST API를 사용하여 생성업데이트할 수 있으며, 사용자가 프로그래밍 방식으로 번역을 업로드할 수 있습니다.

대시보드에서 Campaign을 구성할 때 Content Blocks는 {{content_blocks.${name_of_content_block}}} 태그를 사용하여 참조할 수 있습니다. 이 블록에는 옵션 1에서와 같이 각 언어에 대한 조건 로직 내에 모든 번역을 포함하거나, 각 언어별로 별도의 블록을 사용할 수 있습니다.

Content Blocks는 번역 관리 프로세스로도 활용할 수 있으며, 번역이 필요한 콘텐츠를 Content Block에 저장하고, 가져와서, 번역한 다음 업데이트합니다:

  1. 대시보드에서 “Needs Translation” 태그가 있는 Content Block을 수동으로 생성합니다.
  2. 서비스가 /content_blocks/list 엔드포인트를 사용하여 모든 Content Blocks를 야간 배치로 가져옵니다.
  3. 서비스가 /content_blocks/info 엔드포인트를 통해 각 Content Block의 세부 정보를 가져와 번역 태그가 있는 블록을 확인합니다.
  4. 번역 서비스가 모든 “Needs Translation” Content Blocks의 본문을 번역합니다.
  5. 서비스가 /content_block/update 엔드포인트를 호출하여 번역된 콘텐츠를 업데이트하고 태그를 “Translation Complete”로 변경합니다.

카탈로그를 사용하면 API 및 CSV 파일을 통해 가져온 JSON 오브젝트의 데이터에 접근하여 커스텀 속성 또는 커스텀 이벤트 속성정보와 유사하게 Liquid를 통해 메시지를 보강할 수 있습니다. 예시:

다음 API 호출을 통해 카탈로그를 생성합니다:

curl --location --request POST 'https://your_api_endpoint/catalogs' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-REST-API-KEY' \
--data-raw '{
 "catalogs": [
   {
     "name": "translations",
     "description": "My localization samples",
     "fields": [
       {
         "name": "id",
         "type": "string"
       },
       {
         "name": "context",
         "type": "string"
       },
       {
         "name": "language",
         "type": "string"
       },
       {
         "name": "body",
         "type": "string"
       }
     ]
   }
 ]
}'

다음 API 호출을 통해 항목을 추가합니다:

curl --location --request POST 'https://your_api_endpoint/catalogs/translations/items' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-REST-API-KEY' \
--data-raw '{
 "items": [
   {
     "id": "1",
     "context": "1",
     "language": "en",
     "body": "Hey"
   },
   {
     "id": "2",
     "context": "1",
     "language": "es",
     "body": "Hola"
   },
   {
     "id": "3",
     "context": "1",
     "language": "pt",
     "body": "Oi"
   },
   {
     "id": "4",
     "context": "1",
     "language": "de",
     "body": "Hallo"
   }
 ]
}'

다음 형식으로 CSV를 생성합니다:

id context language body
1 1 en Hey
2 1 es Hola
3 1 pt Oi
4 1 de Hallo
5 2 en Hey
6 2 es Hola
7 2 pt Oi
8 2 de Hallo
9 3 en Hey
10 3 es Hola
11 3 pt Oi
12 3 de Hallo

이러한 카탈로그 항목은 다음 예제에 표시된 것처럼 개인화 또는 데이터 그룹을 생성할 수 있는 셀렉션을 사용하여 참조할 수 있습니다.

{% catalog_items translations 1 %}
{{items[0].body}}
//returns “Hey”

많은 Braze 파트너가 TransifexCrowdin을 포함한 현지화 솔루션을 제공합니다. 일반적으로 사용자는 내부 팀 및 번역 에이전시와 함께 해당 플랫폼을 활용합니다. 이 번역은 업로드된 후 REST API를 통해 접근할 수 있습니다. 이러한 서비스는 종종 연결된 콘텐츠를 활용하여 사용자가 API를 통해 번역을 가져올 수 있도록 합니다.

예를 들어, 다음 연결된 콘텐츠 호출은 Transifex 및 Crowdin에 호출하여 번역을 가져오며, {{${language}}}를 활용하여 특정 사용자에게 올바른 번역을 식별합니다. 이 번역은 JSON 블록 “strings”에 저장되어 참조됩니다.

{% connected_content https://www.transifex.com/api/2/project/example/resource/example/translation/{{${language}}}/strings :basic_auth semc :save strings %}
{{strings[0].translation}}
{% connected_content https://api.crowdin.com/api/project/braze-test/export-file?key=you_api_key&language={{${language}}}&file=test.json&export_translated_only=1 :save response %}
{{response.value_1}}

스프레드시트에 번역을 저장한 후 다음 방법 중 하나를 사용하여 해당 언어로 메시지를 발송합니다.

번역 에이전시와 협력하여 Google 스프레드시트에 번역을 저장한 후 Braze 연결된 콘텐츠를 사용하여 이 콘텐츠를 쿼리할 수 있습니다. 메시지를 발송할 때 각 사용자의 선택한 언어에 따라 관련 번역이 Campaign 본문으로 가져와집니다.

이 옵션은 Google Sheets를 연결된 콘텐츠를 통해 쿼리할 수 있는 JSON 오브젝트로 변환하는 대안 방법을 제공합니다. 스프레드시트를 SheetDB를 통해 JSON API로 변환하면 API 호출 빈도에 따라 여러 구독 티어에서 선택할 수 있습니다.

스프레드시트 구조는 옵션 4의 단계를 따르지만, SheetDB는 오브젝트를 쿼리할 수 있는 추가 필터도 제공합니다.

일부 사용자는 SheetDB의 검색 메서드를 GET 요청 호출에 구현하여 {{${language}}} Liquid 태그를 기반으로 JSON 오브젝트를 필터링함으로써, 대규모 조건 블록을 구성하는 대신 단일 언어에 대한 결과를 자동으로 반환하도록 하여 Liquid 및 연결된 콘텐츠 블록 의존성을 줄이는 것을 선호할 수 있습니다.

1단계: Google 시트 형식 지정

먼저 언어가 서로 다른 오브젝트가 되도록 Google 시트를 구성합니다:

language title1 body1 title2 body2
en Hey 1 Hey2 5
es Hola 2 Hola2 6
pt Oi 3 Oi2 7
de Hallo 4 Hallo2 8

2단계: 연결된 콘텐츠 호출에서 언어 Liquid 태그 사용

다음으로, 연결된 콘텐츠 호출 내에서 {{${language}}} Liquid 태그를 구현합니다. SheetDB가 스프레드시트를 생성할 때 sheet_id를 자동으로 생성한다는 점에 유의하세요.

{% connected_content https://sheetdb.io/api/v1/[sheet_id]/search?language={{${language}}} :save result%}

3단계: 메시지 템플릿화

마지막으로, Liquid를 사용하여 메시지를 템플릿화합니다:

{{result[0].title1}} //returns “Hey”
{{result[0].title2}} //returns “Hey2”
고려 사항
  • {{${language}}} 필드가 모든 사용자에 대해 정의되어야 합니다. 그렇지 않으면 언어가 없는 사용자를 위한 대체 핸들러로 Liquid 조건 블록이 포함되어야 합니다.
  • Google Sheets 내의 데이터 모델링은 메시지 오브젝트를 갖는 것과 달리 언어 기반의 세로 방향을 따라야 합니다.
  • SheetDB는 제한된 무료 계정과 Campaign 전략에 따라 고려해야 할 여러 유료 옵션을 제공합니다.
  • 연결된 콘텐츠 호출은 캐시할 수 있습니다. API 호출의 예상 빈도를 측정하고, 검색 메서드 대신 기본 SheetDB 엔드포인트를 호출하는 대안 접근 방식을 검토하는 것을 권장합니다.

이 옵션은 Google Sheet를 연결된 콘텐츠로 쿼리할 수 있는 JSON API로 변환합니다. Sheetlabs는 대량의 쿼리 볼륨을 지원하며 무료 및 유료 티어를 제공합니다.

1단계: Google Sheets에서 번역 시트 준비

각 행이 하나의 언어가 되도록 Google Sheet를 구성합니다. 예시:

language greeting title1 legal1
en Welcome! Your exclusive offer is here
fr Bienvenue! Votre offre exclusive est arrivée

2단계: Sheetlabs를 사용하여 시트를 가져오고 API 생성

  1. Sheetlabs에 가입합니다.
  2. Sheetlabs 안내에 따라 Google Sheets에서 데이터를 가져옵니다.
  3. 1단계에서 생성한 스프레드시트를 선택합니다.
  4. Create a matching API를 선택합니다.

3단계: Braze에 Sheetlabs 인증 토큰 추가 (선택 사항)

Sheetlabs API가 공개된 경우 이 단계를 건너뛰세요. 인증이 필요한 경우:

  1. Sheetlabs의 My Account 페이지로 이동하여 API 토큰을 복사합니다.
  2. Braze 기본 인증(Basic Auth) 단계에 따라 Braze에서 기본 인증 자격 증명을 생성합니다. Sheetlabs 사용자 이름(이메일 주소)과 복사한 API 토큰을 사용합니다.
  3. sheetlabs_creds와 같은 이름으로 자격 증명을 저장합니다.

4단계: 연결된 콘텐츠에서 Sheetlabs API 호출

연결된 콘텐츠 호출을 Sheetlabs에 추가합니다. /XXX/yourapi를 2단계에서 생성한 API 경로로 대체합니다.

{% connected_content https://sheetlabs.com/XXX/yourapi?language={{${language}}} :save translations :basic_auth sheetlabs_creds %}

5단계: 메시지 템플릿화

Liquid를 사용하여 반환된 필드를 참조합니다. 예시:

{{translations[0].greeting}} {{${first_name}}},
{{translations[0].body1}}

고려 사항

  • 매칭하려는 모든 사용자에 대해 {{${language}}} 필드를 정의하세요. 사용자에게 언어가 설정되어 있지 않은 경우 Liquid 대체 구문을 포함하세요.
  • 연결된 콘텐츠 호출은 캐시할 수 있습니다. Sheetlabs 요금제를 선택할 때 예상 API 빈도를 측정하세요.

자세한 내용은 Braze에서 Sheetlabs 사용하기를 참조하세요.

New Stuff!