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


Замечание

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Замечание

Класс CultureAndRegionInfoBuilder полезен только для операционных систем Windows. Созданные NLP-файлы не поддерживаются в операционных системах, отличных от Windows. Кроме того, даже в Windows созданные NLP-файлы поддерживаются только в .NET Framework (или в .NET Core при использовании режима глобализации NLS).

Класс CultureInfo содержит культурно-специфическую информацию, такую как основной язык, диалект, страна/регион, календарь и культурные соглашения. Этот класс также предоставляет экземпляры классов DateTimeFormatInfo, NumberFormatInfo, CompareInfo и TextInfo, зависящие от настроек языка и региональных параметров, необходимые для операций, связанных с определенной культурой, таких как приведение к регистру, форматирование и анализ дат и чисел, а также сравнение строк.

По умолчанию .NET поддерживает CultureInfo объекты, представляющие предопределенный набор культур. Для списка языков и региональных параметров, доступных в системах Windows, см. столбец Языковой тэг в списке поддерживаемых Windows наименований языков и регионов. Названия культур следуют стандарту, определенному BCP 47. Класс CultureAndRegionInfoBuilder позволяет создать пользовательскую культуру, которая является полностью новой или переопределяет предопределённую культуру. При установке и регистрации пользовательской культуры на определенном компьютере она становится неотличимой от предопределенных CultureInfo объектов и может быть создана и использована так же, как и эти объекты.

Это важно

Класс CultureAndRegionInfoBuilder найден в сборке с именемsysglobl.dll. Чтобы успешно скомпилировать код, использующий этот тип, необходимо добавить ссылку на sysglobl.dll.

Пользовательскую настройку культуры можно зарегистрировать на компьютере только пользователем, обладающим правами администратора на этом компьютере. Следовательно, приложения обычно не создают и не устанавливают пользовательские региональные параметры. Вместо этого можно использовать CultureAndRegionInfoBuilder класс для создания специального инструмента, который администратор может использовать для создания, установки и регистрации пользовательской культуры. После регистрации пользовательской культуры на компьютере вы можете использовать класс CultureInfo в приложении для создания экземпляров пользовательской культуры так же, как и для предопределенной культуры.

Если вы анализируете строки даты и времени, созданные для пользовательской культуры, вы должны использовать метод DateTime.ParseExact или DateTime.TryParseExact вместо метода DateTime.Parse или DateTime.TryParse, чтобы повысить вероятность успешного выполнения операции синтаксического анализа. Строка даты и времени для пользовательского языка и региональных параметров может быть сложной и поэтому трудной для разбора. Методы Parse и TryParse пытаются проанализировать строку с несколькими неявными шаблонами разбора, которые могут не сработать. Метод TryParseExact , напротив, требует, чтобы приложение явно назначило один или несколько точных шаблонов синтаксического анализа, которые, скорее всего, будут успешными.

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

Вы используете класс CultureAndRegionInfoBuilder для определения и наименования пользовательской культуры. Пользовательская культура может быть совершенно новой культурой, культурой, основанной на существующей культуре (т. е. дополнительной культурой), или культурой, заменяющей существующую культуру .NET. В каждом случае основные шаги одинаковы:

  1. Создайте экземпляр CultureAndRegionInfoBuilder, вызвав его конструктор CultureAndRegionInfoBuilder(String, CultureAndRegionModifiers). Чтобы заменить существующую культуру, передайте имя этой культуры и CultureAndRegionModifiers.Replacement значение перечисления конструктору. Чтобы создать новую или дополнительную культуру, передайте уникальное имя культуры и значение CultureAndRegionModifiers.Neutral или CultureAndRegionModifiers.None из перечисления.

    Замечание

    Если вы используете значение CultureAndRegionModifiers.Replacement перечисления для создания экземпляра объекта CultureAndRegionInfoBuilder, свойства объекта CultureAndRegionInfoBuilder автоматически заполняются значениями из объекта CultureInfo для замены.

  2. Если вы создаете новую или дополнительную культуру:

  3. При необходимости измените свойства CultureAndRegionInfoBuilder объекта.

  4. Если вы планируете зарегистрировать пользовательскую культуру в отдельной подпрограмме, вызовите метод Save. Это создает XML-файл, который можно загрузить и зарегистрировать в отдельной процедуре установки пользовательского языка и региональных параметров.

Регистрация регионального стандарта

Если вы разрабатываете приложение регистрации для пользовательской культуры, которое отличается от приложения, создающего эту культуру, вызовите метод CreateFromLdml, чтобы загрузить XML-файл с определением пользовательской культуры и создать объект CultureAndRegionInfoBuilder. Чтобы обработать регистрацию, вызовите Register метод. Для успешной регистрации приложение, которое регистрирует пользовательскую культуру, должно использоваться с правами администратора в целевой системе; в противном случае вызов Register приведет к выбросу исключения UnauthorizedAccessException.

Предупреждение

Данные культуры могут отличаться между системами. Если вы используете CultureAndRegionInfoBuilder класс для создания пользовательского языка и региональных параметров, единообразного в нескольких системах, и вы создаете пользовательский язык и региональные параметры, загружая данные из существующих CultureInfo и RegionInfo объектов и настраивая его, необходимо разработать две разные служебные программы. Первый создает пользовательскую культуру и сохраняет ее в XML-файл. Второй использует CreateFromLdml метод для загрузки пользовательской культуры из XML-файла и регистрации её на целевом компьютере.

Процесс регистрации выполняет следующие задачи:

  • Создает NLP-файл , содержащий сведения, определенные в объекте CultureAndRegionInfoBuilder .
  • Сохраняет .nlp файл в системном каталоге %windir%\Globalization на целевом компьютере. Это позволяет параметрам пользовательской культуры сохраняться между сеансами. (Для CultureAndRegionInfoBuilder метода требуются права администратора, так как NLP-файл хранится в системном каталоге.)
  • Подготавливает .NET к поиску в системном каталоге Globalization %windir%вместо внутреннего кэша при следующем запросе на создание вашей новой пользовательской культуры.

Когда пользовательская культура успешно зарегистрирована, она неотличима от культур, предопределенных .NET. Пользовательская культура доступна, пока вызов метода CultureAndRegionInfoBuilder не удалит .nlp файл с локального компьютера.

Создание экземпляра пользовательской культуры

Экземпляр настроенной культуры можно создать одним из следующих способов:

Кроме того, массив CultureInfo объектов, возвращаемых методом CultureInfo.GetCultures, включает пользовательскую культуру.