Поделиться через


Строки имени языкового стандарта, языка и страны и региона

Аргумент locale для функций setlocale и _create_locale можно задать путем использования имен языкового стандарта, языков, кодов страны или региона и кодовых страниц, которые поддерживаются API многоязыковой поддержки Windows. Аргумент locale для принимает следующую форму:

locale :: "locale_name"
        | "language[_country_region[.code_page]]"
        | ".code_page"
        | "C"
        | ""
        | NULL

Форма имени языкового стандарта, например en-US для английского языка (Соединенные Штаты) или bs-Cyrl-BA для боснийского (кириллица, Босния и Герцеговина), является предпочтительной. Набор имен языковых стандартов описан в разделе Имена языковых стандартов. Список поддерживаемых имен языковых стандартов по версиям операционной системы Windows см. в столбце Название культуры в Справочнике по API многоязыковой поддержке. Этот список ресурсов включает в себя поддерживаемый язык, скрипт и региональные части имен языковых стандартов. Дополнительные сведения о поддерживаемых именах языковых стандартов, имеющих порядок сортировки не по умолчанию, см. в столбце Имя языкового стандарта в разделе Идентификаторы порядка сортировки.

Форма language[_country_region[.code_page]] сохраняется в параметре языкового стандарта для категории, когда строка с названием языка или строка с названием языка и строка страны или региона используются для создания языкового стандарта. Набор поддерживаемых строк с названием языка описан в разделе Строки языка, а список поддерживаемых строк страны или региона представлен в разделе Строки стран или регионов. Если указанный язык не связан с указанной страной или регионом, язык по умолчанию для указанной страны или региона сохраняется в параметре языкового стандарта. Не рекомендуется использовать эту форму для строк с языкового стандарта, внедренных в коде или сериализованных в хранилище, поскольку эти строки чаще подвержены изменениям при обновлении операционной системы, чем форма имени языкового стандарта.

Кодовой страницей является кодовая страница ANSI/OEM, связанная с этим языковым стандартом. Кодовая страница определяется автоматически при указании языкового стандарта с помощью языка или с помощью языка и страны или региона по отдельности. Особое значение .ACP определяет кодовую страницу ANSI для страны или региона. Особое значение .OCP определяет кодовую страницу OEM для страны или региона. Например, если указать Greek_Greece.ACP в качестве языкового стандарта, языковой стандарт сохранится как Greek_Greece.1253 (кодовая страница ANSI для греческого), а если в качестве языкового стандарта указать Greek_Greece.OCP, он сохранится как Greek_Greece.737 (кодовая страница OEM для греческого). Дополнительные сведения о кодовых страницах см. в разделе Кодовые страницы. Список поддерживаемых кодовых страниц в Windows см. в разделе Идентификаторы кодовой страницы.

Если кодовая страница используется только для определения языкового стандарта, используются язык и страна или регион системы по умолчанию. Например, если указать ".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");

См. также

Ссылки

_get_current_locale

setlocale, _wsetlocale

_create_locale, _wcreate_locale

Строки языка

Строки стран или регионов

Другие ресурсы

Справочник по библиотеке времени выполнения C