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

Я разрабатываю многоязычную программу на С# в Windows.

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

Спасибо


person Betamoo    schedule 19.07.2010    source источник
comment
Эти похожие сообщения могут пролить свет на stackoverflow.com/questions/ 397356/ stackoverflow.com/questions/270829/ Ура!   -  person CoderHawk    schedule 19.07.2010


Ответы (5)


Чтобы выбрать совершенно новую культуру, установите 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;
person Dr Herbie    schedule 19.07.2010
comment
В некоторых случаях также необходимо установить System.Threading.Thread.CurrentThread.CurrentUICulture. (Обратите внимание на пользовательский интерфейс в середине имени свойства.) - person RenniePet; 19.08.2015
comment
Мне также пришлось установить UICulture во время выполнения модульных тестов. Комментарий выше спас меня :) - person jpgrassi; 25.11.2018

Thread.CurrentThread.CurrentCulture = yournewculture;

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

person leppie    schedule 19.07.2010
comment
Не могли бы вы указать, как получить вашу новую культуру - person Betamoo; 19.07.2010

В событие загрузки вставьте код ниже:

InputLanguage.CurrentInputLanguage =
      InputLanguage.FromCulture(new System.Globalization.CultureInfo("fa-IR"));
person ali    schedule 10.12.2014

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

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);
}

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

person FvZ    schedule 22.06.2012

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

string myLanguage = "HE-IL";
InputLanguage.CurrentInputLanguage =
   InputLanguage.FromCulture(new System.Globalization.CultureInfo(myLanguage));
person Nir Tsabar    schedule 14.10.2014
comment
это тоже здорово, изменить первую строку, можно сделать это для любой страны lingoes.net/ ru/translator/langcode.htm - person barlop; 18.03.2016