Skip to content

ローカライゼーション

多くの国に顧客を持つ企業の場合、Braze ジャーニーの早い段階でローカライゼーションを処理することで、会社の時間とリソースを節約できます。

CDI の仕組み

Braze SDKを統合すると、ユーザーデバイスからのロケール情報が自動的に収集されます。ロケールには、言語と地域識別子が含まれています。この情報は、Braze セグメンテーションツールの [] と [言語] で確認できます。

翻訳管理

翻訳を管理するには、次の方法を考慮してください。

すべてに対して1つのテンプレート

このアプローチでは、ローカライズは、Liquidを使用して、ブレーズ内の単一テンプレートに適用されます。送信後、ダッシュボードは集計されたキャンペーン分析を提供する。ユーザーレベルのエンゲージメントは、例えば受信キャンペーンのフィルターを組み合わせるなど、カスタムのセグメントファネルを使用して測定できます。

国ごとに1つのテンプレート

このアプローチでは、テンプレートを異なる送信ロケールに分割します。送信後、ダッシュボードは国別に送信分析を報告し、下流のユーザーレベルのCurrentsイベントも特定のキャンペーンに関連付けられる。

万人のための一旅

このアプローチでは、ローカライズはCanvas JourneysおよびLiquid内で処理され、各ユーザのメッセージングを定義します。

キャンバスが送信された後、ダッシュボードには集計されたキャンバス分析が表示され、ユーザーレベルのエンゲージメントは、カスタムのセグメントファネル (受信キャンバスステップのフィルターの組み合わせなど) で測定できます。

一国につき一行

このアプローチでは、Canvasジャーニービルダーは、複数のCanvas コンポーネントを介してユーザジャーニーを作成する柔軟性を提供します。これらのコンポーネントは、コンポーネントレベルおよびジャーニー全体で複製できます。

ローカライズは、次の方法で行うことができます。

  • 国ごとにキャンバスを分けることで、複雑なユーザージャーニーがオーディエンスフィルターを使用してファネルの一番上に定義されるようにする。
  • 国ごとに特注のユーザージャーニーを作成し、Audience Pathsを実装することで、1つのCanvasに国ごとに個別のメッセージスレッドを作成することで、ジャーニーごとに大規模にユーザーを直感的にセグメント化する。

送信後、ダッシュボードには顧客の現在地に基づいて、国ごとおよびユーザーレベルの Currents イベント内のダイナミックな分析が表示されます。

翻訳されたメッセージの送信

ユーザの言語またはロケールに基づいてパーソナライズされたメッセージを送信するには、次のいずれかの方法を使用します。

