クロスコンテンツタイプ翻訳

翻訳元と翻訳先で異なるコンテンツタイプを使う運用です。v1.5.0 で正式サポートされました。

翻訳元と翻訳先のコンテンツタイプを別々に指定する運用を「クロスコンテンツタイプ翻訳」と呼びます。v1.5.0 で正式サポートされました。

利用シーン

シナリオ翻訳元コンテンツタイプ翻訳先コンテンツタイプ
言語ごとにサイトを分けつつコンテンツタイプも別々Site Page (日本語サイト)Site Page (de) (ドイツ語サイト)
同じサイト内で別コンテンツタイプを翻訳の受け皿にArticleArticle (translated)

設定箇所

翻訳設定の編集画面で「コンテンツタイプ設定」セクションを開きます。

項目説明
翻訳元コンテンツタイプ翻訳元となる現在のサイトのコンテンツタイプ
翻訳先コンテンツタイプ翻訳先サイトで翻訳結果を作成するコンテンツタイプ

両方を同じコンテンツタイプに指定することも、別々のコンテンツタイプに指定することもできます。

同じコンテンツタイプの場合の翻訳動作

翻訳元と翻訳先のコンテンツタイプが同じ場合(source_ct.id == target_ct.id)、翻訳元コンテンツの data を丸ごとコピーしてから、翻訳対象フィールドだけを LLM 翻訳結果で上書きします。

  • 全フィールドが翻訳元と一貫
  • 非翻訳フィールド(数値・URL・日付など)は何も設定せずに元の値が引き継がれる
  • convert_breaks も同期される

異なるコンテンツタイプの場合の翻訳動作

翻訳元と翻訳先のコンテンツタイプが異なる場合、AITranslator は次の優先順位でフィールド対応を解決します。

優先仕組み対象フィールド
1翻訳対象フィールドマッピング(UI 明示)テキスト系、アセット、カテゴリ、選択肢
2コピー対象フィールドマッピング(UI 明示)数値・URL・日付など
3ラベル名 / basename での自動マッチ(フォールバック)コピー対象フィールド(UI 設定が無い場合)

翻訳対象フィールドはマッピングが必須です。コピー対象フィールドは未設定でも自動マッチが動作します。

ラベル名自動マッチの仕組み

異なるコンテンツタイプ間で、コピー対象フィールドマッピングが空のままでも次の挙動が動作します。

対象マッチング
コンテンツフィールドラベル名(空白除去・大文字小文字無視)で比較
記事/ウェブページ CFbasename で比較

翻訳元の各フィールドについて、翻訳先 コンテンツタイプに同じラベル名 / basename のフィールドがあれば値をコピーします。

翻訳先コンテンツタイプに対応フィールドがない場合

翻訳元コンテンツタイプにあって翻訳先コンテンツタイプに対応するフィールドがない場合、翻訳元フィールドの値は破棄されます。翻訳先コンテンツタイプに保存先カラムが物理的に存在しないため、コピー先がないことが原因です。

必要なフィールドは翻訳先コンテンツタイプにも作成しておいてください。

アセットの扱い

クロスコンテンツタイプ翻訳でアセットフィールドが含まれる場合、翻訳対象フィールドマッピングで「翻訳元のアセットフィールド → 翻訳先のアセットフィールド」のペアを指定すれば、AssetCopier がアセットを翻訳先サイトに複製します。

同じ blog の場合はアセット ID をそのままコピーし、別 blog の場合は新しい asset を作成します。

カテゴリーフィールドの扱い

クロスコンテンツタイプ翻訳でカテゴリーフィールドが含まれる場合、翻訳元と翻訳先で参照しているカテゴリセットの組ごとにマッピングが必要です。

詳細は「カテゴリ/フォルダのマッピング」をご覧ください。

値マッピング型(select / radio / checkbox)

クロスコンテンツタイプ翻訳で値マッピング型のフィールドが含まれる場合、翻訳対象フィールドマッピング行の「値マッピング...」ボタンから値の対応表を設定してください。

詳細は「選択肢フィールドの値マッピング」をご覧ください。

同じコンテンツタイプで運用するべきか別コンテンツタイプで運用するべきか

設計判断のヒントです。

観点同じコンテンツタイプで運用別コンテンツタイプで運用
設定の手間少ない多い(マッピング設定が必要)
翻訳先コンテンツタイプのカスタマイズできない(元と同じ)できる(翻訳先専用フィールドを追加可能)
データ移行のしやすさ元コンテンツタイプへの戻しやすさ別コンテンツタイプとして独立

シンプルな多言語サイトなら同じコンテンツタイプが楽です。翻訳先言語向けに独自のフィールド構造を持たせたい場合は別コンテンツタイプが選ばれます。