製品プロパティ値をローカライズする

製品名は、異なるリージョンにローカライズできます。 Dynamics 365 Salesを使用すると、特定の製品属性にローカライズされたラベルを指定して、ユーザーの言語設定に一致するローカライズされた名前を表示できます。 この記事では、開発者がこの機能を操作する方法について説明します。 アプリケーションでこの機能を使用する詳細な手順については、「製品名とプロパティを複数の言語に翻訳する」の以前のバージョンのドキュメントを参照してください。

ローカライズされるプロパティ値をサポートする属性

以下はローカライズできる値をサポートする属性が示されています。

  • Product.Name

  • DynamicProperty.Name

  • DynamicPropertyOptionSetItem.DynamicPropertyOptionName

  • DynamicPropertyOptionSetItem.DynamicPropertyOptionDescription

    StringAttributeMetadataMemoAttributeMetadataクラスには、前述の表にある 4 つの属性を除いて、すべての属性に対してIsLocalizablefalse読み取り専用ブール型プロパティがあります。

ローカライズされたプロパティ値の取得

ユーザーの言語設定に一致するローカライズされた値を取得するために、異なる操作を行う必要はありません。 ユーザーの優先言語にローカライズされた値が存在する場合、システムはそれを返します。 ローカライズされた値が存在しない場合、システムは組織の基本言語の値を返します。 この動作は下位互換性を維持します。現在製品名属性を使用しているコードは、ローカライズされた値を使用して引き続き機能します。 プロパティ値のローカライズが不完全な場合、ユーザーに混在した言語の値が表示されることがあります。

特定のローカライズ可能属性のローカライズされたラベルを取得するには、RetrieveLocLabelsRequest メッセージを使用します。

ローカライズされた値を使用してクエリを実行する

条件でローカライズされた属性の値を使用してテーブルにクエリを実行すると、まず優先言語を使用して条件が評価されます。 属性にローカライズされた値がない場合、クエリは基本言語に戻ります。 ローカライズされた属性値のクエリ結果は、お好みの言語 (存在する場合) で返されます。 それ以外の場合、結果は基本言語で返されます。

ローカライズ可能な属性のあるレコードを作成または更新する

ローカライズ可能な属性を持つレコードは、優先する言語が組織の基本言語でない限り、読み取り専用です。 ローカライズされたプロパティ値を持つレコードは、組織の基本言語を使用してのみ作成できます。 ローカライズ可能な属性の基本言語値を更新しても、基本言語の値をクリアする場合を除き、その属性のローカライズされた値は変更されません。 基本言語の値を null または空の文字列に設定すると、そのプロパティのローカライズされた値もすべてクリアされます。

特定のローカライズ可能な属性のローカライズされたラベルを追加または更新するには、 SetLocLabelsRequest メッセージを使用するか、翻訳された値をインポートします。 ローカライズ可能な属性に対する変更は、レコードの監査履歴に表示されます。 ローカライズされた値の言語コード識別子 (LCID)は監査履歴に表示されます。

ローカライズ可能な属性を翻訳する

