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

# 지원되는 NLS 함수

> GDK에서 WINAPI_PARTITION_GAMES 하에 노출되는 National Language Support (NLS) 함수 레퍼런스로, Game OS 관련 주의 사항 및 사용 노트를 포함합니다.

National Language Support (NLS) 함수는 타이틀이 언어 및 로케일별 동작을 지원할 수 있도록 돕습니다. XBOX에서는 `WinNLS.h`의 `WINAPI_PARTITION_GAMES` 파티션 아래에 정의된 API 함수만 사용할 수 있습니다.

> [!NOTE]
>
> **DEPRECATED**로 표시된 API도 Microsoft Docs에 문서화된 주의 사항과 함께 GDK에서 여전히 동작합니다. 대체 API를 우선 사용하세요.

## 사용 가능한 함수

| 함수 | 상태 | 대체 |
| - | - | - |
| `EnumSystemLocalesEx` | | |
| `FindNLSStringEx` | | |
| `FoldStringA` | | |
| `GetACP` | | |
| `GetCurrencyFormatEx` | | |
| `GetGeoInfoEx` | | |
| `GetLocaleInfoEx` | | |
| `GetNumberFormatEx` | | |
| `GetStringTypeA` | | |
| `GetStringTypeExA` | | |
| `GetThreadLocale` | | |
| `GetUserDefaultGeoName` | | |
| `GetUserDefaultLocaleName` | | |
| `GetUserPreferredUILanguages` | NOT SUPPORTED | 항상 `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 | Unicode 사용 |
| `GetCPInfoExA` | DEPRECATED | Unicode 사용 |
| `GetCPInfoExW` | DEPRECATED | 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 동작 참고 사항

Game OS의 NLS 함수는 Windows가 가지고 있는 전체 언어별 대소문자(casing) 테이블을 **포함하지 않습니다**. 정렬(collation) 및 대소문자 변환 연산은 로케일과 무관하게 항상 **ordinal** 값을 사용합니다.

**문화권을 인식하는 대소문자 변환과 정렬은 런타임이 아니라 현지화 프로세스의 일부로 수행하세요.**

영향을 받는 함수:

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

### 정렬(Collation)

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

### 대문자 변환

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

### 소문자 변환

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

> [!NOTE]
>
> 이 목록은 전부는 아닙니다. 다른 Standard C++ Library 함수들도 영향을 받는 API에 의존할 수 있습니다.

## 관련 API 문서

* [XGameRuntime 기능 레퍼런스](https://docs.xbox.com/ko/reference/system/xgameruntimefeature/xgameruntimefeature_members.md) — NLS를 보완하는 로케일 + 지역 GDK 표면


## Related topics

- [Economy v2 지역화](https://docs.xbox.com/ko/build/game-principles/localization.md)
- [지원되는 언어](https://docs.xbox.com/ko/publishing/game-publishing/concepts/metadata-supported-languages.md)
- [지원되는 Azure 지역](https://docs.xbox.com/ko/services/playfab/multiplayer/networking/supported-azure-regions.md)
- [Microsoft Game Development Kit(GDK)에서 Clang 사용](https://docs.xbox.com/ko/tools/tools-pc/visualstudio/gr-vs-clang.md)
- [콘솔용 Microsoft Game Development Kit(GDK)에서 Clang 사용](https://docs.xbox.com/ko/tools/tools-console/visualstudio/vs-clang.md)
