メインコンテンツへスキップ
見出し画像
Photo bynakamurachihiro

【第528回】 Marketing Cloud Next : コンテンツバリエーションで多言語化

    Nobuyuki Watanabe

    Marketing Cloud Next Growth & Advanced Editions の Summer ’26 新機能リリース では、コンテンツバリアントによる言語サポートにより、メール、画像、ヘッダー、フッター、プロモーションセクションなど、さまざまなコンテンツブロックを柔軟にローカライズできるようになりました。

    単一のメールやコンテンツブロック内で翻訳を一元管理できるため、グローバルキャンペーンの運用を大幅にシンプルにします。

    また、メールを複製することなく、受信者ごとの言語設定に応じた最適なコンテンツを配信できるため、運用負荷を抑えながら、よりパーソナライズされた顧客体験を提供できます。

    今回の記事ではこの機能の設定手順を解説します。


    CMS ワークスペースに言語を追加

    考慮事項

    • 今回の作業を行うには、ワークスペースの寄稿者権限として「コンテンツ管理者(Content Admin)」のロールが必要です。

    • CMS ワークスペースでは、Salesforce 組織でサポートされているすべての言語を翻訳言語として追加可能です。

    重要一度追加した言語はロックされて、削除できません。そのため、運用開始前に利用する言語を十分検討しておくことが重要です。

    画像

    1. 「コンテンツ」タブからマーケティング用のワークスペースを開き、設定から「言語」を選択します。

    画像

    2.「追加言語」リストから追加対象の言語を選択し、保存します。

    画像

    翻訳用コンテンツのエクスポートとインポート

    考慮事項

    • Salesforce 組織では、ライセンス 1 つあたり最大 500 件のコンテンツ項目を利用できます。コンテンツのバージョンや翻訳は、この上限には個別にカウントされません。例えば、2 つのバージョンと 3 つの翻訳を持つコンテンツ項目であっても、1 件のコンテンツ項目として扱われます。

    1. 続いてワークスペースで翻訳するコンテンツを選択したら、Manage から Translations の Export を選択します。

    画像

    2. 言語を選択して、エクスポートします。コンテンツは言語ごとに個別の .xlf ファイルとして生成されます。

    画像

    3. 処理完了後、.xlf ファイルをまとめた .zip アーカイブのダウンロードリンクが記載された通知メールが送信されます。ダウンロードしてください。

    画像

    XLFファイルの中身は以下のような内容です。

    <?xml version="1.0"?>
    <xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0" srcLang="en-US" trgLang="ja" xmlns:fs="urn:oasis:names:tc:xliff:fs:2.0">
     <file id="9PsHo00000RdA3V">
      <mda:metadata xmlns:mda="urn:oasis:names:tc:xliff:metadata:2.0">
      <mda:metaGroup category="variant_details">
      <mda:meta type="contentType">sfdc_cms__email</mda:meta>
      </mda:metaGroup>
    </mda:metadata>
      <unit id="1" name="title">
       <segment>
        <source>Content Variation</source>
        <target></target>
       </segment>
      </unit>
      <unit id="2" name="urlName">
       <segment>
        <source>appointment-reschedule-reminder-email</source>
        <target></target>
       </segment>
      </unit>
      <group id="3" name="contentBody">
       <unit id="4" name="subjectLine">
        <segment>
         <source>Need to Reschedule Your Appointment?</source>
         <target></target>
        </segment>
       </unit>
       <unit id="5" name="preheader">
        <segment>
         <source>Let us know if your plans have changed.</source>
         <target></target>
        </segment>
       </unit>
       <group id="6" name="sfdc_cms:block">
        <group id="7" name="89d55798-edd0-46a8-96ce-c01865c82b03">
         <group id="8" name="attributes">
          <unit id="9" name="text">
           <segment>
            <source>Dear {{$content.firstName}},<ph id="0" fs:fs="br"/><ph id="1" fs:fs="br"/>We understand that plans can change. If you need to reschedule your appointment, simply click the link below to update your booking.<ph id="2" fs:fs="br"/><ph id="3" fs:fs="br"/>If you have any questions or need assistance, please reply to this email. We're happy to help.</source>
            <target></target>
           </segment>
          </unit>
         </group>
        </group>
        <group id="10" name="aca2b249-199f-4559-bddd-383dd9c1d629">
         <group id="11" name="attributes">
          <unit id="12" name="text">
           <segment>
            <source><pc id="0" fs:fs="a" fs:subFs="shape::rect::target::_blank::href::https://www.facebook.com/salesforce/::rel::noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer">Facebook</pc> | <pc id="1" fs:fs="a" fs:subFs="shape::rect::target::_blank::href::https://www.instagram.com/salesforce/::rel::noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer">Instagram</pc></source>
            <target></target>
           </segment>
          </unit>
         </group>
        </group>
        <group id="13" name="aff491fb-dd65-457c-a113-a2be414360d5">
         <group id="14" name="attributes">
          <unit id="15" name="text">
           <segment>
            <source>{!$organization.Address}<pc id="0" fs:fs="div"><ph id="1" fs:fs="br" fs:subFs="clear::none"/></pc><pc id="2" fs:fs="div">© Salesforce, Inc. All rights reserved.</pc></source>
            <target></target>
           </segment>
          </unit>
         </group>
        </group>
       </group>
      </group>
     </file>
    </xliff>
    

    4. 生成されたファイルを生成 AI、翻訳会社、ローカライズサービスへ送付して翻訳してください。

    翻訳作業は時間と手間とコストを考えると、生成 AI で十分だと思います。
    生成されたコードをメモ帳などに張り付けて、エクスポートした XLFファイルと同名で .xlf 拡張子を付けて保存します。

    <?xml version="1.0"?>
    <xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0" srcLang="en-US" trgLang="ja" xmlns:fs="urn:oasis:names:tc:xliff:fs:2.0">
     <file id="9PsHo00000RdA3V">
      <mda:metadata xmlns:mda="urn:oasis:names:tc:xliff:metadata:2.0">
      <mda:metaGroup category="variant_details">
      <mda:meta type="contentType">sfdc_cms__email</mda:meta>
      </mda:metaGroup>
    </mda:metadata>
      <unit id="1" name="title">
       <segment>
        <source>Content Variation</source>
        <target>Content Variation</target>
       </segment>
      </unit>
      <unit id="2" name="urlName">
       <segment>
        <source>appointment-reschedule-reminder-email</source>
        <target>appointment-reschedule-reminder-email</target>
       </segment>
      </unit>
      <group id="3" name="contentBody">
       <unit id="4" name="subjectLine">
        <segment>
         <source>Need to Reschedule Your Appointment?</source>
         <target>ご予約の変更をご希望ですか?</target>
        </segment>
       </unit>
       <unit id="5" name="preheader">
        <segment>
         <source>Let us know if your plans have changed.</source>
         <target>ご予定が変更になった場合はお知らせください。</target>
        </segment>
       </unit>
       <group id="6" name="sfdc_cms:block">
        <group id="7" name="89d55798-edd0-46a8-96ce-c01865c82b03">
         <group id="8" name="attributes">
          <unit id="9" name="text">
           <segment>
            <source>Dear {{$content.firstName}},<ph id="0" fs:fs="br"/><ph id="1" fs:fs="br"/>We understand that plans can change. If you need to reschedule your appointment, simply click the link below to update your booking.<ph id="2" fs:fs="br"/><ph id="3" fs:fs="br"/>If you have any questions or need assistance, please reply to this email. We're happy to help.</source>
            <target>{{$content.firstName}} 様<ph id="0" fs:fs="br"/><ph id="1" fs:fs="br"/>ご予定が変更になることもあるかと思います。ご予約日時の変更をご希望の場合は、以下のリンクからお手続きください。<ph id="2" fs:fs="br"/><ph id="3" fs:fs="br"/>ご不明な点やサポートが必要な場合は、このメールにご返信ください。喜んでお手伝いいたします。</target>
           </segment>
          </unit>
         </group>
        </group>
        <group id="10" name="aca2b249-199f-4559-bddd-383dd9c1d629">
         <group id="11" name="attributes">
          <unit id="12" name="text">
           <segment>
            <source><pc id="0" fs:fs="a" fs:subFs="shape::rect::target::_blank::href::https://www.facebook.com/salesforce/::rel::noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer">Facebook</pc> | <pc id="1" fs:fs="a" fs:subFs="shape::rect::target::_blank::href::https://www.instagram.com/salesforce/::rel::noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer">Instagram</pc></source>
            <target><pc id="0" fs:fs="a" fs:subFs="shape::rect::target::_blank::href::https://www.facebook.com/salesforce/::rel::noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer">Facebook</pc> | <pc id="1" fs:fs="a" fs:subFs="shape::rect::target::_blank::href::https://www.instagram.com/salesforce/::rel::noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer noopener noreferrer">Instagram</pc></target>
           </segment>
          </unit>
         </group>
        </group>
        <group id="13" name="aff491fb-dd65-457c-a113-a2be414360d5">
         <group id="14" name="attributes">
          <unit id="15" name="text">
           <segment>
            <source>{!$organization.Address}<pc id="0" fs:fs="div"><ph id="1" fs:fs="br" fs:subFs="clear::none"/></pc><pc id="2" fs:fs="div">© Salesforce, Inc. All rights reserved.</pc></source>
            <target>{!$organization.Address}<pc id="0" fs:fs="div"><ph id="1" fs:fs="br" fs:subFs="clear::none"/></pc><pc id="2" fs:fs="div">© Salesforce, Inc. All rights reserved.</pc></target>
           </segment>
          </unit>
         </group>
        </group>
       </group>
      </group>
     </file>
    </xliff>

    5. 作成した XLF ファイルは、インポートのため ZIP 化します。ZIP 化したら、ワークスペースに戻って、Manage から Translations の Import を選択します。

    画像

    6. ZIP ファイルをアップロードしたら、インポートをクリックします。

    画像

    翻訳済みコンテンツを確認・公開する

    1. インポートが完了したら対象コンテンツを開きます。すると、各言語での内容確認ができるようになっています。

    画像

    2. 日本語に切り替え、翻訳内容を確認します。

    画像

    3. 内容に問題がなければ、公開します。

    画像

    4. 公開されるか否かは、各言語ごとに選択できます。

    画像

    メールをプレビューする

    1. Summer '26 ではプレビュー画面が大きくアップデートされており、多言語化対応もされています。

    画像

    2. 日本語に切り替えてプレビューを生成します。

    画像

    3. すると、日本語版メールのプレビューもできます。

    画像

    4. 日本語版メールでの送信テストも可能です。

    画像

    多言語化メールを使った本番送信

    1. 事前に CRM データに「言語(Language)」のような選択リスト項目を用意します。日本語の場合は「ja」です。「JA」でも動きます。

    画像

    Salesforce のサポート言語はこちら

    2. その後、データストリームで「言語(Language)」の項目を取り込み、Individual DMO にマッピング し、一度、ID 解決を行います。

    プロファイルソース全件分処理されますのでクレジットに注意して下さい。

    画像

    3. これで準備が整いました。メール送信の要素を開いて、一番下までスクロールすると Local セクションがあるので有効化します。

    画像

    4. ここで Enter Text のオプションのまま「ja」を入力して全オーディエンスに日本語のメールを送ることも可能ですが、今回は先ほど作成したリードオブジェクトの言語項目を使用してパーソナライズします。

    画像

    以下は、今後多くのリソースが利用可能になることで、もっと簡単に設定できるようになる可能性がありますが、セグメントフローにおける現時点の方法を記載します。

    5. まず、Get Records を配置し、リードを選択します。条件は以下です。

    Lead ID = Attributes > Individual Id
    ※ Attributes とはデータグラフの Individual DMO の値が利用できます。

    画像

    6. 続いて、新規リソースの「変数」で、この Get Lead Records から取得した「Language(選択リスト)」をテキスト型でセットします。

    画像

    7. リソースが保存できたら、メール送信要素に戻って、Local にそのリソースを差し込みます。

    画像

    8. これでフローを有効化し、メールを送信します。

    画像

    9. 一部の人には、英語でメールが届きました。

    画像

    10. 一部の人には、日本語でメールが届きました。成功です。

    画像

    いかがでしたでしょうか。

    コンテンツバリアントの言語サポートを利用することで、複数言語のコンテンツを単一のメール内で管理できるようになり、多言語キャンペーンの運用負荷を大幅に削減できます。

    また、受信者の言語設定に応じて最適なコンテンツを自動配信できるため、メールを複製することなく、よりパーソナライズされた顧客体験を実現できます。

    グローバル展開を行う企業や、多言語対応が求められる組織にとって非常に便利な機能ですので、ぜひ活用してみてください。

    今回は以上です。


    次の記事はこちら

    前回の記事はこちら

    私の note のトップページはこちら

     
     
     
    Salesforce Marketing Cloud、Agentforce、Data Cloud、Salesforce 認定資格に関する実践的な情報を発信しています。これらの記事が、皆さまの学習や日々の業務に少しでもお役に立てば幸いです。