title: Proper way to change language at runtime
body: <p>What is the proper way to change Form language at runtime?</p>
  
  <ol>
  <li>Setting all controls manually using recursion like <a href="https://stackoverflow.com/questions/7556367/how-do-i-change-the-culture-of-a-winforms-application-at-runtime">this</a></li>
  <li>Save language choice to file > Restart Application > Load languge
  choice before <code>InitializeComponent();</code></li>
  <li>Using Form constructor to replace instance of active from (if this is even possible)</li>
  <li>Something else</li>
  </ol>
  
  <p>There is so much half written threads about this but none provides real answer on what is proper way to do this?</p>
  
  <p><strong>UPDATE:</strong><br>
  To clarify my question:</p>
  
  <p>Doing something like this:</p>
  
  <pre><code>public Form1()
  {
      Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");
      this.InitializeComponent();
  }
  </code></pre>
  
  <p>works fine and all my controls and everything else in resources get translated correctly.
  And doing something like:</p>
  
  <pre><code>private void button1_Click(object sender, EventArgs e)
  {
      Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");
  }
  </code></pre>
  
  <p>does nothing, Form stays in language I set up before <code>InitializeComponent();</code></p>