Como fazer um aplicativo de vários idiomas em winforms

Eu tenho um aplicativo e preciso usar dois idiomas (por exemplo, inglês e árabe) nesse aplicativo, mas não sei como posso fazer isso. Alguém pode me ajudar por isso? Eu preciso de alguns exemplos em C # Windows Forms.

Form class de Form tem propriedades Localizable e de Language . Se você definir a propriedade Localizable como true, você poderá adicionar controles ao formulário para o idioma padrão e definir propriedades para o idioma padrão. Em seguida, você pode selecionar outros idiomas e alterar as propriedades desses idiomas. Dessa forma, os valores das propriedades serão armazenados em arquivos de resources separados para diferentes culturas.

Além disso, você pode adicionar arquivos de recurso .resx ao projeto. Por exemplo, crie um arquivo Strings.resx e adicione alguns valores e chaves de string a ele, copie-o como strings.en.resx e strings.fa.resx e edite os valores para esses idiomas.

Você pode definir a cultura de um aplicativo para Persian usando:

 System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("fa"); System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo("fa"); 

Você deve colocar o código acima no início de sua inscrição ou antes de mostrar um formulário.

Para mais informações e exemplos:

  • Globalizando Formulários do Windows
  • Demonstra Passo a passo: Localizando o Windows Forms

Usar um arquivo de recurso pode ser mais fácil em alguns casos.

  1. Adicione um novo arquivo de resources ao projeto no Visual Studio. por exemplo. en.resx para o inglês fr.resx para francês.

  2. Abra o arquivo de resources, nas strings, nomeie sua string e coloque uma tradução diferente na célula de valor. Por exemplo: o valor da next station em en.resx é a next station mas em fr.resx pode ser a Prochaine station . exemplo como abaixo: en_local.resx fr_local.resx

  3. No código, use public static ResourceManager rm = new ResourceManager("WindowsFormsApp1.en_local", Assembly.GetExecutingAssembly()); para selecionar o recurso de idioma.

  4. Quando você precisar label1.Text = rm.GetString("welcome"); qualquer string para o aplicativo, use a function GetString() , por exemplo label1.Text = rm.GetString("welcome");

Há algumas partes que faltam na resposta do wwjih123.

Em VS2017

1-Primeiro de tudo criar recurso na pasta raiz do projeto (não na pasta Resources). Nomeie como lang_en, lang_tr, lang_fr etc …

2-então a janela de propriedades do object deixa a ação Construir como Recurso Incorporado

3-dentro do arquivo lang_tr.resx adicionar nova string lbl_error e valor “Hata” em turco (o que você quiser)

4- dentro da class define variables ​​como:

  ResourceManager res_man; // declare Resource manager to access to specific cultureinfo 

Inicialização da class 5-in após InitializeComponent ();

 Console.WriteLine("You are speaking {0}", System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName); res_man = new ResourceManager("MyApp.lang_"+ System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, Assembly.GetExecutingAssembly()); lblError.Text = res_man.GetString("lbl_error"); 

Se o seu idioma ui é turco, ele carregará automaticamente o lang_tr.resx, se o arquivo lang_en.resx em inglês for carregado, etc …

boa sorte