Почему мой CurrentCulture en-GB и мой CurrentUICulture en-US

У меня есть приложение С#, которое должно запускаться на компьютерах с разными настройками культуры. Никаких проблем, я думал, это просто поиск, чтобы начать, что нынешняя культура на машине, и сделать все для меня. Ну нет, это будет шов, что-то не совсем правильно.

У меня есть компьютер с Windows XP со всеми параметрами на уровне регионов и языков, установленными на английском языке, но когда мое приложение запускается, оно сообщает, что мой CurrentCulture - en-GB, а мой CurrentUICulture - en-US.

Как я могу заставить мою программу просто использовать все, на что настроен компьютер?

Это приложение Windows Service, если оно имеет какое-то значение.

Спасибо

Ответ 1

Служба Windows обычно не запускается под вашим UserAccount, и тогда не имеет значения, какие региональные настройки . Это о региональных настройках учетной записи системы. Я предполагаю, что вы запустили версию Windows en-GB, и системная учетная запись все еще использует это.

Есть способы получить доступ к этой учетной записи, отметьте SuperUser.

Ответ 2

Я верю, что верно следующее:

  • CurrentCulture (который влияет на форматы числа и даты) будет отражать региональные настройки учетной записи, на которой выполняется ваше приложение. Вы можете легко это изменить с помощью панели управления/региональных настроек для текущего пользователя, а также если вы являетесь администратором также для пользователя по умолчанию, который используется для системных учетных записей, которые часто используются для служб Windows. Чтобы изменить пользователя по умолчанию, там где-нибудь есть кнопка "Использовать по умолчанию".

  • CurrentUICulture будет соответствовать языку версии Windows, которую вы используете. Для версий MUI вы можете изменить это в панели управления, но не для одноязычных версий.

Ответ 3

Я знаю, что вы можете установить, какая ваша инвариантная культура является частью сборки, но я был удивлен, когда читал это, что культура вашей сборной коробки стала вашей инвариантной культурой. Попробовали ли вы искать все файлы для en-GB, чтобы убедиться, что они не дефолты где-то?

Несмотря на это, существует обходное решение. Если вы хотите переопределить это с помощью культуры O/S, вы можете получить это в следующем местоположении и установить для него свойства CurrentCulture и CurrentUICulture:

System.Globalization.CultureInfo.InstalledUICulture