> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 既定の言語の設定

> PlayFab タイトルの既定の言語と、プレイヤーごとの優先言語を設定して、ローカライズされた文字列、メール、ニュースがプレイヤーに適切な言語で届くようにします。

PlayFab は、ゲーム開発者に代わってローカライズされた文字列を保存するためのサポートを導入しています。さらに、プレイヤーが希望する言語の正しい文字列を提供するのに必要なロジックを追加します。

これを達成するために、2 つの新しい言語設定を活用します。1 つはタイトルに関連付けられ、もう 1 つは各プレイヤーのエンティティ プロファイルに保存されます:

1. **タイトルの既定の言語**: タイトルが主にサポートする言語を示します。設定すると、少なくともローカライズされた文字列を使用する機能で使用するために、タイトルがこの言語をサポートすることが必要になります。
2. **プレイヤーの言語**: プレイヤーの優先言語を示します。これはタイトルごとに設定できます。

これら 2 つの設定を使用して、PlayFab のロジックは、ローカライズされた文字列を、その言語を優先するプレイヤーとマッチさせます。言語の優先が設定されていないプレイヤーは、タイトルで指定された既定の言語で文字列を受け取ります。

<Note>
  タイトルが *サポートしていない* 言語を優先するプレイヤーも、タイトルの既定の言語に基づいて文字列を受け取ります。
</Note>

このチュートリアルでは、タイトルの既定の言語とプレイヤーの優先言語を設定する方法を説明します。

## 要件

このチュートリアルでは、PlayFab の使用に関する次の実務知識を前提としています:

* プレイヤーの作成方法に関する基本的な知識。優先言語のロジックを呼び出す前に、プレイヤーがユーザー名とパスワードを持って *既に存在する* 必要があるため、これが必要です。

* [Game Manager クイックスタート](/services/playfab/live-service-management/gamemanager/quickstart) を読んでいること。Game Manager に慣れていない場合、これは言語情報を表示する場所です。

* プレイヤー プロファイルの操作方法に関する知識。優先言語がプレイヤーのプロファイルに追加されたことを確認する必要があるためです。

* [プレイヤー プロファイルの取得](/services/playfab/player-progression/player-data/getting-player-profiles) チュートリアルで、プレイヤー プロファイルを取得する方法についての情報を確認する時間を取ってください。

## セクション 1 – プレイヤーの優先言語

プレイヤーの優先言語を設定する前に、どのように収集するかを考えます。いくつかのオプションがあります:

* プレイヤーに尋ねる: ゲームのメニューにオプションを追加します。
* 言語を推測する: 提供されているプラットフォーム API (たとえば Android の `Locale.getDefault.getLanguage()`) を呼び出すことで、プレイヤーのデバイスの言語を使用します。

<Note>
  世界には多くの言語があり、タイトルは *すべての* 言語をサポートし *ない* 場合があります。必須ではありませんが、タイトルを将来性のあるものにし、プレイヤーの実際の優先を保存することを推奨します。後でその言語のサポートを追加する場合、PlayFab のロジックは自動的に新しい文字列を提供し始めます (既定の代わりに)。
</Note>

### ステップ 1 – 言語を設定する

PlayFab では、サポートする言語のリストから選択できます。`GetLanguageList()` メソッドを呼び出して言語コードを確認できます。

<Note>
  `SetProfileLanguage` API を使用する場合、言語文字列は ISO 639-1 形式で指定する必要があります (たとえば、"en"、"es"、"ja")。現時点では、コード "zh" はサポートされていません。
</Note>

まず、プレイヤーのプロファイルを更新して、タイトルからのコンテンツを受け取りたい言語を含めます。

### C# コード例

```csharp theme={null}
void SetProfileLanguage(string language, int? profileExpectedVersion, EntityKey entity)
{
    var request = new SetProfileLanguageRequest
    {
        Language = language,
        ExpectedVersion = profileExpectedVersion,
        Entity = entity
    };
    PlayFabProfilesAPI.SetProfileLanguage(request, res =>
    {
        Debug.Log("The language on the entity's profile has been updated.");
    }, FailureCallback);
}

void FailureCallback(PlayFabError error)
{
    Debug.LogWarning("Something went wrong with your API call. Here's some debug information:");
    Debug.LogError(error.GenerateErrorReport());
}
```

### ステップ 2 – 言語が更新されたことを確認する

プレイヤーの概要に移動します。Game Manager で **Player** > **Overview** に移動します。連絡先情報セクションが優先言語で更新されていることを確認します。

言語は、以下の画像に表示されている **Language** ドロップダウン メニューでも更新できます。

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/game-manager-player-overview-contact-email-language.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=eecdfe04a6b7b7600fa01d42f5f199f9" alt="Game Manager - Player - Overview - 連絡先メール - 言語" width="1366" height="1403" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/game-manager-player-overview-contact-email-language.png" />

次に、プレイヤーの **PlayStream** に移動すると、**Entity language updated** イベントが表示されます。

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/game-manager-players-playstream-entity-language-updated-event.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=ab059b81af6a08348ce7964d0af634d1" alt="Game Manager - Players - PlayStream - エンティティ言語更新イベント" width="2146" height="1051" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/game-manager-players-playstream-entity-language-updated-event.png" />

イベントの情報アイコンを選択すると、以下の例のような JSON が表示されます。

