Изменить язык в C # - PullRequest
       26

Изменить язык в C #

13 голосов
/ 19 июля 2010

Я занимаюсь разработкой многоязычной программы на C # для Windows

Как изменить язык ввода Windows для определенных действий ...например, чтобы изменить фокус с английского на арабский.

Спасибо

Ответы [ 5 ]

13 голосов
/ 19 июля 2010

Чтобы выбрать совершенно новую культуру, установите CurrentThread.CurrentCulture для новой культуры, например, установить на французский:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("fr-FR");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;

Вы можете найти список предопределенных CultureInfo имен здесь и здесь .

Если вы хотите изменить некоторые аспекты культуры по умолчанию, вы можете взять культуру текущего потока, использовать его имя для создания нового экземпляра CultureInfo и установить новую культуру потока с некоторыми изменениями, например, чтобы изменить текущую культуру, чтобы использовать символ «Евро»:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo( System.Threading.Thread.CurrentThread.CurrentCulture.Name);
ci.NumberFormat.CurrencySymbol = "€";
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
3 голосов
/ 10 декабря 2014

При загрузке события введите следующий код:

InputLanguage.CurrentInputLanguage =
      InputLanguage.FromCulture(new System.Globalization.CultureInfo("fa-IR"));
3 голосов
/ 19 июля 2010
Thread.CurrentThread.CurrentCulture = yournewculture;

Также см. Свойство CurrentUICulture.

1 голос
/ 14 октября 2014

Эти заявления были полезны для меня:

string myLanguage = "HE-IL";
InputLanguage.CurrentInputLanguage =
   InputLanguage.FromCulture(new System.Globalization.CultureInfo(myLanguage));
1 голос
/ 22 июня 2012

Кроме того, если вы хотите обновить все ресурсы элементов управления во время выполнения, вам нужно будет использовать что-то вроде этого:

private void RefreshResources(Control ctrl, ComponentResourceManager res)
{
    ctrl.SuspendLayout();
    res.ApplyResources(ctrl, ctrl.Name, CurrentLocale);
    foreach (Control control in ctrl.Controls)
        RefreshResources(control, res); // recursion
    ctrl.ResumeLayout(false);
}

Если вы хотите лучший пример, проверьте мой блог .

...