> ## 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.

# コンソールのロケールと言語の判定

> GDK タイトルで適切な言語パックとローカライズされたリソースを選択できるように、現在の XBOX コンソールのロケールと言語設定を判定します。

サインイン中のセッションのロケールを取得するには、[`GetUserDefaultLocaleName`](https://learn.microsoft.com/windows/win32/api/winnls/nf-winnls-getuserdefaultlocalename) を使用します。

```cpp theme={null}
wchar_t localeName[LOCALE_NAME_MAX_LENGTH];
int retVal = GetUserDefaultLocaleName(localeName, ARRAYSIZE(localeName));
// The value is returned in localeName.
```

通常、ゲームで重要なのは正確なロケールそのものではなく、**どの言語リソースを読み込むか**です。ユーザーが選択したものに「最も近い」言語をゲーム パッケージから選びます。次の 3 つの入力が関係します。

1. `MicrosoftGame.config` で宣言されている言語。
2. パッケージ レイアウト ファイルで宣言されている言語。
3. デバイスで選択されている言語。

サポートされる最も近い言語を常に取得するには、[`XPackageGetUserLocale`](/reference/system/xpackage/functions/xpackagegetuserlocale) を使用します。

```cpp theme={null}
char gameLocale[LOCALE_NAME_MAX_LENGTH];
HRESULT hr = XPackageGetUserLocale(_countof(gameLocale), gameLocale);
if (SUCCEEDED(hr))
{
    printf("Game using locale: %s\n", gameLocale);
}
```

## 例

### 1. ユーザーのロケールが、サポートされるリソースと一致する場合

ユーザーが **フランス語／フランス (fr-FR)** を選択しています。`MicrosoftGame.config`:

```xml theme={null}
<Resources>
    <Resource Language="en-US"/>
    <Resource Language="fr-FR"/>
    <Resource Language="de-DE"/>
    <Resource Language="en-GB"/>
</Resources>
```

* `XPackageGetUserLocale` は `fr-FR` を返します。
* `GetUserDefaultLocaleName` は `fr-FR` を返します。

### 2. ユーザーのロケールがマニフェストにないが、同じ言語が存在する場合

ユーザーが **英語／英国 (en-GB)** を選択しています。`MicrosoftGame.config`:

```xml theme={null}
<Resources>
    <Resource Language="en-US"/>
    <Resource Language="fr-FR"/>
    <Resource Language="de-DE"/>
</Resources>
```

* `XPackageGetUserLocale` は `en-US` を返します (同じ言語内でのフォールバック)。
* `GetUserDefaultLocaleName` は `en-GB` を返します (常にコンソールの値)。

### 3. ユーザーの言語がまったく存在しない場合

ユーザーのロケールは `fr-FR` です。`MicrosoftGame.config`:

```xml theme={null}
<Resources>
    <Resource Language="en-US"/>
    <Resource Language="de-DE"/>
</Resources>
```

* `XPackageGetUserLocale` は `en-US` を返します (`Resources` の最初のエントリ)。
* `GetUserDefaultLocaleName` は `fr-FR` を返します。

## まとめ

* `GetUserDefaultLocaleName` — ゲームが宣言している言語を無視した、コンソールの設定値。
* `XPackageGetUserLocale` — 次のロジックを用いた、読み込むべき言語:
  1. ユーザーのロケールが `MicrosoftGame.config` に含まれていれば、それを返します。
  2. そうでなければ、マニフェスト内で同じ言語のロケールを探します (ユーザーのロケールに基づく最良のフォールバック)。
  3. それも見つからなければ、`Resources` の最初のロケールを返します。
  4. 言語が 1 つも列挙されていなければ、コンソールの言語を返します。

## 関連項目

* [XPackageGetUserLocale](/reference/system/xpackage/functions/xpackagegetuserlocale)
* [MicrosoftGame.config のローカライズ](/build/core-features/common/game-config/MicrosoftGameConfig-Localization)

## 関連 API ドキュメント

* [XGameRuntime features リファレンス](/reference/system/xgameruntimefeature/xgameruntimefeature_members) — 現在のロケール用の `XGameRuntimeLocale`
* [XPackage API リファレンス](/reference/system/xpackage/xpackage_members) — ロケール対応のパッケージ リソース クエリ


## Related topics

- [ローカライズとグローバライゼーションの概要](/ja-jp/build/game-principles/localization.md)
- [コンソールの所在地の判定](/ja-jp/build/game-principles/localization/determining-console-geolocation.md)
- [XPackageGetUserLocale](/ja-jp/reference/system/xpackage/functions/xpackagegetuserlocale.md)
- [コンソールでサポートされる言語](/ja-jp/build/game-principles/localization/console-supported-languages.md)
- [ゲームでサポート／未サポートのロケール](/ja-jp/build/game-principles/localization/game-supported-and-unsupported-locales.md)
