Класс CultureAndRegionInfoBuilder

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

Примечание.

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

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

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

Важно!

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

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

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

Определение и создание пользовательского языка и региональных параметров

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

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

    Примечание.

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

  2. Если вы создаете новый или дополнительный язык и региональные параметры:

    • CultureAndRegionInfoBuilder Заполните свойства объекта путем вызова LoadDataFromCultureInfo метода и передачи CultureInfo объекта, значения свойств которого похожи на новый объект.
    • CultureAndRegionInfoBuilder Заполните региональные свойства объекта, вызвав LoadDataFromRegionInfo метод и передав RegionInfo объект, представляющий регион пользовательского языка и региональных параметров.
  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 к поиску каталога системы %windir%\Globalization вместо внутреннего кэша при следующем запросе на создание нового пользовательского языка и региональных параметров.

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

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

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

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