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


Использование свойства CurrentCulture

Свойство CurrentCulture представляет сведения о текущем языке и региональных параметрах пользовательского интерфейса для одного потока. Оно определяет установленные по умолчанию формат даты, времени, валюты и чисел, порядок сортировки текста, сравнения строк и регистры. Настройка, выполненная с помощью этого свойства, не является установкой языка. Свойство определяет только данные, относящиеся к стандартным параметрам для географического региона. Таким образом, приложение может задать свойство CurrentCulture только конкретному языку и региону или InvariantCulture. Чтобы задать CurrentCulture, в приложении можно использовать свойство CurrentThread.

ПримечаниеПримечание

Для изменения языка и региональных параметров свойства CurrentThread требуется объект SecurityPermission с установленным значением ControlThread.Управление потоками требует осторожности, поскольку с ними связано состояние безопасности.По этой причине такое разрешение следует предоставлять только надежному коду и только при необходимости.Нельзя изменять язык и региональные параметры потока в недостаточно надежном коде.

Явное задание свойства CurrentCulture

В приложении можно явно задать свойство CurrentCulture. В следующем примере кода задается свойство для конкретного языка и региона, например "de-DE" для немецкого языка в Германии.

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE")
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");

Для инициализации свойства CurrentCulture приложение должно использовать конкретный язык и региональные параметры. В качестве значения свойства предполагается параметр, указывающий одновременно на конкретный язык и регион, например "en-US" для английского языка в США. Поскольку один и тот же язык часто является разговорным в нескольких странах, сведения о стране необходимы для выбора правильных соглашений о форматировании данных. Например, при задании в приложении языкового параметра "en" для нейтрального английского языка не существует единых правильных настроек формата дат или денежных единиц. Дата может быть задана в формате США или Великобритании. Денежные единицы могут быть в формате для Новой Зеландии или Канады. При попытке приложения задать свойство CurrentCulture с помощью нейтрального языка и региональных параметров создается исключение.

При наличии доступа только к нейтральному языку и региональным параметрам приложение может создать объект CultureInfo в предполагаемом для свойства CurrentCulture формате с помощью метода CreateSpecificCulture. Этот метод сопоставляет нейтральный язык и региональные параметры со связанным с ней конкретным языком по умолчанию, а затем создает объект CultureInfo, который предоставляет этот конкретный язык. В следующем примере кода используется метод CreateSpecificCulture для сопоставления нейтрального региона для немецкого языка "de" конкретному региону "de-DE" (Германия) для немецкого языка. Затем для культуры "de-DE" создается объект CultureInfo, используемый для инициализации значения свойства CurrentCulture.

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de")
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de");
ПримечаниеПримечание

Этот метод является необязательным.Если сопоставление, производимое этим методом, неприемлемо для данного приложения, в приложении можно использовать его собственное сопоставление.

Явное задание свойства CurrentCulture на странице .aspx

Метод CreateSpecificCulture также позволяет приложению использовать текущие настройки языка веб-обозревателя для инициализации свойства CurrentCulture на странице .aspx. В следующем примере кода свойство UserLanguages извлекает текущий язык веб-обозревателя в качестве строки. Метод CreateSpecificCulture анализирует эту строку и возвращает объект CultureInfo в формате, который может быть использован для инициализации значения свойства CurrentCulture.

' Sets the CurrentCulture property to the culture associated with the Web
' browser's current language setting.
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0])
// Sets the CurrentCulture property to the culture associated with the Web
// browser's current language setting.
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);

Дополнительные сведения об использовании и извлечении ресурсов в приложениях ASP.NET см. в разделе Resources in ASP.NET Applications.

Неявное задание свойства CurrentCulture

Функция GetUserDefaultLCID предназначена для задания свойства CurrentCulture в операционной системе Windows. Пользователь может изменить это свойство. Для этого достаточно задать языковые и региональные стандарты в панели управления или изменить такие параметры, связанные с пользовательскими национальными стандартами, как форматы денежных единиц, чисел, даты и времени.

Чтобы удостовериться, что приложение использует заданные по умолчанию форматы, предоставляемые платформой .NET Framework для денежных единиц, чисел, даты и времени для конкретного языка и региональных параметров, можно переопределить пользовательские национальные стандарты, заданные по умолчанию. В приложении нужно создать объект CultureInfo с помощью перегрузки конструктора, который принимает параметр useUserOverride и задает ему значение false. Этот способ приведет к замене параметров по умолчанию для операционной системы пользователя параметрами по умолчанию платформы .NET Framework. При изменении формата денежных единиц для стран Европейского союза, которые используют евро, в приложении рекомендуется установить для параметра useUserOverride значение false, чтобы быть уверенным, что используется правильный символ денежных единиц. Дополнительные сведения см. в теме "Форматирование денежных единиц для стран зоны евро" раздела Форматирование числовых данных для определенного языка и региональных параметров.

См. также

Основные понятия

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

Resources in ASP.NET Applications

Использование класса CultureInfo

Использование свойства CurrentUICulture

Использование свойства InvariantCulture