Alterando o idioma de um formulário no VB.NET

Veja o passo a passo de como alterar o idioma de um formulário no VB.NET.

Nesse tutorial vamos criar um formulário com um label e dois botões.

No ComboBox adicione 2 itens e digite no primeiro “Português” e no segundo “Inglês”.

Clique uma vez no formulário, na parte cinza e em Propriedades selecione o idioma Inglês, o idioma padrão será o Português.

O Localizable será ativado automaticamente ao selecionar o idioma.

Agora renomeie o formulário e os controles para o inglês.

Para que a tradução ocorra em tempo real ao clicar nos botões Português e Inglês iremos criar uma classe chamada “AlterarIdioma”.

Em AlterarIdioma.vb adicionaremos os seguintes códigos.

Imports System.ComponentModel
Imports System.Globalization
Imports System.Threading

Public Class AlterarIdioma
    Private lang As String
    Private langformulario As Form
    Private langcontrole As Object

    Public Sub New(ByVal idioma As String, ByVal formulario As Form, ByVal controle As Object)
        lang = idioma
        langformulario = formulario
        langcontrole = controle
    End Sub

    Public Sub Formulario()
        Dim culture_info As New CultureInfo(lang)
        Dim component_resource_manager As New ComponentResourceManager(langformulario.GetType())

        Thread.CurrentThread.CurrentUICulture = culture_info
        Thread.CurrentThread.CurrentCulture = culture_info

        component_resource_manager.ApplyResources(Me, "$this", culture_info)

        Dim resources As ComponentResourceManager = New ComponentResourceManager(langformulario.GetType())
        For Each c As Control In langcontrole
            resources.ApplyResources(c, c.Name, New CultureInfo(lang))
        Next c
    End Sub

    Public Function Controle(ByVal nome As String) As String
        Dim texto As String
        Dim resources As ComponentResourceManager = New ComponentResourceManager(langformulario.GetType())
        texto = resources.GetString(nome)
        Return texto
    End Function
End Class

Pronto! Agora vamos voltar em nosso formulário e clicar duas vezes sobre o formulário, em seguida adicionar os seguintes códigos.

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim lang As New AlterarIdioma("pt", Me, Me.Controls)
    lang.Formulario()
    Me.Text = lang.Controle("$this.Text")
    ComboBox1.Items.Clear()
    ComboBox1.Items.Add(lang.Controle("ComboBox1.Items"))
    ComboBox1.Items.Add(lang.Controle("ComboBox1.Items1"))
End Sub

O lang.Formulario() irá traduzir todos os controles do formulário como labels, buttons, panels, entre outros, já o lang.Controle irá traduzir o titulo do formulário e os itens do ComboBox1.

Volte ao design do formulário e clique duas vezes no Button1 para que ao clicar seja possível alterar o idioma para o Português.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim lang As New AlterarIdioma("pt", Me, Me.Controls)
    lang.Formulario()
    Me.Text = lang.Controle("$this.Text")
    ComboBox1.Items.Clear()
    ComboBox1.Items.Add(lang.Controle("ComboBox1.Items"))
    ComboBox1.Items.Add(lang.Controle("ComboBox1.Items1"))
End Sub

Volte ao design novamente e clique duas vezes no Button2 para que ao clicar seja possível alterar o idioma para o Inglês.

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim lang As New AlterarIdioma("en", Me, Me.Controls)
    lang.Formulario()
    Me.Text = lang.Controle("$this.Text")
    ComboBox1.Items.Clear()
    ComboBox1.Items.Add(lang.Controle("ComboBox1.Items"))
    ComboBox1.Items.Add(lang.Controle("ComboBox1.Items1"))
End Sub

Pronto! Agora seu aplicativo pode ser traduzido para outros idiomas utilizando o VB.NET.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *