Как почитать / наследующуюся настройки языка пользователя в приложении WinForm?

StackOverflow https://stackoverflow.com/questions/2820843

Вопрос

Я работал с параметрами глобализации в прошлом, но не в рамках среды .NET, которая является темой этого вопроса. То, что я вижу, на самом деле, безусловно, из-за знания, которые я еще не учился, поэтому я буду признателен за подсветку на следующее.


Настройка: Мой языковой настройки по умолчанию - английский (EN-нами специально). Я добавил второй язык (датский) в моей системе развития (WinXP), а затем открыл языковой бар, чтобы я мог выбрать либо по желанию.


Я выбрал датский язык на языковой панели, затем открыл блокнот и обнаружил, что язык вернулся на английский язык на языковой баре. Я понимаю, что настройка языка за приложение, Так казалось, что блокнот установил по умолчанию на английский. (Я обнаружил, что странно с момента Windows и, таким образом, блокнот используется во всем мире.) Закрытие блокнота вернула настройку на языковой панели для датского. Затем я запустил свой открытый пользовательский приложение Winform - который я знаю, не устанавливает язык - и это также Вернулся с английского до датского при открытии, затем вернуться к датскому при увольнении!

Вопрос № 1А: Как получить приложение WinForm при запуске, чтобы наследовать текущую настройку языковой строки? Мой эксперимент, похоже, указывает на то, что каждое приложение начинается с системой по умолчанию и требует, чтобы пользователь вручную изменить его, как только приложение запущено - это, кажется, является серьезным неудобством для всех, кто хочет работать с более чем одним языком!

Вопрос № 1В: Если необходимо, на самом деле, на самом деле установите язык вручную в многоязычный сценарий, как я могу изменить язык системного языка по умолчанию (например, Danish), поэтому я могу проверить запуск моего приложения на другом языке?


Я добавил отображение текущего языка в моем приложении для этого следующего эксперимента. Конкретно я установил MouseEnter обработчик на этикетке, который устанавливает свою всплывающую подсказку CultureInfo.CurrentCulture.Name Поэтому каждый раз, когда я наведите курс, я подумал, что должен увидеть текущий язык. Поскольку настроив язык перед запуском моего приложения, не работал, я запустил его, затем установил язык датскому. Я обнаружил, что некоторые вещи (например, набрав в текстовом поле), сделали эту датскую обстановку. Но Mousing над приборной меткой по-прежнему показал EN-US!

Вопрос № 2А: Почему CultureInfo.CurrentCulture.Name Не отражайте изменение из моего языка, в то время как другие части моего приложения, кажется, распознают изменения? (Пытающийся CultureInfo.CurrentUICulture.Name произвел тот же результат.)

Вопрос # 2b: Есть ли событие, которое стреляет на изменения языковой панели, чтобы я мог распознать в моем приложении, когда языковая настройка меняется?


2010.05.13 Обновление

Короткая но сладкая информация, предоставленная Эриком из Microsoft (см. Его ответ ниже), непосредственно обратился только к одному из моих четырех вопросов (# 2A), но он предоставил только импульс, который мне нужно было дальше и выяснить остальные. На благо других, которые также могут быть оказаны этим, вот то, что я раскрыл:

Ответ # 1А: Приложение наследует настройку языка ввода по умолчанию, нет Язык вы указываете на языковой баре. Как только ваше приложение запущено, то изменения на языковой панели буду Быть немедленно замеченным вашим приложением.

Ответ # 1b: Установка языка ввода по умолчанию осуществляется через региональные и языковые параметры панели управления >> вкладками языков >> Подробности >> Вкладка «Настройки» >> По умолчанию.

Ответ # 2А: Ответы Эрика, текущая культура отличается от текущего языка ввода, который отражен на языковой панели; Набрав в текстовом поле влияет только на текущий язык ввода.

Ответ # 2B: Нет заранее определенного события для любого языка ввода или уведомления о текущем изменении культуры. Важным фактом следует отметить, что изменения входных языка автоматически распознаются немедленно, когда текущие изменения культуры не являются. Вы должны перезапустить заявку на текущую ситуацию культуры, чтобы вступить в силу - если вы не заметите изменения и действовать на нее сами. В этот конец я нашел статью MSDN (Многие лица класса CultureInfo) Это обеспечивает просто такой крючок, чтобы заметить изменения.

Это было полезно?

Решение

Есть три отдельных языковых настроек в Play. Языковая строка управляет языком ввода (Inputlanguage.) который отличается от языка для отображения интернет-пользовательского интерфейса (текущее заводское хозяйство), которое отличается от языка для сортировки / форматирования / анализа (CurrentCulture).

Это правда, что это запутано.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top