Как установить информацию о культуре по умолчанию для всего приложения С#
Я хочу установить информацию о культуре по умолчанию для этого класса или для всего приложения.
Например, в Турции 3,2 = на английском 3.2
поэтому приложение использует мой локальный, но я хочу, чтобы он использовал по умолчанию
System.Globalization.CultureInfo.InvariantCulture
Как я могу установить его по умолчанию для этого конкретного класса или для всего приложения
Ответы
Ответ 1
Не для всего приложения или определенного класса.
CurrentUICulture и CurrentCulture настраиваются на поток, как обсуждалось здесь Есть ли способ настройки культуры для целого приложения? Все текущие потоки и новые потоки?. Вы не можете изменить InvariantCulture
вообще.
Пример кода для изменения культур для текущего потока:
CultureInfo ci = new CultureInfo(theCultureString);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
Для класса вы можете установить/восстановить культуру внутри критических методов, но было бы безопасно использовать соответствующие переопределения для большинства связанных с форматированием методов, которые принимают культуру как один из аргументов:
(3.3).ToString(new CultureInfo("fr-FR"))
Ответ 2
С 4.0 вам нужно будет управлять этим самостоятельно, установив культуру для каждого потока, как описывает Алексей. Но с 4.5, вы можете определить культуру для appdomain, и это предпочтительный способ справиться с этим. Соответствующие apis CultureInfo.DefaultThreadCurrentCulture и CultureInfo.DefaultThreadCurrentUICulture.
Ответ 3
Если вы используете файл языковых ресурсов для установки меток в вашем приложении, вам нужно установить его значение:
CultureInfo customCulture = new CultureInfo("en-US");
Languages.Culture = customCulture;