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

# Supported NLS functions

> Reference the National Language Support (NLS) functions available under WINAPI_PARTITION_GAMES in the GDK, with XBOX Game OS caveats and usage notes.

The National Language Support (NLS) functions help titles support language- and locale-specific behavior. Only API functions defined under the `WINAPI_PARTITION_GAMES` partition in `WinNLS.h` are available on XBOX.

> [!NOTE]
>
> APIs marked **DEPRECATED** still work on the GDK with the caveats documented on Microsoft Docs. Prefer the replacements.

## Available functions

| Function | State | Replacement |
| - | - | - |
| `EnumSystemLocalesEx` | | |
| `FindNLSStringEx` | | |
| `FoldStringA` | | |
| `GetACP` | | |
| `GetCurrencyFormatEx` | | |
| `GetGeoInfoEx` | | |
| `GetLocaleInfoEx` | | |
| `GetNumberFormatEx` | | |
| `GetStringTypeA` | | |
| `GetStringTypeExA` | | |
| `GetThreadLocale` | | |
| `GetUserDefaultGeoName` | | |
| `GetUserDefaultLocaleName` | | |
| `GetUserPreferredUILanguages` | NOT SUPPORTED | Always returns `en-US` |
| `IdnToAscii` | | |
| `IdnToUnicode` | | |
| `IsValidCodePage` | | |
| `IsValidLocaleName` | | |
| `LCIDToLocaleName` | | |
| `LCMapStringEx` | | |
| `LocaleNameToLCID` | | |
| `ResolveLocaleName` | | |
| `SetThreadLocale` | | |
| `CompareString` | DEPRECATED | `CompareStringEx` |
| `CompareStringA` | DEPRECATED | `CompareStringEx` |
| `EnumSystemLocalesA` | DEPRECATED | `EnumSystemLocalesEx` |
| `EnumSystemLocalesW` | DEPRECATED | `EnumSystemLocalesEx` |
| `FindNLSString` | DEPRECATED | `FindNLSStringEx` |
| `GetCPInfo` | DEPRECATED | Use Unicode |
| `GetCPInfoExA` | DEPRECATED | Use Unicode |
| `GetCPInfoExW` | DEPRECATED | Use Unicode |
| `GetCurrencyFormatA` | DEPRECATED | `GetCurrencyFormatEx` |
| `GetCurrencyFormatW` | DEPRECATED | `GetCurrencyFormatEx` |
| `GetGeoInfoA` | DEPRECATED | `GetGeoInfoEx` |
| `GetGeoInfoW` | DEPRECATED | `GetGeoInfoEx` |
| `GetLocaleInfoA` | DEPRECATED | `GetLocaleInfoEx` |
| `GetLocaleInfoW` | DEPRECATED | `GetLocaleInfoEx` |
| `GetNumberFormatA` | DEPRECATED | `GetNumberFormatEx` |
| `GetNumberFormatW` | DEPRECATED | `GetNumberFormatEx` |
| `GetUserGeoID` | DEPRECATED | `GetUserDefaultLocaleName` |
| `LCMapStringA` | DEPRECATED | `LCMapStringEx` |
| `LCMapStringW` | DEPRECATED | `LCMapStringEx` |

## Game OS behavior notes

Game OS NLS functions do **not** include the full linguistic casing tables that Windows has. Collation and casing operations always use **ordinal** values regardless of the locale.

**Do culture-sensitive casing and sorting as part of your localization process**, not at runtime.

Affected functions:

| NLS |
| - |
| `LCMapStringEx` |
| `CompareStringEx` |
| `CompareString` |
| `CompareStringA` |

### Collation

| Base | Wide | Multibyte |
| - | - | - |
| `std::collate` | | |
| `strcoll` | `wcscoll` | `_mbscoll` |
| `_stricoll` | `_wcsicoll` | `_mbsicoll` |
| `_strncoll` | `_wcsncoll` | `_mbsncoll` |
| `_strnicoll` | `_wcsnicoll` | `_mbsnicoll` |

### Uppercasing

| Base | Variant | Wide variant |
| - | - | - |
| `std::toupper` | `toupper` | `towupper` |
| `_toupper` | `_toupper_l` | `_towupper_l` |
| `std::isupper` | `isupper` | `iswupper` |
| `_isupper_l` | `_iswupper_l` | |

### Lowercasing

| Base | Variant | Wide variant |
| - | - | - |
| `std::tolower` | `tolower` | `towlower` |
| `_tolower` | `_tolower_l` | `_towlower_l` |
| `std::islower` | `islower` | `iswlower` |
| `_islower_l` | `_iswlower_l` | |

> [!NOTE]
>
> This list isn't exhaustive — other Standard C++ Library functions might depend on the impacted APIs.

## Related API documentation

* [XGameRuntime features reference](https://docs.xbox.com/reference/system/xgameruntimefeature/xgameruntimefeature_members.md) — locale + region GDK surface complementing NLS


## Related topics

- [Economy v2 Localization](https://docs.xbox.com/build/game-principles/localization.md)
- [Supported languages](https://docs.xbox.com/publishing/game-publishing/concepts/metadata-supported-languages.md)
- [XFrontPanelIsSupported](https://docs.xbox.com/reference/devkit/xfrontpaneldisplay/functions/xfrontpanelissupported.md)
- [Console-supported languages](https://docs.xbox.com/build/game-principles/localization/console-supported-languages.md)
- [Supported Azure regions](https://docs.xbox.com/services/playfab/multiplayer/networking/supported-azure-regions.md)
