2012-02-10 1 views
2

У меня есть приложение на основе WinForms с использованием среды .NET 3.5. Приложение имеет локализованные версии некоторых ресурсов.Что может привести к тому, что CurrentCulture и CurrentUICulture будут использоваться по умолчанию, отличные от кажущейся системной культуры?

Когда я запускаю приложение на компьютере с копией Windows XP, которая была первоначально установлена ​​с en-US в качестве культуры по умолчанию, но впоследствии была установлена ​​культура по умолчанию для en-CA, и CurrentCulture, и CurrentUICulture дефолт в США.

Почему это может произойти? Что мне нужно изменить, чтобы приложение начало использовать текущую культуру ОС по умолчанию?

+0

Какие настройки по умолчанию для вошедшего в _user_? – Oded

+0

Настройки по умолчанию для зарегистрированного пользователя (в соответствии с настройками панели управления/региональные и языковые параметры/региональные параметры, панель управления/региональные и языковые параметры/языки/данные/язык ввода по умолчанию и панель управления/региональные и языковые параметры/расширенные/Язык для не-Unicode-программ) настроены на канадский английский. –

+0

Пожалуйста, введите код, который вы используете, чтобы прочитать эти свойства. –

ответ

3

Пользователь никогда не упоминает свой любимый язык как таковой в настройках Windows: она устанавливает свою культуру в Панели управления, такие как English (Canada) aka en-CA. Этот выбор отражается в собственности Thread.Culture. Он используется Windows для определения того, как отображать и форматировать такие вещи, как даты (включая формат и имена дней и месяцев), валюты, ...

Другой параметр - это язык, на котором был установлен Windows (GUI) (Скорее всего English (United States) в вашем случае). Это отражено в Thread.CurrentUICulture. Разумеется, для этого есть менее доступные варианты, поскольку он отражает язык графического интерфейса (меню, кнопки, справка, ...). например нет такой вещи, как en-CA CurrentUICulture.

Примечание: В Vista + и XP-MUI вы можете впоследствии установить дополнительные языки GUI и установить язык, который будет использоваться для каждой учетной записи пользователя. Это отражено в CurrentUICulture.

Распространенное заблуждение состоит в том, чтобы полагать, что Культура должна использоваться для определения любимого языка пользователя. Лучше полагаться на CurrentUICulture. В моем случае Windows находится на английском языке, и мое предпочтение пользователя (Culture) - fr-BE (французский - Бельгия). Никогда не думайте о том, чтобы отображать свой пользовательский интерфейс на французском языке: я установил Windows на английском языке для определенной цели: я бы предпочел иметь собственный пользовательский интерфейс на английском языке, а не переведенный на французский. Причины моего выбора спорны, но это не имеет значения. Только мое решение имеет значение.

Это, я прочитал 5/2/2012 как 5 февраля 2012 года, а не 2 мая. Вот почему fr-BE - это мой язык/Культура.

FWIW, Язык для программ, не относящихся к Unicode, указывает, какая кодовая страница по умолчанию (CP_ACP в языке Win32 NLS) должна использоваться программами, отличными от Unicode. Это не влияет на ваше приложение, так как приложения .NET являются Unicode.

Язык ввода по умолчанию определяет раскладку клавиатуры по умолчанию. Это не настройка культуры.

Параметры, которые влияют на свойства Culture это одна:

XP Regional Settings

+0

ОК, тогда я * полностью * что-то пропустил. В версии XP, установленной на моей виртуальной машине, я могу изменить язык (в панели управления/региональные и языковые настройки/...) на _many_ различные параметры языка, из которых «Английский (Канада)» является одним из них. Я был под (по-видимому ошибочным) впечатлением, что это также меняет предпочтительный язык пользователя. Ваш ответ предполагает, что это не так. Что я должен делать вместо того, чтобы получить предпочтительного клиента язык? –

+0

Я переписал свой ответ соответствующим образом. –

+0

Отлично Спасибо за разъяснение. (Как побочный продукт, это говорит о том, что все правильно закодировано ... это то, как мы пытаемся их протестировать, скажем так, , под вопросом.) –

 Смежные вопросы

  • Нет связанных вопросов^_^