UCRT: сведения о строках имени языкового стандарта, языка, а также страны или региона
Аргумент можно задать для locale
setlocale
,_wsetlocale
_create_locale
и _wcreate_locale
функций несколькими способами. Языковой стандарт можно задать с помощью имен языков, языков, кодов стран или регионов и кодовых страниц, поддерживаемых API NLS Windows. Аргумент locale
принимает одну из следующих форм:
locale
:: "locale-name"
| "language[_country-region[[.кодовая страница]"
| ".кодовая страница"
| "C"
| ""
| NULL
Параметр locale-name представлен в формате короткой строки стандарта IETF, например en-US
для английского языка (США) или bs-Cyrl-BA
для боснийского (кириллица, Босния и Герцеговина). Такой формат является предпочтительным. Список поддерживаемых имен языковых стандартов для версий операционной системы Windows см. в столбце Тег языка таблицы, которая приведена в приложении A (поведение продукта) справочника по коду языка Windows. Этот список ресурсов включает в себя поддерживаемый язык, скрипт и региональные части имен языковых стандартов. Сведения о поддерживаемых именах языков, у которых нет заказов сортировки по умолчанию, см . в столбце имени языкового стандарта в идентификаторах порядка сортировки. В версии Windows 10 или более поздней допускаются имена языкового стандарта, соответствующие допустимым тегам языка BCP-47. Например, jp-US
является допустимым тегом BCP-47, но он фактически предназначен только US
для функциональных возможностей языкового стандарта.
Язык[_country-region[[.форма code-page]] хранится в параметре языкового стандарта для категории, если для создания языкового стандарта используется строка языка или строка языка и страна или строка региона. Набор поддерживаемых строк языка описывается в строках языка, а список поддерживаемых строк стран и регионов указан в строках страны или региона. Если указанный язык не связан с указанной страной или регионом, язык по умолчанию для указанной страны или региона хранится в параметре языкового стандарта. Мы не рекомендуем эту форму для строк языкового стандарта, внедренных в код или сериализованных в хранилище: эти строки, скорее всего, будут изменены обновлением операционной системы, чем форма имени языкового стандарта.
Кодовой страницей (code-page) является кодовая страница ANSI/OEM, связанная с этим языковым стандартом. Кодовая страница определяется автоматически при указании языкового стандарта с помощью языка или с помощью языка и страны или региона по отдельности. Особое значение .ACP
определяет кодовую страницу ANSI для страны или региона. Особое значение .OCP
определяет кодовую страницу OEM для страны или региона. Например, если в "Greek_Greece.ACP"
качестве языкового стандарта указывается языковой стандарт, языковой стандарт хранится как Greek_Greece.1253
(кодовая страница ANSI для греческого языка), а если указан "Greek_Greece.OCP"
в качестве языкового стандарта, он хранится как Greek_Greece.737
(кодовая страница OEM для греческого языка). Дополнительные сведения о кодовой странице см. в разделе "Кодовая страница". Список поддерживаемых кодовых страниц в Windows см. в разделе "Кодовые идентификаторы".
Если используется только кодовая страница для указания языкового стандарта, используется язык пользователя по умолчанию и страна или регион, как сообщается GetUserDefaultLocaleName
. Например, если указать ".1254"
(ANSI — турецкий) как языковой стандарт пользователя, который настроен на использование английского (США), сохранится языковой стандарт English_United States.1254
. Мы не рекомендуем эту форму, так как это может привести к несогласованности поведения.
Значение locale
аргумента C
указывает минимальную среду соответствия ANSI для перевода C. Языковой стандарт C
предполагает, что все типы данных char
соответствуют 1 байту, а их значение всегда меньше 256. Если locale
указывает на пустую строку, языковой стандарт соответствует исходной среде, определенной реализацией.
Можно указать все категории языкового стандарта одновременно для функций setlocale
и _wsetlocale
с помощью категории LC_ALL
. Всем категориям можно задать тот же языковой стандарт, также можно задать каждую категорию по отдельности с помощью аргумента языкового стандарта, имеющего следующую форму:
LC-ALL-specifier
::locale
| [LC_COLLATE=
locale
][;LC_CTYPE=
locale
;LC_MONETARY=
locale
][][;LC_NUMERIC=
locale
] [];LC_TIME=
locale
Можно задать несколько типов категорий с разделением точкой с запятой. Типы категорий, которые не указаны, используют текущий параметр языкового стандарта. Например, этот фрагмент кода задает текущий языковой стандарт для всех категорий de-DE
, а затем задает категории LC_MONETARY
для en-GB
и LC_TIME
для es-ES
:
_wsetlocale(LC_ALL, L"de-DE");
_wsetlocale(LC_ALL, L"LC_MONETARY=en-GB;LC_TIME=es-ES");
Поддержка UTF-8
Поддержка UTF-8 может быть включена с помощью кодовой страницы UTF-8 в строке языкового стандарта. Дополнительные сведения см. в разделе setlocale
поддержки UTF-8.
См. также
Справочник по библиотеке времени выполнения C
_get_current_locale
setlocale
, _wsetlocale
_create_locale
, _wcreate_locale
Языковые строки
Строки страны и региона