Почему мой 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