多言語メッセージ
ワークスペースにロケールを追加すると、1つのプッシュ、メール、Webhook、バナー、アプリ内メッセージ、またはContent Blockの中で、異なる言語のユーザーをターゲットにできます。
前提条件
| 機能 | 必須のユーザー権限 |
|---|---|
| 多言語ロケール | 多言語ロケールを作成および管理するには、以下の権限が必要です。
|
| 機能 | 必要なユーザー権限 |
|---|---|
| メッセージ タイプ | キャンペーンとキャンバスにロケールと翻訳を追加するには、次の権限が必要です。
|
| 機能 | 必要なユーザー権限 |
|---|---|
| テンプレート | ロケールと翻訳を追加するテンプレートタイプに応じて、次の権限が必要です。
|
ロケールを使用する
ステップ 1: ロケールを設定する
メッセージに翻訳を追加する前に、まずサポートしたいロケールを作成する必要があります。ロケールは、メッセージングで利用できる言語 (および必要に応じて地域) のバリアントを定義します。
ステップ 2: 翻訳するコンテンツをマークする
翻訳したいテキストを Liquid の翻訳タグ {% translation your_id_here %} と {% endtranslation %} で囲み、タグ ID を割り当てます。翻訳タグ ID はメッセージ内で一意である必要があります。{% translation header %} のように、テキストの内容をわかりやすく表すセマンティックな ID 名の使用を検討してください。メッセージに Content Blocks が含まれる場合、一意性がどのように適用されるかについては、翻訳を含む Content Blocks を参照してください。
翻訳用にマークされたメッセージの例を次に示します: {% translation greeting %}Hello!{% endtranslation %}