メッセージの本文にコンテンツを手動で貼り付け、Liquidを使用して条件付きで正しい言語を受信者に表示できます。これを行うには:

  1. メッセージを作成し、Language を選択して、選択した言語ごとに液体条件付きロジックを生成します。
  2. 次の Liquid テンプレートを使用すると、メッセージを作成できます。テンプレートを使用するフィールドごとに、テンプレートの中括弧内のセグメントの後にバリエーションを入力する必要があります。バリエーションは、その前の中括弧で参照されている言語コードに対応していなければなりません。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
     {% 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 のコンテンツブロックは再利用が可能なコンテンツのブロックです。ブロックが変更されると、そのブロックへの参照もすべて変更される。たとえば、メールヘッダーまたはフッターの更新は、すべてのメールまたは翻訳に反映されます。これらのブロックは REST API を使用して作成および更新することもでき、ユーザーはプログラムを使って翻訳をアップロードできます。

ダッシュボードでキャンペーンを作成する際、{{content_blocks.${name_of_content_block}}} タグを使用してコンテンツブロックを参照できます。これらのブロックは、オプション1に示すように、各言語の条件ロジック内にすべての翻訳を格納することもできるし、各言語ごとに独立したブロックを使用することもできる。

コンテンツブロックは、翻訳が必要なコンテンツをコンテンツブロック内に格納し、取得、翻訳、更新するための翻訳管理プロセスとしても利用できます。

  1. 「翻訳要」というタグが付いたコンテンツブロックをダッシュボードに手動で作成します。
  2. サービスが /content_blocks/list エンドポイントを使用してすべてのコンテンツブロックを夜間に取得します。
  3. サービスが /content_blocks/info エンドポイントを通じて各コンテンツブロックの詳細を取得し、どのブロックが翻訳対象としてタグ付けされているかを確認します。
  4. 翻訳サービスは、すべての「翻訳要」コンテンツブロックの本文を翻訳します。
  5. サービスは /content_block/update エンドポイントにアクセスして翻訳されたコンテンツを更新し、タグを「翻訳完了」に更新します。

カタログを使用すると、Liquid のカスタム属性やカスタムイベントプロパティと同様に、インポートされた JSON オブジェクトのデータに API や CSV ファイルを介してアクセスし、メッセージを充実させることができます。例えば次のようにします。

次の API 呼び出しでカタログを作成します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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 呼び出しでアイテムを追加します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 を作成します。

これらのカタログアイテムは、以下に示すようにパーソナライゼーションを使用して参照したり、セレクションを使用してデータのグループを作成したりできます。

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

メッセージにロケールを追加して使用し、1 つのキャンペーン内のすべての異なる言語のユーザーをターゲットにするか、メールまたはプッシュチャネルのキャンバスをターゲットにします。詳細なウォークスルーについては、メールメッセージのロケールまたはプッシュメッセージのロケールを参照してください。

TransifexCrowdin など、多くの Braze パートナーがローカライゼーションソリューションを提供しています。通常、ユーザーは社内チームや翻訳業者と一緒にプラットフォームを使用します。これらの翻訳はそこにアップロードされ、REST API 経由でアクセスできるようになります。これらのサービスでは多くの場合、コネクテッドコンテンツを活用して、ユーザーが API 経由で翻訳を取得できるようにしています。

例えば、次のコネクテッドコンテンツの呼び出しでは、Transifex と Crowdin を呼び出して翻訳を取得し、{{${language}}} を利用して特定のユーザー用に正しい翻訳を特定します。その後、この翻訳が JSON ブロックの「文字列」に保存され、参照されます。

1
2
{% connected_content https://www.transifex.com/api/2/project/example/resource/example/translation/{{${language}}}/strings :basic_auth semc :save strings %}
{{strings[0].translation}}
1
2
{% 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 Connected Contentを使用してこのコンテンツをクエリすることができます。メッセージを送信すると、選択した言語に基づいて、各ユーザの関連する翻訳がキャンペーン本文に取り込まれます。

このオプションは、Google スプレッドシートを、コネクテッドコンテンツ経由でクエリされる JSON オブジェクトに変換する代替方法を提供します。スプレッドシートを SheetDB 経由でJSON API に変換することで、API 呼び出しの頻度に応じて複数のサブスクリプションティアから選択できます。

スプレッドシートの構造はオプション 4 の手順と同じですが、SheetDB にはオブジェクトをクエリするための追加のフィルターも用意されています。

Liquid とコネクテッドブロックの依存関係が少ない SheetDB を実装したいユーザーは、大きな条件付きブロックを構築するよりも、GET リクエスト呼び出しに SheetDB の検索メソッドを実装して {{${language}}} Liquid タグに基づいてJSON オブジェクトをフィルタリングして 1 つの言語の結果を自動的に返すことができます。

ステップ 1:Google スプレッドシートをフォーマットする

まず、各言語が異なるオブジェクトになるように Google シートを作成します。

ステップ2: コネクテッドコンテンツ呼び出しで Liquid の言語タグを使用する

次に、コネクテッドコンテンツの呼び出しに Liquid タグ {{${language}}} を実装します。ここで SheetDB はスプレッドシートの作成時に sheet_id を自動生成することに注意してください。

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

ステップ 3:メッセージをテンプレート化する

最後に、Liquid を使用してメッセージをテンプレート化します。

1
2
{{result[0].title1}} //returns “Hey”
{{result[0].title2}} //returns “Hey2”
考慮事項
  • {{${language}}} フィールドはすべてのユーザー向けに定義する必要があります。そうでない場合、言語のないユーザーのフォールバックハンドラーとして Liquid 条件ブロックを使用する必要があります。
  • Google スプレッドシート内のデータモデリングは、メッセージオブジェクトを使用するのではなく、言語主導の異なる分野に従う必要があります。
  • SheetDB は制限付きの無料アカウントと複数の有料オプションがあり、キャンペーン戦略に基づいて検討する必要があります。
  • コネクテッドコンテンツ呼び出しはキャッシュできます。API 呼び出しの予測ケイデンスを測定し、検索メソッドを使用する代わりにメインの SheetDB エンドポイントを呼び出す別の方法を検討することをお勧めします。
「このページはどの程度役に立ちましたか?」
New Stuff!