アダプティブ カード コンテンツをローカライズする

アダプティブカードを使用することで、Copilot Studioエージェントのユーザーに、豊富で構造化された情報を提供できます。 多言語エージェントの場合は、トピック内容とアダプティブ カードのテキストの両方を必ず完全にローカライズしてください。 アダプティブ カードを使用することで、主要なプラットフォームやフレームワークすべて向けに軽量な UI を設計、統合できます。

Copilot Studioは、トピックで使用しているのと同じJSON/ResXローカライズファイルを用いて、アダプティブ カード内の静的テキストのローカライズをサポートしています。

この記事では、ローカライズのワークフロー、アダプティブ カードのテキストの翻訳方法や、静的値と動的値を含む混合コンテンツへの対応について説明します。

準備

以下の概念を理解しておく必要があります。

ローカライズワークフローを理解する

Copilot Studioは、すべての静的なアダプティブ カードテキストをエクスポートされるローカライズファイルに含めます。 このテキストには以下が含まれます。

  • TextBlock
  • ボタン タイトル
  • プレースホルダー テキスト
  • エラー メッセージ
  • 画像の代替テキスト

トピックやアダプティブ カードのユーザー向けテキストはすべて、単一の翻訳ワークフローで翻訳できます。

ローカライズ ファイルで静的なアダプティブ カードのテキストがどのように表示されるか

任意の二次言語のローカリゼーションファイルをエクスポートすると、静的なカードテキストはトピック文字列とともにエントリーとして含まれます。

各エントリには、ダイアログ、トピック、カード構造内のテキストが存在する位置を識別する一意のキーパスが付与されています。 キーは冗長ですが、値のみ翻訳してください。

例(省略):

{
  "dialog(procurement_flow).topic.purchaseApproval.trigger(manager_route).action(showApprovalCard).card.body[0].text": "Purchase request",
  "dialog(procurement_flow).topic.purchaseApproval.trigger(manager_route).action(showApprovalCard).card.body[2].columns[0].items[0].text": "Requested by",
  "dialog(procurement_flow).topic.purchaseApproval.trigger(manager_route).action(showApprovalCard).card.body[2].columns[1].items[0].text": "Department",
  "dialog(procurement_flow).topic.purchaseApproval.trigger(manager_route).action(showApprovalCard).card.body[3].facts[0].title": "Request ID",
  "dialog(procurement_flow).topic.purchaseApproval.trigger(manager_route).action(showApprovalCard).card.body[3].facts[1].title": "Total",
  "dialog(procurement_flow).topic.purchaseApproval.trigger(manager_route).action(showApprovalCard).card.actions[0].title": "Approve",
  "dialog(procurement_flow).topic.purchaseApproval.trigger(manager_route).action(showApprovalCard).card.actions[1].title": "Reject",
  "dialog(procurement_flow).topic.purchaseApproval.trigger(manager_route).action(showApprovalCard).card.actions[2].title": "View details"
}

SetTextVariable で混在文字列を処理してください

アダプティブ カードの文字列の中には、静的なテキストと動的な値が組み合わさっているものが存在します。 以下にその例を示します。

Contoso Research に対して合計 1,245.80 ドルの要求 PR-20417 を承認しています

リクエストID、総金額、事業部門は変数です。 周囲のテキストは翻訳対象となります。 Copilot Studioは混在コンテンツから静的テキストを自動的に抽出できないため、これらの値はローカリゼーションファイルに含まれません。

ローカライズ可能な混合コンテンツには Set Text Variable ノードを使用してください

Copilot Studio には テキスト変数の設定 ノードが搭載されており、コード エディターからのみ利用できます。 このノードを使用すると、次のことができます。

  • 静的テキストと変数のプレースホルダーを組み合わせます。
  • ローカライズファイルに含まれる単一の文字列を作成します。
  • 翻訳時に変数構造が維持されます。

詳細はアダプティブ カードの動的コンテンツをローカライズ可能にするをご覧ください。

ローカライズファイルをエクスポートし、静的テキストのみを翻訳してください

ローカライズ ファイルをダウンロードすると、静的テキストと変数のプレースホルダーを含む文字列全体が含まれています。

以下にその例を示します。

{
  "'dialog(copilots_header_392e9.topic.recommendbooks)'.'trigger(main)'.'action(readingProgress)'.Value":
    "You are approving request {Topic.requestId} totaling {Topic.formattedTotal} for {Topic.businessUnit}"
}

静的テキストのみを翻訳し、変数のプレースホルダーは変更せずにそのまま残してください。

要点

  • 静的なアダプティブ カードのテキストはローカライズファイルに含まれるため、ユーザーに表示されるすべてのコンテンツを一貫して翻訳できます。
  • アダプティブ カードは、多言語対応のために複数のバージョンや条件式を用意する必要はありません。
  • 静的テキストと動的値が混在する場合は、テキスト変数の設定ノードを使用して、プレースホルダーやその周囲のテキストが確実にローカライズ可能になるようにしましょう。

この統一ワークフローによりローカライゼーションプロセスが簡素化され、Copilot Studioでグローバル対応のユーザー体験を構築するのが容易になります。