---
title: "言語フォールバックを有効にして設定する"
slug: "enable-and-set-up-language-fallback"
abstract: "サイトレベルおよび項目・フィールドレベルで言語のフォールバックを有効にします。"
---
# 言語フォールバックを有効にして設定する

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

> !注SitecoreAIの言語フォールバックは2つのレベルで構成されています:
> 
> -   *Environment-level configuration* - ヘッドレスアプリケーションで使用されるGraphQLの配信(Experience EdgeおよびPreviewエンドポイント)の言語フォールバックを可能にします。ヘッドレスのシナリオで機能する言語のバックアップに必要です。
>     
> -   *Site-level configuration* - ページビルダー内でフォールバックアイテムが見えるかどうかを制御する。この設定はGraphQLの配信には影響しませんが、コンテンツ編集者がページビルダーのユーザーインターフェースでフォールバックデータソース項目を確認・選択するために必要です。
>     
> 
> ユースケースによっては、両方のレベルを設定する必要があるかもしれません。ヘッドレス専用サイトでは、環境レベルの構成のみが必要です。ページビルダーを使用するサイトでは、通常両方の構成が必要です。

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

1.  言語のフォールバックルールを定義します
2.  環境の言語フォールバックを有効にする
3.  ページビルダーを使用している場合、サイトの言語フォールバックを有効にする
4.  (代替)アイテムやアイテムテンプレートの言語フォールバックを有効にする
5.  (代替)項目テンプレートのフィールド定義項目で言語のフォールバックを有効にする
6.  (代替)Sitecore PowerShell拡張モジュールを活用してください

