言語フォールバックを有効にして設定する

日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

多言語ソリューションでは、現在の言語にコンテンツが存在しない場合、言語フォールバック機能を使って別の言語でコンテンツを表示できます。

注記

SitecoreAIの言語フォールバックは2つのレベルで構成されます:

  • Environment-level configuration - ヘッドレスアプリケーションで使用されるGraphQLの配信(Experience EdgeおよびPreviewエンドポイント)の言語フォールバックを可能にします。ヘッドレスのシナリオで機能する言語のバックアップに必要です。

  • Site-level configuration - Page builder上でフォールバックアイテムが見えるかどうかを制御します。この設定はGraphQLの配信には影響しませんが、コンテンツ編集者がPage builderユーザーインターフェースでフォールバックデータソース項目を表示・選択するために必要です。

ユースケースによっては、両方のレベルを設定する必要があるかもしれません。ヘッドレス専用サイトでは、環境レベルの構成のみが必要です。 Page builderを利用するサイトでは、通常両方の構成が必要です。

このウォークスルーでは、以下の方法を説明します:

このトピックではContent Editorでの言語フォールバック管理方法を説明していますが、Settings Languagesテーブルでも行えます。

言語のフォールバックルールを定義します

環境内の言語フォールバックに使いたい各言語について、フォールバックしたい言語を指定する必要があります。言語定義項目で指定されたフォールバック言語は、言語フォールバックが有効なすべてのフィールドや項目に適用されます。

言語のフォールバックの連鎖を作ることができます。例えば、図に示すように、韓国語はスペイン語に戻り、スペイン語は英語に戻る。韓国語版やスペイン語版がない場合、その項目やフィールドの英語版が表示されます。

言語のフォールバックルールを定義するために:

  1. Content Editorのコンテンツツリーでsitecore/System/Languagesに移動し、フォールバック言語を指定する言語項目をクリックします。

    注記

    もし言語が足りない場合は、環境にさらに多くの言語を追加 できます。

  2. DataセクションのFallback Language欄で、該当する言語を選択します。

    In the Content Editor, define the fallback language on the language item
  3. 変更を保存してください。

環境全体で言語のフォールバックを有効にする

まだ有効になっていなければ、\App_Config\Sitecore\Services.GraphQL\Sitecore.Services.GraphQL.EdgeContent.configファイルの設定を変更することで、環境内のすべてのサイトの言語フォールバックを有効にすることができます。設定ファイルの変更は既存のサイトにも影響します。

アイテムやフィールド、あるいはその両方に対して言語のフォールバックを有効にすることができます。

注記

環境内で個々のサイトに対して言語のフォールバックを有効にする方法はありません。言語のフォールバックは環境レベルで有効であり、サイトレベルでは有効ではないため、環境内のすべてのサイトに適用されます。

この環境レベルの構成はGraphQLの配信動作を制御しますが、Page builderユーザーインターフェースには影響しません。 Page builderを利用する場合は、サイトの言語フォールバックも有効にする必要があります

環境の言語フォールバックを可能にするために:

  • 以下の設定のいずれか(または両方)をtrueに設定してください:

<setting name="ExperienceEdge.EnableItemLanguageFallback" value="false"/>
<setting name="ExperienceEdge.EnableFieldLanguageFallback" value="false"/>

サイトの言語フォールバックを有効にする

Page builderを使う場合は、環境全体で言語のフォールバックを有効にした後に必ずサイトに切り替える必要があります。これは、Page builderユーザーインターフェースがデータソース項目の言語フォールバックオプションを表示するためです。

サイトの言語フォールバックを可能にするために:

  1. SitecoreAI Page builderのSitecoreAIロゴの右側にあるシェブロンをクリックし、Content editorをクリックします。

  2. コンテンツエディターでサイトのサイトグループ設定に移動します: /sitecore/content/{:placeholder-token:}<tenant>{/:placeholder-token:}/{:placeholder-token:}<site>{/:placeholder-token:}/Settings/Site Grouping/{:placeholder-token:}<siteGrouping>{/:placeholder-token:}

  3. SettingsセクションでEnable item language fallbackチェックボックスを選択してください。

  4. 変更を保存してください。

アイテムやアイテムテンプレートの言語フォールバックを有効にする

注記

同じアイテムに対してアイテムレベルとフィールドレベルのフォールバックの両方を使わないでください。異なるアイテムやフィールドがフォールバックするバージョンの概要を維持するのが難しくなります。

言語フォールバックを使いたい個々のアイテムやアイテムテンプレートで、アイテムレベルのフォールバックを有効にする必要があります。アイテムテンプレートの言語フォールバックを有効にすると、そのテンプレートに基づくすべてのアイテムに影響します。

始める前に

