Извлечено из результатов поиска Google: http://bytes.com/topic/net/answers/468556-change-currentuiculture-controls-doesnt-refresh
Изменение "CurrentUICulture" не вступит в силу автоматически во всех элементах управления пользовательского интерфейса.
Изменение "CurrentUICulture" влияет только на некоторые APIкоторые предназначены для локализации.Например, «System.Resources.ResourceManager.GetString (...)», Затем он будет использовать текущий «CurrentUICulture» для загрузки подходящих строковых ресурсов.
Для элемента управления Windows.Form необходимо перезагрузитьвсе строки ресурсов после изменения «CurrentUICulture».
Предполагая, что ваши ресурсы фактически локализованы (обратите внимание, что вы должны сделать это вручную - ничто не сделает это автоматически), вы можетеустановить культуру пользовательского интерфейса, прежде чем показывать ваше первое окно.Например, Main
.
Редактировать:
Кроме того, убедитесь, что вы установили CurrentUICulture
в потоке пользовательского интерфейса.
Вот несколько примеровкод для обновления вашего пользовательского интерфейса (опять же, украденный по ссылке в верхней части этого ответа):
System.Threading.Thread.CurrentThread.CurrentUICulture = new
System.Globalization.CultureInfo(lang); //my selected lang from menu
ReloadControlString();
//...
private void ReloadControlString()
{
System.Resources.ResourceManager resources = new
System.Resources.ResourceManager(typeof(FormMain));
this.menuApp.Text = resources.GetString("menuApp.Text");
}
Вы, вероятно, можете получить часть этого из InitializeComponent()
.