このトピックでは、コンテンツエディターでの言語フォールバックの管理方法を説明していますが [、設定言語](https://doc.sitecore.com/sai/en/users/sitecoreai/manage-languages-and-locales.html) テーブルでも行えます。

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

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

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

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

1.  コンテンツツリーのコンテンツエディターで*sitecore/System/Languages*に移動し、フォールバック言語を指定する言語項目をクリックしてください。
    
    > !注もし言語が足りない場合は、[環境にさらに多くの言語を追加](https://doc.sitecore.com/sai/ja/developers/sitecoreai/content-modeling-and-presentation/working-with-languages/add-a-language-to-your-environment.html "Add a language to your environment") できます。
    
2.  **データ**セクションの**「Fallback Language**」欄で、該当する言語を選択します。
    
    ![In the Content Editor, define the fallback language on the language item](https://doc.sitecore.com/api/markdown-image/sai/ja/developers/sitecoreai/images/ce-define-language-fallback-rules.png)
    
3.  変更を保存してください。
    

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

まだ有効になっていなければ、環境内のすべてのサイトで言語フォールバックを有効にすると、パッチ [ファイル](https://doc.sitecore.com/sai/ja/developers/sitecoreai/development/use-a-patch-file-to-customize-the-sitecore-configuration.html "Use a patch file to customize the Sitecore configuration") を作成してSitecore.Services.GraphQL.EdgeContent.configで関連設定を上書きできます。パッチファイルはどんな名前でも構いませんが、ソースコードの /platform/ フォルダに入れる必要があります。これらの変更は既存のサイトにも影響を及ぼします。

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

> !注環境内で個々のサイトに対して言語のフォールバックを有効にする方法はありません。言語のフォールバックは環境レベルで有効であり、サイトレベルでは有効ではないため、環境内のすべてのサイトに適用されます。
> 
> この環境レベルの構成はGraphQLの配信動作を制御しますが、ページビルダーのユーザーインターフェースには影響しません。ページビルダーを使用している場合は、[サイトの言語フォールバックも有効にする必要があります](https://doc.sitecore.com/sai/ja/developers/sitecoreai/content-modeling-and-presentation/working-with-languages/language-fallback/overview-of-setting-up-language-fallback/enable-and-set-up-language-fallback.html#UUID-c2f3a97c-7e53-9532-c438-c73608e83319_section-id235366123701593 "Enable language fallback for a site")。

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

-   true[に設定するパッチファイルを作成します:](https://doc.sitecore.com/sai/ja/developers/sitecoreai/development/use-a-patch-file-to-customize-the-sitecore-configuration.html "Use a patch file to customize the Sitecore configuration")

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

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

ページビルダーを使用している場合、環境全体で言語フォールバックを有効にした後に、必ずサイトに対して言語のフォールバックを有効にしなければなりません。これは、ページビルダーのユーザーインターフェースがデータソース項目の言語フォールバックオプションを表示するためです。

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

1.  SitecoreAIページビルダーの中、SitecoreAIロゴの右側にあるシェブロン ![chevron-down.png](https://doc.sitecore.com/api/markdown-image/sai/ja/developers/sitecoreai/images/chevron-down.png)をクリックし、その後「 **コンテンツエディター**」をクリックします。
2.  コンテンツエディターでサイトのサイトグループ設定へ移動してください: */sitecore/content/<tenant>/<site>/settings/Site Grouping/<siteGrouping>*
3.  **設定**セクションで「**アイテム言語のフォールバックを有効にする**」チェックボックスを選択してください。
4.  変更を保存してください。

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

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

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

> !注**始める前に**コンテンツエディターの「ビュー」タブで「標準フィールド」チェックボックスが選択されているか確認してください。

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

1.  コンテンツエディターのコンテンツツリーで、該当するアイテムへ移動します。
    
2.  個別項目で言語フォールバックを有効にするには、**詳細** セクションで「 **アイテムフォールバックを有効にする** 」チェックボックスを選択してください。
    
3.  項目テンプレートの言語フォールバックを有効にするには:
    
    -   **クイックインフォ**セクションで、**テンプレート**欄のリンクをクリックしてください。
        
    -   **テンプレートマネージャー**のダイアログでテンプレートアイテムを展開し、**詳細**セクションで\_\_Standard Valuesアイテムをクリックします。
        
        ![In the Content Editor, enable language fallback on an item template](https://doc.sitecore.com/api/markdown-image/sai/ja/developers/sitecoreai/images/3F1D468F9B834574B7ECAF51D483E4B7.png)
        
4.  アイテムの **フォールバックを有効にする** チェックボックスを選択してください。
    
5.  変更を保存してください。
    

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

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

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

> !注**始める前に**コンテンツエディターの「ビュー」タブで「標準フィールド」チェックボックスが選択されているか確認してください。

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

1.  コンテンツエディターのコンテンツツリーで、関連するアイテムテンプレートに移動し、**詳細** セクションで **「アイテムフォールバックを有効にする** 」チェックボックスがクリアされているか確認してください。
    
    ![Enable item-level language fallback on item templates in the Content Editor](https://doc.sitecore.com/api/markdown-image/sai/ja/developers/sitecoreai/images/ce-item-template-language-fallback-disabled.png)
    
2.  フィールドレベルのフォールバックを有効にしたいフィールド定義項目をクリックします。
    
3.  アイテムの **「データ** 」セクションで、以下のいずれかまたは両方を選択します。
    
    -   **フィールドレベルのフォールバックを有効にする** – 現在のフィールドのすべての言語バージョンで言語フォールバックを有効にするように選択します。これは現在利用可能なすべての言語バージョンおよび新たに作成した言語バージョンに適用されます。
        
    -   **バージョン付きフィールドレベルのフォールバックを有効にする** – 現在選択されている言語バージョンのフィールドのみに対して言語フォールバックを有効にすることを選択します。
        
        デフォルトではこの設定は無効です。有効化するには、Sitecore.LanguageFallback.configファイルで [設定](https://doc.sitecore.com/sai/ja/developers/sitecoreai/content-modeling-and-presentation/working-with-languages/language-fallback/overview-of-setting-up-language-fallback/fine-tune-your-language-fallback-configuration.html "Fine-tune your language fallback configuration") 設定LanguageFieldFallback.AllowVaryFallbackSettingsPerLanguageをtrueに設定してください。しかし、これによりパフォーマンスが大幅に低下します。
        
    
    ![In the Content Editor, enable language fallback on a field template](https://doc.sitecore.com/api/markdown-image/sai/ja/developers/sitecoreai/images/ce-enable-lf-on-field-templates.png)
    
    > !注一部のフィールド値は他のテンプレートから継承されている場合があり、その場合は各テンプレートでも有効にする必要があります。
    
4.  変更を保存してください。ステップ2で選んだフィールドの項目を選択し、その後フォールバック(例えば英語)に設定した言語を選択すると、フィールドの値が英語に戻るのがわかります。
    
    ![Example of field in the Content Editor that is configured to use language fallback](https://doc.sitecore.com/api/markdown-image/sai/ja/developers/sitecoreai/images/ce-field-set-to-fallback-to-english.png)
    

## 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)"
 }
}