Content EditorのViewタブでStandard fieldsチェックボックスが選択されていることを確認してください。

アイテムレベルのフォールバックを有効にするには:

  1. コンテンツツリーのContent Editorで、該当するアイテムへ移動します。

  2. 個別項目の言語フォールバックを有効にするには、AdvancedセクションでEnable Item Fallbackチェックボックスを選択してください。

  3. 項目テンプレートの言語フォールバックを有効にするには:

    • Quick Infoセクションで、Template欄のリンクをクリックしてください。

    • Template Managerダイアログでテンプレートアイテムを展開し、Advancedセクションで__Standard Valuesアイテムをクリックします。

      In the Content Editor, enable language fallback on an item template
  4. Enable Item Fallbackチェックボックスを選択してください。

  5. 変更を保存してください。

項目テンプレートのフィールド定義項目で言語のフォールバックを有効にする

注記

同じアイテムに対してアイテムレベルとフィールドレベルのフォールバックの両方を使わないでください。異なるアイテムやフィールドがフォールバックするバージョンの概要を維持するのが難しくなります。

フィールドレベルの言語フォールバックを使いたい場合は、アイテムテンプレートの関連するすべてのフィールド定義でフィールドレベル言語のフォールバックを有効にする必要があります。これは特定の言語バージョンのフィールドに対して行うことも、その分野のすべての言語バージョンに対して行うこともできます。

始める前に

Content EditorのViewタブでStandard fieldsチェックボックスが選択されていることを確認してください。

フィールド定義項目に対する言語フォールバックを有効にするには:

  1. Content Editorのコンテンツツリーで、該当するアイテムテンプレートに移動し、AdvancedセクションでEnable item fallbackチェックボックスがクリアされているか確認してください。

    Enable item-level language fallback on item templates in the Content Editor
  2. フィールドレベルのフォールバックを有効にしたいフィールド定義項目をクリックします。

  3. アイテムのDataセクションで、以下のいずれかまたは両方を選択します。

    • Enable field level fallback – 選択して現在のフィールドのすべての言語バージョンで言語フォールバックを有効にします。これは現在利用可能なすべての言語バージョンおよび新たに作成した言語バージョンに適用されます。

    • Enable versioned field level fallback – 選択して現在選択されている言語バージョンのフィールドのみで言語のフォールバックを有効にする。

      デフォルトではこの設定は無効です。有効化するには、Sitecore.LanguageFallback.configファイルで設定設定をLanguageFieldFallback.AllowVaryFallbackSettingsPerLanguageに設定してください。しかし、これによりパフォーマンスが大幅に低下します。

    In the Content Editor, enable language fallback on a field template
    注記

    一部のフィールド値は他のテンプレートから継承されている場合があり、その場合は各テンプレートでも有効にする必要があります。

  4. 変更を保存してください。ステップ2で選んだフィールドの項目を選択し、その後フォールバック(例えば英語)に設定した言語を選択すると、フィールドの値が英語に戻るのがわかります。

    Example of field in the Content Editor that is configured to use language fallback

Sitecore PowerShell拡張モジュールを活用してください

フィールドレベルのフォールバックを手動で有効化するには時間がかかるため、このプロセスを自動化し、フィールドレベルのフォールバック設定をバッチ更新するために、以下のサンプルスクリプトとともにSitecore Powershell拡張機能モジュール を使用できます。

$database = "master"
$path = "/sitecore/templates/Project/TestSite"
$sourcePath = "${database}:${path}"

# Get all items including root
$items = @(Get-Item -Path $sourcePath) + (Get-ChildItem -Path $sourcePath -Recurse)

# Filter by template name
$targetItems = $items | Where-Object { $_.TemplateName -eq 'Template field' }

# List of edited items
$editedItems = @()

foreach ($item in $targetItems) {
    Write-Host "Processing: Item ID: $($item.ID) | Item Name: $($item.Name)"

    $field = $item.Fields["Enable Shared Language Fallback"]
    if ($field -and $field.Value -ne "1") {
        # Modify field value
        $item.Editing.BeginEdit()
        try {
            $field.Value = "1"
            $editedItems += $item
            Write-Host "✔ Enabled field language fallback: $($item.ID) | Field value: $($field.Value) | Path: $($item.Paths.Path)" -ForegroundColor Green
        }
        finally {
            $item.Editing.EndEdit() | Out-Null
        }
    }
}

# Final report
if ($editedItems.Count -eq 0) {
    Write-Host "`n--- No items required field-level fallback update ---"
}
else {
    Write-Host "`n--- Updated items with field-level fallback ---"
    $editedItems | ForEach-Object {
        Write-Host "Edited: $($_.Paths.FullPath) | ID: $($_.ID)"
    }
}
この記事を改善するための提案がある場合は、 お知らせください!