VB.NET - Configurar a interface conforme o painel de controle

Nos formulários windows temos as propriedades localizable e language que nos permitem fazer com que o form assuma diferentes linguagens, traduzindo o texto escrito nos controles windows.

Porém a tradução não ocorre automaticamente, pelo painel de controle. Os regional settings do painel de controle não influenciam nesta tradução. Na verdade existe um pacote chamado language pack que, quando instalado no SO, adiciona novas opções ao painel de controle e neste caso sim, passa a influenciar a tradução das aplicações.

Mas existe uma solução mais simples para que a configuração de linguagem da nossa aplicação siga o painel de controle.

Ocorre que cada Thread da aplicação possui duas configurações de cultura: CurrentCulture e CurrentUICulture. A configuração CurrentUICulture determina a linguagem que será exibida nos forms. Porém é a configuração CurrentCulture que segue o painel de controle, enquanto que CurrentUICulture não é afetada por ele (com excessão do language pack)

Mas podemos resolver isso com uma linha de código:

Threading.Thread.currentThread.CurrentUICulture=Threading.Thread.CurrentThread.CurrentCulture

Pronto, com isso faremos com que a linguagem da aplicação siga o painel de controle. Feito isso basta configurarmos localizable, language e os textos dos forms.