Была ли эта страница полезной?
Ваш отзыв об этом контенте важен для нас. Расскажите нам о том, что вы думаете.
Дополнительный отзыв?
1500 символов осталось
Экспорт (0) Печать
Развернуть все
Данная статья переведена автоматически. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала

CultureInfo.CurrentCulture - свойство

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

Пространство имен:  System.Globalization
Сборка:  mscorlib (в mscorlib.dll)

public static CultureInfo CurrentCulture { get; }

Значение свойства

Тип: System.Globalization.CultureInfo
Объект, представляющий язык и региональные параметры, используемые текущим потоком.

Этот язык и региональные параметры являются свойством выполняющегося потока. Это свойство, доступное только для чтения эквивалентно извлечь объект CultureInfo, возвращаемый свойством Thread.CurrentCulture. Объект CultureInfo, возвращаемого этим свойством и связанные с ней объектами определяет формат по умолчанию для даты, времени, валюты, чисел, значения порядка сортировки текста, соглашений регистров и сравнения строк.

Как определить язык и региональные параметры потока

Когда потока, его исходный язык определяется следующим образом:

  • Путем получения язык, который определяется свойством DefaultThreadCurrentCulture в домене приложения, в котором выполняется поток, если значение свойства не является null.

  • С помощью функции GetUserDefaultLocaleName Windows.

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

Дополнительные сведения о как язык и региональные параметры потока см. в разделе «языка и потоки» на странице справочника CultureInfo.

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

Изменить язык, используемый существующие потоком, установите свойство Thread.CurrentCulture в новый язык. Если явно измените язык и региональные параметры потока таким образом, это изменение сохраняется, если поток пересекает границы доменов приложения. Следующий пример изменяет язык текущего потока на голландский (Нидерланды). Это также означает, что, если текущий поток пересекает границы доменов приложения, его текущий язык и региональные параметры не изменять.


using System;
using System.Globalization;
using System.Threading;

public class Info : MarshalByRefObject
{
   public void ShowCurrentCulture()
   {
      Console.WriteLine("Culture of {0} in application domain {1}: {2}",
                        Thread.CurrentThread.Name,
                        AppDomain.CurrentDomain.FriendlyName,
                        CultureInfo.CurrentCulture.Name);
   }
}

public class Example
{
   public static void Main()
   {
      Info inf = new Info();
      // Set the current culture to Dutch (Netherlands).
      Thread.CurrentThread.Name = "MainThread";
      Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("nl-NL");
      inf.ShowCurrentCulture();

      // Create a new application domain.
       AppDomain ad = AppDomain.CreateDomain("Domain2");
       Info inf2 = (Info) ad.CreateInstanceAndUnwrap(typeof(Info).Assembly.FullName, "Info");
       inf2.ShowCurrentCulture();                       
   }
}
// The example displays the following output:
//       Culture of MainThread in application domain ChangeCulture1.exe: nl-NL
//       Culture of MainThread in application domain Domain2: nl-NL


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

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

Начиная с .NET Framework 4, можно явным образом изменить язык текущего потока в любой конкретный язык и региональные параметры (например, французский (Канада)) или нейтральный язык и региональные параметры (например, французский). Если объект CultureInfo представляет нейтральный язык и региональные параметры, значения свойств CultureInfo как Calendar, CompareInfo, DateTimeFormat, NumberFormat и TextInfo отражают определенный язык, связанный с нейтральным языком и региональными параметрами. Например, представлен в язык для английского нейтрального языка и региональных параметров английский (Соединенные Штаты); представлен немецкий язык для немецкого (Германия). В следующем примере показана разница в форматировании, если текущий поток устанавливается для конкретного языка, французу (Канаде) и нейтральному языку и региональным параметрам, французе.


using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      double value = 1634.92;
      Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA");
      Console.WriteLine("Current Culture: {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("{0:C2}\n", value);

      Thread.CurrentThread.CurrentCulture = new CultureInfo("fr");
      Console.WriteLine("Current Culture: {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("{0:C2}", value);
   }
}
// The example displays the following output:
//       Current Culture: fr-CA
//       1 634,92 $
//       
//       Current Culture: fr
//       1 634,92 €


Можно также использовать свойство Thread.CurrentCulture вместе с свойством HttpRequest.UserLanguages установить свойство CurrentCulture приложения ASP.NET в язык пользователя предпочитаемому, как показано в следующем примере.


Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);


Переопределения текущих языка и пользователя

Windows позволяет пользователям для переопределения стандартные значения свойств объекта CultureInfo и связанных объектов с помощью Язык и региональные стандарты на панели управления. Объект CultureInfo, возвращаемый свойством CurrentCulture отражает эти переопределения пользователя в следующих случаях:

  • Если язык текущего потока устанавливаются неявно функцией GetUserDefaultLocaleName Windows.

  • Если язык текущего потока, заданная свойством DefaultThreadCurrentCulture соответствует текущему языка системы Windows.

  • Если язык текущего потока устанавливаются явно с языком, возвращенный методом CreateSpecificCulture и этот язык соответствует текущему языка системы Windows.

  • Если язык текущего потока устанавливаются явно в языке создаватьому экземпляр конструктором CultureInfo(String) и этот язык соответствует текущему языка системы Windows.

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

  • Вызвав конструктор CultureInfo(String, Boolean) со значением false для аргумента useUserOverride.

  • Путем вызова метода GetCultureInfo, который возвращает кэширования, только для чтения объект CultureInfo.

В следующем примере кода демонстрируется изменение объектов CurrentCulture и CurrentUICulture текущего потока.


using System;
using System.Globalization;
using System.Security.Permissions;
using System.Threading;

[assembly:SecurityPermission( SecurityAction.RequestMinimum, ControlThread = true )]
public class SamplesCultureInfo  {

   public static void Main()  {

      // Displays the name of the CurrentCulture of the current thread.
      Console.WriteLine( "CurrentCulture is {0}.", CultureInfo.CurrentCulture.Name );

      // Changes the CurrentCulture of the current thread to th-TH.
      Thread.CurrentThread.CurrentCulture = new CultureInfo( "th-TH", false );
      Console.WriteLine( "CurrentCulture is now {0}.", CultureInfo.CurrentCulture.Name );

      // Displays the name of the CurrentUICulture of the current thread.
      Console.WriteLine( "CurrentUICulture is {0}.", CultureInfo.CurrentUICulture.Name );

      // Changes the CurrentUICulture of the current thread to ja-JP.
      Thread.CurrentThread.CurrentUICulture = new CultureInfo( "ja-JP", false );
      Console.WriteLine( "CurrentUICulture is now {0}.", CultureInfo.CurrentUICulture.Name );

   }

}

/*
This code produces the following output, if the ControlThread permission is granted (for example, if this code is run from the local drive).

CurrentCulture is en-US.
CurrentCulture is now th-TH.
CurrentUICulture is en-US.
CurrentUICulture is now ja-JP.

*/


.NET Framework

Поддерживается в версиях: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework (клиентский профиль)

Поддерживается в версиях: 4, 3.5 с пакетом обновления 1 (SP1)

Переносимая библиотека классов

Поддерживается в версии: Переносимая библиотека классов

Приложения .NET для Магазина Windows

Поддерживается в версии: Windows 8

Приложения .NET для Windows Phone

Поддерживается в версиях: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 (роль основных серверных компонентов не поддерживается), Windows Server 2008 R2 (роль основных серверных компонентов поддерживается в пакете обновления 1 (SP1) или выше; системы на базе Itanium не поддерживаются)

.NET Framework поддерживает не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2015 Microsoft