```json theme={null}
{
    "EventName": "entity_language_updated",
    "Source": "PlayFab",
    "Language": "en",
    "EntityChain": "title_player_account!4CDA57A14A596E70/<YourTitleId>/C9458B4D3A115F4B/36163DA3783B0C8A/",
    "EntityLineage": {
        "NamespaceId": "4CDA57A14A596E70",
        "TitleId": "YourTitleId",
        "MasterPlayerAccountId": "C9458B4D3A115F4B",
        "TitlePlayerAccountId": "36163DA3783B0C8A",
        "CharacterId": null,
        "GroupId": null
    },
    "EventNamespace": "com.playfab",
    "EventId": "f643e22a2a76462aaeaa3469afa31434",
    "EntityType": "title_player_account",
    "EntityId": "36163DA3783B0C8A",
    "SourceType": "BackEnd",
    "Timestamp": "2018-08-24T18:49:47.8755292Z",
    "History": null,
    "CustomTags": null,
    "Reserved": null
}
```

## セクション 2 – タイトルの既定の言語を設定する

次に、タイトルの既定の言語を設定します。すべてのローカライズ機能は、コンテンツの翻訳された各バージョンに言語を関連付けるようになりました。

タイトルには既定の言語が必要です。これにより、プレイヤーの優先言語が設定されていないかサポートされていない場合でも、プレイヤーはコンテンツの既定バージョンを引き続き受け取ることができます。

まず、以下に示すように、左のメニューで **Settings** を選択します。

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/game-manager-settings-general-default-language.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=88b4addca9d596c968dd066b5adc0d61" alt="Game Manager - Settings - General - 既定の言語" width="1467" height="969" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/game-manager-settings-general-default-language.png" />

新しい **TITLE DEFAULTS** ヘッダーの下の **General** タブで、**Default language** ドロップダウンを見つけます。ローカリゼーション追加機能のいずれかを使用する前に、既定の言語を設定する必要があります。

完了したら、**SAVE** ボタンを選択します。更新が成功した場合はメッセージ通知が表示されます。

ダッシュボードに戻ると、以下に示すように **PlayStream** イベント リストに **Title API settings changed** イベントが表示されます。

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/playstream-title-api-settings-changed.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=7fb696a4380decc56a91ad8e68408dd1" alt="PlayStream - Title API 設定変更" width="1022" height="268" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/playstream-title-api-settings-changed.png" />

イベントの情報アイコンを選択すると、以下の例のような JSON が表示されます。

```json theme={null}
{
    "EventName": "title_api_settings_changed",
    "PreviousSettingsValues": {
        "DefaultLanguage": null
    },
    "SettingsValues": {
        "DefaultLanguage": "en"
    },
    "UserId": "EAF83D52E282C291",
    "DeveloperId": null,
    "EventNamespace": "com.playfab",
    "EntityType": "title",
    "Source": "PlayFab",
    "EventId": "108849a5e1424051b42256bc75b2e34b",
    "EntityId": "YourTitleId",
    "SourceType": "BackEnd",
    "Timestamp": "2018-08-24T21:51:02.2215614Z",
    "History": null,
    "CustomTags": null,
    "Reserved": null
}
```

## セクション 3 – タイトルの既定の言語の更新

タイトルの既定を設定すると、優先言語が設定されて *いない* プレイヤーや、サポートしていない言語を選択したプレイヤーに通信を発行するときに、その言語を使用するように PlayFab に指示することを覚えておくことが重要です。

タイトルの既定は *フォールバック* 言語として使用されるため、PlayFab はすべての通信が既定の言語をサポートすることを期待します。

<Note>
  タイトルの既定は *いつでも* 変更できますが、PlayFab は現在の通信テンプレートが変更先の言語をサポートしていることを要求します。
</Note>

タイトルの既定の言語を更新すると、インターフェイスに **Edit** リンクが表示されるようになります。

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/title-defaults-default-language.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=e2364c621ef9a84221ce86e95138326d" alt="タイトルの既定 - 既定の言語" width="1366" height="785" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/title-defaults-default-language.png" />

このリンクをたどると、以前と同じドロップダウンが表示されます。ただし、メール テンプレートで完全にサポートされていない既定の言語を保存しようとすると、以下のような 1 つ以上のエラー メッセージが表示されます。

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/game-manager-general-edit-default-language.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=e4b6443bea4ffd40ed39ac007099dc46" alt="Game Manager - General - 既定の言語の編集" width="1366" height="785" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/game-manager-general-edit-default-language.png" />

エラーがある場合は、提供されているリンクをたどって、欠けている言語をサポートするようにコンテンツを更新できます。すべてのエラーに対処すると、既定の言語の変更が受け入れられます。

## まとめ

このチュートリアルでは、タイトルの既定の言語とプレイヤーの優先言語を設定・更新する方法を確認しました。

このチュートリアルに関するご質問やフィードバックがある場合は、[フォーラム](https://community.playfab.com/questions/ask.html) または Slack チャンネルからお問い合わせください。


## Related topics

- [ローカライズされたメール テンプレート](/ja-jp/services/playfab/live-service-management/game-configuration/title-communications/emails/localized-email-templates.md)
- [Title News クイックスタート](/ja-jp/services/playfab/live-service-management/game-configuration/title-communications/news/quickstart.md)
- [プッシュ通知テンプレート](/ja-jp/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notification-templates.md)
- [XBOX Manager: テスト アカウントの管理](/ja-jp/tools/tools-console/xbom/manager-tool-profiles.md)
- [XBOX Manager: コンソールとグループの管理](/ja-jp/tools/tools-console/xbom/manager-tool-groups.md)