ローカライズ可能な属性をプログラムでローカライズするプロセスは、ローカライズされたソリューション ラベルの翻訳に使用するプロセスに似ています。 [!INCLUDE[proc_more_information]カスタマイズされたテーブルおよび列のテキストを翻訳する

メタデータ値の変換とは異なり、ローカライズされた属性値をエクスポートおよびインポートするユーザーには、システム管理者のセキュリティ ロールは必要ありません。 営業課長セキュリティ ロールには、ローカライズできる属性を翻訳する際に必要な特権が与えられています。 ローカライズされたプロパティ値を翻訳するユーザーは、表示するアクセス権を持つレコードのみエクスポートでき、更新する特権を持つレコードのみ更新できます。

ローカライズ可能な属性をプログラムで翻訳するには、まず、 ExportFieldTranslationRequestを使用して、現在のローカライズされたラベル定義をエクスポートする必要があります。 ExportFieldTranslationResponseExportTranslationFile プロパティには、圧縮された crmFieldTranslations.zip ファイルの byte[] が含まれており、その中には [Content_types].xml ファイルと、Office Excel を使用して開くことができる crmFieldTranslations.xml ファイルが含まれています。 ローカライズされたラベルワークシートには、組織のプロビジョニングされた言語の LCID 値の列が含まれます。 基本言語の値を含む列が設定され、プロビジョニングされた各言語の列には、以前にローカライズされた値が含まれています。 翻訳ツールはこのファイルを編集して、ローカライズ可能なプロパティにローカライズされたラベルを提供できます。

ヒント

基本言語名のみの一括更新を実行する場合、基本言語の値も編集できます。

ローカライズされたラベルを提供するように crmFieldTranslations.xml ファイルを編集した後、[Content_types].xml ファイルと共に圧縮し、そのファイルをTranslationFileImportFieldTranslationRequest プロパティとして設定します。

翻訳済みプロパティ値をエクスポートする際に含まれる値を変更する

ローカライズ可能なプロパティ値をサポートするテーブルに関連付けられているカスタマイズ可能なビューは、エクスポートされた翻訳に含まれる値を制御します。 製品テーブルのみ、カスタマイズ ユーザー インターフェイスにこのビューが表示されます。 これらのビューはExport Field Translationsと名付けられています。 次の表には、これらのビューのSavedQueryId が表示されています。

Table SavedQueryId 既定FetchXml
製品 9cfe2a9f-13c4-e311-8f2e-00155d9d2505 <fetch version="1.0"
output-format="xml-platform"
mapping="論理"
distinct="false">
<エンティティ名="製品">
<attribute name="name" />
</実体>
</フェッチ>
動的プロパティ 4833cf48-1ac4-e311-8f2e-00155d9d2505 <fetch version="1.0"
output-format="xml-platform"
mapping="logical">
<entity name="dynamicproperty">
<attribute name="name" />
</実体>
</フェッチ>
動的プロパティオプションセットアイテム d64cce30-1fc4-e311-8f2e-00155d9d2505 <fetch version="1.0"
output-format="xml-platform"
mapping="logical">
<エンティティ名="dynamicpropertyoptionsetitem">
<attribute name="dynamicpropertyoptionname" />
<属性名="dynamicpropertyoptiondescription" />
</実体>
</フェッチ>

これらのビューの FetchXml プロパティを編集して、含めない属性プロパティ値を除外できます。 たとえば、アーカイブしたレコードを除外したり、特定の日付より後に更新を行ったレコードのみを含めることができます。

フィールド翻訳インポート ジョブの進捗の監視

システム ジョブ テーブルには、フィールド変換インポート ジョブの進行状況を監視するための次のビューが含まれています。

  • すべてのフィールド翻訳インポートジョブ

  • 完了したフィールド変換インポート ジョブ

  • 進行中のフィールド翻訳インポート作業

  • 自分のフィールド翻訳インポート作業

  • 未開始のフィールド翻訳インポート ジョブ

    変換ジョブをインポートする際に、次の条件はエラーの原因になります:

メッセージ Description
警告: ワークシート {0}、行{1}のインポート ファイルで指定された複数の行への書き込みアクセス許可がありません。 インポートを実行するユーザーが、インポート ファイルに含まれる行への書き込みアクセス許可を持っていない可能性があります。

他の行の処理は続行されます。
警告: ワークシート {0}、行 {1}、列 {2} にある基本言語翻訳文字列が null です。 翻訳をインポートして基本言語の値をクリアすることはできません。

他の行の処理は続行されます。
警告: 行 {0} のセル数は、ワークシート {1}で行 1 のセル数と異なっています。 スプレッドシートのすべての行には、そのセルと同じ数が必要です。

他の行の処理は続行されます。
警告: 無効なテーブル名が、ワークシート {0}、明細行 {1}、列 A で見つかりました。 システムにワークシートの名前を使用する有効なテーブルがありません。

他の行の処理は続行されます。
警告: 無効なオブジェクト列名が、ワークシート {0}、行 {1}、列C で見つかりました。 システムにワークシートの名前を使用する有効なローカライズ可能属性がありません。

他の行の処理は続行されます。
警告: 無効なオブジェクト ID が、ワークシート {0}、明細行 {1}、列 B で見つかりました。 この行の項目に一致するレコードが組織に存在しません。

他の行の処理は続行されます。
エラー: ワークシート {0}に行が見つかりませんでした。 インポートするワークシートは空です。
エラー: ワークシート {0} 内の組織 ID は、現在の組織 ID と一致しません。 エクスポート元と同じ組織にのみ、翻訳をインポートすことができます。
警告: 無効な言語コードが、ワークシート {0}、列 {1} で見つかりました。 | 詳細: {2} 列の LCID が有効な整数でないか、その言語の言語パックがインストールされていません。

列の翻訳は無視されます。

有効なロケール ID 値は、ロケール ID (LCID) の一覧のページで確認できます。
エラー: 重複言語コードが、ワークシート {0}、列 {1} で見つかりました。 各列には異なる言語コードが必要です。
エラー: 翻訳ファイルが無効です。 圧縮ファイルには、ルートに次のファイルが含まれていることが必要です: CrmFieldTranslations.xml, [Content_Types].xml インポートする圧縮 (zip) ファイルには、エラーで説明されているファイルのみが含まれている必要があります。
エラー: 翻訳ファイルが無効か、必要なスキーマに準拠していません。 圧縮 (zip) ファイルに含まれる CrmFieldTranslations.xml ファイルは、そのシステムからエクスポートされ、ローカライズされている値を提供するためだけに編集されたファイルである必要があります。 そのほかの変更は、ファイルを無効にする可能性があります。

言語をアンインストールする

アンインストールした言語のローカライズされたラベルは、システムによって保持されます。 言語を再インストールした場合、ラベルは既に配置されています。

製品カタログ テーブル
カスタマイズされたテーブルと列のテキストを翻訳する製品名とプロパティを複数の言語に翻訳する