Класс 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. В каждом случае основные шаги одинаковы:
Создайте CultureAndRegionInfoBuilder экземпляр объекта, вызвав его CultureAndRegionInfoBuilder(String, CultureAndRegionModifiers) конструктор. Чтобы заменить существующий язык и региональные параметры, передайте имя и CultureAndRegionModifiers.Replacement значение перечисления конструктору. Чтобы создать новый язык и региональные параметры или дополнительный язык и региональные параметры, передайте уникальное имя CultureAndRegionModifiers.NeutralCultureAndRegionModifiers.None и значение перечисления.
Примечание.
Если для создания экземпляра объекта используется CultureAndRegionModifiers.Replacement значение перечисления, CultureAndRegionInfoBuilder свойства объекта автоматически заполняются значениями из CultureInfo объекта для замены.CultureAndRegionInfoBuilder
Если вы создаете новый или дополнительный язык и региональные параметры:
- CultureAndRegionInfoBuilder Заполните свойства объекта путем вызова LoadDataFromCultureInfo метода и передачи CultureInfo объекта, значения свойств которого похожи на новый объект.
- CultureAndRegionInfoBuilder Заполните региональные свойства объекта, вызвав LoadDataFromRegionInfo метод и передав RegionInfo объект, представляющий регион пользовательского языка и региональных параметров.
При необходимости измените свойства CultureAndRegionInfoBuilder объекта.
Если вы планируете зарегистрировать пользовательский язык и региональные параметры в отдельной подпрограмме, вызовите 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 с именем языка и региональных параметров.
- Вызывая CultureInfo.CreateSpecificCulture метод с именем языка и региональных параметров.
- Вызывая CultureInfo.GetCultureInfo метод с именем языка и региональных параметров.
Кроме того, массив CultureInfo объектов, возвращаемых методом CultureInfo.GetCultures , включает пользовательский язык и региональные параметры.