翻訳したいテキストをハイライトし、キーボードショートカット Cmd + Alt + L (macOS) または Ctrl + Alt + L (Windows) を使用すると、翻訳タグで囲むことができます。
このショートカットは、メールと Content Blocks のドラッグ&ドロップエディターを除き、多言語メッセージングをサポートするすべてのチャネルで使用できます。これらのエディターでは、パーソナライゼーションを追加ボタンを使用して翻訳タグを追加してください。
URL をローカライズする
コンテンツを翻訳する際、リンク切れを防ぐために URL には特別な取り扱いが必要です。
標準 (静的) URL
静的 URL は、エディターに手動で入力される URL です (例: https://example.com)。次の点もお勧めします。
| 推奨事項 | 理由 |
|---|---|
プロトコル (https://) は翻訳タグの外に置きます。ドメインとパスのみを囲みます (例: example.com/en)。 |
翻訳者が誤って特殊文字を変更または削除し、リンク切れの原因となる可能性があります。 |
クエリパラメーター (例: ?utm_source=promo) を翻訳タグ内に含めないでください。 |
翻訳者が誤って特殊文字を変更または削除し、リンク切れにつながる可能性があります。 |
両方の推奨事項に従った標準 URL は次のとおりです。
<a href="https://{% translation id_1 %}example.shop.com{% endtranslation %}">Visit our store</a>
Liquid で生成された URL
URL が Liquid で生成されている場合 (例: {% landing_page_url %})、次の点をお勧めします。
| 推奨事項 | 理由 |
|---|---|
| Liquid で生成された URL は、ローカライズが必要な場合にのみ翻訳タグで囲みます。 | 正しくレンダリングするには、Liquid 構文を慎重に保持する必要があります。 |
クエリパラメーター (例: ?utm_source=promo) を翻訳タグ内に含めないでください。 |
翻訳者が誤って特殊文字を変更または削除し、リンク切れにつながる可能性があります。 |
両方の推奨事項に従った Liquid 生成 URL は次のとおりです。
<a href="{% translation id_1 %}{% landing_page_url xyz %}{% endtranslation %}">View details</a>

HTML 属性と構造
翻訳タグで囲むのは、人が読むテキストのみにしてください。HTML 属性 (class、style、id など) やその他の構造的なコードを囲むことは避けてください。HTML 属性はレイアウト、スタイル、機能を制御します。これらを翻訳タグで囲むと、メッセージのローカライズ版でフォーマットやスタイルが崩れる可能性があります。
このテキストは正しく囲まれています。
<p class="headline" style="color: red;">
{% translation id_1 %}Welcome to our sale{% endtranslation %}
</p>
誤って囲まれたテキスト
このテキストは誤って囲まれています。
{% translation id_1 %}
<p class="headline" style="color: red;">
Welcome to our sale
</p>
{% endtranslation %}
ステップ 3: メッセージにロケールを追加する
メッセージに翻訳タグを追加したら、エディターで言語を管理を選択し (メールと Content Blocks のドラッグ&ドロップエディターでは言語)、翻訳を追加したいロケールを少なくとも 1 つ選択します。

翻訳を含む Content Blocks
翻訳タグを含む Content Blocks は、ブロック自体に保存済みの翻訳があるかどうかによって動作が異なります。
| Content Block の状態 | 翻訳の管理場所 |
|---|---|
| 翻訳タグはあるが、ロケールや保存済みの翻訳がない | 親メッセージの言語を管理の CSV |
| 翻訳タグがあり、ロケールと保存済みの翻訳もある | Content Block 自体の CSV または翻訳 API |
保存済みの翻訳がある Content Blocks
メッセージに、すでに翻訳が保存されている Content Blocks が含まれている場合、それらの翻訳を再アップロードする必要はありません。保存済みの翻訳は、Content Block をメッセージに追加すると自動的に適用されます。これらのブロックは独自のタグ ID を保持し、その ID は親メッセージに対して一意である必要はありません。ブロック自体に翻訳を保存する方法については、Content Blocks に翻訳を保存するを参照してください。
言語を管理モーダルでは、保存済みの翻訳がある Content Blocks が、サポートしているロケールとともに一覧に表示されます。これにより、新しい翻訳を追加する前に、メッセージのどの部分がすでにローカライズされているかを確認できます。


各 Content Block に、メッセージに追加したすべてのロケールの翻訳が含まれていることを確認してください。追加したロケールのいずれかについて Content Block の翻訳が不足している場合、そのロケールのユーザーには元の言語で表示されます。
翻訳タグのみの Content Blocks
Content Block に翻訳タグはあるものの、ロケールや保存済みの翻訳がない場合、そのタグは親メッセージ内の未翻訳のソースコンテンツとして扱われます。親メッセージの言語を管理のエクスポートにはこれらのタグが含まれ、親メッセージの CSV でその翻訳を指定する必要があります。これらのタグは、親メッセージ内の他のタグに対して一意である必要があります。
未翻訳の Content Block を別のメッセージで再利用する場合、そのメッセージでもブロックのタグの翻訳を指定する必要があります。Content Block を使用するすべてのメッセージで翻訳を指定しなくて済むように、Content Block 自体にロケールと翻訳を直接追加してください。
ステップ 4: 翻訳を追加する
ロケールを選択したら、次のいずれかの方法でメッセージに翻訳を追加します。

テンプレートをダウンロードを選択すると、選択した翻訳 ID とロケールのマトリックスを含む CSV をダウンロードできます。

英語以外の文字の表示上の問題を防ぐため、翻訳用 CSV には Excel を使用しないでください。
テンプレートに入力する際は、各ロケールのテキストコンテンツのみを翻訳してください。ダウンロードしたテンプレートに HTML タグが含まれている場合は、タグを変更せずに、タグ内のテキストのみを翻訳してください。
たとえば、テンプレートに次の内容が含まれているとします。
<p style="margin:0;margin-bottom:0">A charming bakery dedicated to crafting artisanal breads.</p>
テキスト A charming bakery dedicated to crafting artisanal breads. のみを翻訳し、HTML タグ <p style="margin:0;margin-bottom:0"> と </p> はそのまま残します。
その後、完成したファイルをアップロードすると、翻訳がメッセージに適用されます。

パートナーの翻訳 API を使用して、キャンペーン、キャンバス、Content Blocks、メールテンプレート、Webhook テンプレートの翻訳を管理および更新できます。これは、ローカライゼーションに外部システムを使用している場合や、翻訳パートナーと直接接続したい場合に便利です。
キャンバスで翻訳エンドポイントを使用するには、次のパラメーターを含めます。
workflow_idstep_idmessage_variation_id

キャンバスのローンチ後に作成されたキャンバスステップで翻訳 API を使用する場合、API に渡す message_variation_id は空または空白になります。
ステップ 5: 翻訳をプレビューする
メッセージをプレビューするには、ユーザーとしてプレビュードロップダウンから多言語ユーザーオプションを選択します。これにより、異なるロケール定義を切り替えて、メッセージのすべての翻訳をプレビューできます。

翻訳を管理する
キャンバスのステップやキャンペーンの複製と翻訳
キャンバスのステップ、キャンペーン、またはバリエーションを複製すると、翻訳も含まれます。これはワークスペース間でコピーする場合も同様で、コピー先のワークスペースでロケールが定義されていれば翻訳が引き継がれます。キャンバスやキャンペーンに変更を加える際は、必ず翻訳を確認し、必要に応じて更新してください。
Content Blocksに翻訳を保存する
Content Blocksは、メッセージと同じ方法で多言語に対応しています。Content Blocksを作成または編集する際に、翻訳対象のコンテンツにタグを付け、ロケールを追加し、CSVまたは翻訳APIを使用して翻訳をアップロードできます。
保存された翻訳はContent Blockに関連付けられたままになります。ブロックをメッセージに追加すると、その翻訳も自動的に含まれます。
右から左に書く言語のメッセージ
右から左に書く言語 (アラビア語など) の翻訳ファイルを記入する際は、正しく書式設定されるように翻訳をspanで囲んでください。
{% translation your_id_here %}<span dir='rtl'>default text</span>{% endtranslation %}
メールのリンクトラッキング
メールキャンペーンでは、Brazeは各URLにトラッキング情報 (クエリパラメーター) を追加してリンクをトラッキングします。この動作は、リンクエイリアスとリンクテンプレートの両方をサポートしています。
URLが翻訳タグで囲まれている場合、Brazeはこのトラッキング情報をどこに追加すべきか判断できないことがあります。これを正しく機能させるには、URLの末尾に特殊文字を含めて、トラッキングを追加する位置を示す必要があります。
URLでは、この動作を制御するために次の2つの特殊文字を使用します。
?は、まだトラッキングが含まれていないURLにトラッキングを追加します。&は、URLにすでに?が含まれている場合に追加のトラッキングを付加します。1つのURLに含めることができる?は1つだけです。
| URL | ? を含む |
説明 | 例 |
|---|---|---|---|
| 標準URL | いいえ | URLに ? が含まれていない場合は、翻訳の終了タグの後に ? を追加します。 |
<a href="https://{% translation id_1 %}example.com{% endtranslation %}?">Shop Now</a> |
| 標準URL | はい | URLにすでに ? が含まれている場合は、URLの末尾 (翻訳の終了タグの後) に & を使用します。 |
<a href="https://{% translation id_1 %}example.com{% endtranslation %}?ref=4&">Shop Now</a> |
| Liquidで生成 | いいえ | 生成されたURLに ? が含まれていない場合は、翻訳の終了タグの後に ? を使用します。 |
<a href="{% translation id_1 %}{{ product_url }}{% endtranslation %}?">Shop Now</a> |
| Liquidで生成 | はい | 生成されたURLにすでに ? が含まれている場合は、翻訳の終了タグの後に & を使用します。 |
<a href="{% translation id_1 %}{% landing_page_url xyz %}{% endtranslation %}&">Shop Now</a> |
言語設定とアクセシビリティ
まず、アクセシビリティのアクセシビリティ言語で、WCAGの背景、チャネルやエディターごとの動作 (ランディングページを含む)、およびメッセージレベルのアクセシビリティ設定を確認してください。
多言語メッセージを使用する場合は、ローカライズされた送信で適切な言語が宣言されるように、アクセシビリティ言語を各ロケールに合わせて設定します。
アクセシビリティ言語を設定する
アクセシビリティ言語は2つのレベルで設定できます。
メッセージレベル
メッセージレベルでは、メッセージ設定のアクセシビリティセクションでアクセシビリティ言語を設定します。言語の選択、Liquidの使用、チャネルごとの制限については、アクセシビリティ言語を参照してください。
ロケールレベル
多言語メッセージでは、ローカライゼーション設定で各ロケールのアクセシビリティ言語を設定します。アクセシビリティセクションで {{accessibility_language}} を使用すると、ドキュメントやカードの言語がそれらのロケール値に対応付けられます。
新しいメッセージでこのトークンがデフォルトで表示されるかどうかは、チャネルとエディターによって異なります。たとえば、アプリ内メッセージとバナーは、ランディングページやドラッグ&ドロップメールとは動作が異なります。詳細については、アクセシビリティ言語を参照してください。
よくある質問
翻訳タグの制限は何ですか?
翻訳タグを使用する場合、次の制限が適用されます。
- 各メッセージには最大200個の翻訳タグを含めることができます。
- 各デフォルトテキスト (翻訳タグで囲まれたコンテンツ) は最大2,000文字です。
- ロケールごとの翻訳は最大409,600バイト (約409.6 KB) です。
多言語メールテンプレートのダウンロード時にエラーが発生するのはなぜですか?
多言語メールテンプレートのダウンロード時にエラーが発生する場合、翻訳タグがHTML属性やCSSスタイルを囲んでいる可能性があります。これらは、Brazeがメール本文を処理する方法と競合します。
Brazeでは、HTML本文とプレーンテキスト本文を同じメッセージの別々のコンポーネントとして扱います。翻訳タグにhref参照やCSSスタイルが含まれていると、タグが競合し、テンプレートを正しくダウンロードできなくなることがあります。
この問題を解決するには、次の手順に従います。
- 翻訳タグから
href参照とCSSスタイルを除外します。 - HTML属性と構造で説明しているように、人間が読めるテキストコンテンツのみを翻訳タグで囲みます。
- URLについては、URLのローカライズのガイダンスに従います。
いずれかのロケールで翻訳済みのコピーを変更できますか?
はい。まずCSVで編集してから、ファイルを再度アップロードすると、翻訳済みのコピーを変更できます。
Brazeは翻訳を提供していますか?
いいえ。CSVをアップロードするか、翻訳APIを使用して、独自の翻訳を提供する必要があります。
翻訳タグをネストできますか?
いいえ。
HTMLメッセージ全体を翻訳タグで囲むことはできますか?
いいえ。ベストプラクティスとして、人間が読めるテキストや、ローカライズが必要なコンテンツのみを囲むようにしてください。これにより、書式やリンク、その他のテキスト以外の要素が壊れるのを防ぐことができます。
さらに、正確な翻訳を作成し、パフォーマンスやサイズの制限を回避するために、意味的に関連する小さなテキスト単位で囲むことを検討してください。
いずれかのロケールで翻訳済みのコピーを変更できますか?
はい。CSVを使用している場合は、まずファイルで編集してから再度アップロードすると、翻訳済みのコピーを変更できます。翻訳APIを使用している場合は、更新エンドポイントを使用して変更します。
Brazeではどのような検証や追加チェックが行われますか?
| シナリオ | Brazeでの検証 |
|---|---|
| メッセージに、異なるテキストにマッピングされた一致する翻訳IDが2つ以上含まれています。 | この翻訳ファイルはダウンロードされません。 |
| 翻訳ファイルに1つ以上の翻訳タグIDが欠落しています。 | この翻訳ファイルはアップロードされません。 |
| 翻訳ファイルに、メッセージに存在しないロケールが含まれています。 | この翻訳ファイルはアップロードされません。 |
| 翻訳テンプレートをダウンロードする前に、メッセージに翻訳タグを追加する必要があります。 | この翻訳ファイルはダウンロードされません。 |
| アップロードしたファイル内の翻訳タグがメッセージに存在しません。 | 余分な翻訳はメッセージに保存されません。 |
メッセージに壊れたLiquidタグが1つ以上含まれています。タグを開くには{% translation your_id_here %}を使用し、翻訳タグを閉じるには{% endtranslation %}を使用します。 |
この翻訳ファイルはダウンロードされません。 |
| 翻訳ファイルに、メッセージ内の内容と一致しないデフォルトテキストが含まれています。 | 翻訳は追加されますが、元のメッセージテキストは更新されません。 |
| メッセージ内の1つ以上のロケールが設定で削除され、存在しなくなっています。 | すでに追加されている翻訳は、メッセージ内に引き続き存在します。メッセージから削除すると、翻訳は失われます。 |
| 翻訳タグに完全なURLまたはLiquidで生成されたURLが含まれています。 | リンク切れやリンクトラッキングの問題が発生した場合に備えて、URLを含む翻訳タグが特定されます。 |
| 翻訳タグにクエリパラメーターが含まれています。 | リンク切れやリンクトラッキングの問題が発生した場合に備えて、クエリパラメーターを含む翻訳タグが特定されます。 |
| 翻訳タグにHTML属性または構造が含まれています。 | スタイルや書式の問題が発生した場合に備えて、HTML属性または構造を含む翻訳タグが特定されます。 |