изменить текущую системную локаль программирования

я создаю установщик для программы, которая должна иметь локаль системы "en-US".

я могу прочитать текущее состояние, используя следующую строку:

CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture

но когда я попытался изменить его, он не работает. вот как я пытаюсь изменить это:

if (!currentCulture.Name.Equals("en-US"))
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

любые предложения, как это сделать правильно? (серверы, на которых я собираюсь использовать этот установщик, являются только серверами Win-2012).

Спасибо.


person Omer    schedule 08.10.2015    source источник
comment
Возможно, вы также хотели установить Thread.CurrentThread.CurrentUICulture.   -  person Silvermind    schedule 08.10.2015


Ответы (1)


Нынешняя культура делится на две части:

  1. Текущая культура
  2. Текущая культура пользовательского интерфейса

Чтобы полностью изменить культуру, вы должны изменить их обе.

Прочтите MSDN пост об этом.

person Botea Bogdan    schedule 08.10.2015
comment
Я меняю их оба, но после того, как код будет выполнен, при следующем запуске языковой стандарт системы возвращается к исходному. - person Omer; 08.10.2015
comment
Системная локаль всегда возвращается к исходной локали при перезапуске, но вы должны переопределять текущую культуру каждый раз в точке входа приложения. Но в таком случае, почему бы вам не использовать инвариантную культуру? - person Botea Bogdan; 08.10.2015
comment
Ботеа Богдан, не могли бы вы подробнее объяснить, что вы имеете в виду под инвариантной культурой? - person Omer; 08.10.2015
comment
Я могу, но для вас быстрее прочитать этот пост. Если у вас есть другие вопросы, просто спросите :) - person Botea Bogdan; 08.10.2015