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


Работа с пользовательскими языковыми параметрами

В этом разделе приведены некоторые инструкции по обработке пользовательских языковых стандартов в приложениях. Рекомендуется подготовить весь исходный код с учетом этих соображений, так как приложение не контролирует установку пользовательских языковых стандартов в операционной системе.

Правильная обработка константы LOCALE_STIME

Если у вас есть старое приложение, использующее GetLocaleInfo для получения устаревшего разделителя времени, указанного LOCALE_STIME, приложение может не проанализировать формат времени. Помните, что символ, который отделяет часы от минут, отличается от символа, который отделяет минуты от секунд.

Примечание

При программировании для пользовательских языковых стандартов помните, что они являются необычными. Практически все поля, доступные для NLS, должны справляться с необычным поведением. Например, формат времени 12H34'12'' является допустимым и в целом понятным. Тем не менее, многие приложения делают предположения о разделителях времени, которые могут нарушить длину буфера или отобразить поля.

 

Различие между дополнительными языковыми стандартами

Все дополнительные языковые стандарты используют константу LOCALE_CUSTOM_UNSPECIFIED для идентификатора языкового стандарта. Как правило, GetLocaleInfo не может различать дополнительные языковые параметры, но GetLocaleInfoEx может, так как он использует имена языкового стандарта вместо идентификаторов языкового стандарта. Приложение может получать сведения о конкретном дополнительном языковом стандарте только в том случае, если этот языковой стандарт является выбранным в данный момент языковым стандартом пользователя. Затем приложение может вызвать GetLocaleInfo и передать константную LOCALE_USER_DEFAULT в качестве идентификатора языкового стандарта.

Обработка языковых стандартов для замены

Чтобы сохранить надежность Windows, помните, что языковой стандарт замены, поддерживаемый приложением, не может изменить идентификатор замененного языкового стандарта. Ни тот, ни другой языковой стандарт не может изменять свойства сортировки Windows.

Хотя заменяющий языковой стандарт может изменить календарь по умолчанию, он должен сохранить исходное значение по умолчанию в списке доступных календарей. Например, в языковом стандарте тайского (Таиланда) по умолчанию используется тайский буддийский календарь. Администратор может создать замещающий языковой стандарт, использующий григорианский локализованный календарь. Однако список доступных календарей по-прежнему содержит запись для тайского буддийского календаря.

Для заменяющих языковых стандартов приложение, как правило, должно обращаться к сведениям о языковом стандарте, а не пытаться создать ярлык на основе знаний определенного языкового стандарта. Например, когда GetThreadLocale получает текущий языковой стандарт как английский (США), это может быть заменяющий языковой стандарт, который должен вступить в силу.

Настройка календарей

Приложения могут настраивать названия дней и месяцев для григорианских календарей, но не для негригорианских календарей. Аналогичным образом NLS не поддерживает создание пользовательских календарей. Дополнительные сведения см. в разделе Дата и календарь.

Обработка последовательностей сортировки

Дополнительный языковой стандарт может использовать любую последовательность сортировки, определенную корпорацией Майкрософт. Замещающий языковой стандарт должен использовать ту же последовательность сортировки, что и замещающий языковой стандарт. NLS не поддерживает создание определяемых пользователем последовательностей сортировки. Дополнительные сведения см. в разделе Обработка сортировки в приложениях.

Локализация сведений о пользовательском языковом стандарте

NLS не предоставляет механизм локализации сведений о пользовательском языковом стандарте. Таким образом, константная LOCALE_SLANGUAGE или LOCALE_SLOCALIZEDLANGUAGENAME , используемая в качестве идентификатора языкового стандарта для пользовательского языкового стандарта, всегда извлекает значения, связанные с LOCALE_SNATIVELANGNAME или LOCALE_SNATIVELANGUAGENAME.

Использование поддержки национальных языков

Пользовательские языковые параметры

Дата и календарь

Обработка сортировки в приложениях