Cómo hacer aplicaciones multilenguaje en winforms

Tengo una aplicación y necesito usar dos idiomas (por ejemplo, inglés y árabe) en esa aplicación, pero no sé cómo puedo hacerlo. ¿Alguien puede ayudarme con esto? Necesito algunos ejemplos en C # Windows Forms.

Form clase de Form tiene propiedad Localizable y de Language . Si establece la propiedad Localizable en verdadero, puede agregar controles para formar el idioma predeterminado y establecer propiedades para el idioma predeterminado. Luego puede seleccionar otros idiomas y cambiar las propiedades para esos idiomas. De esta forma, los valores de propiedad se almacenarán en archivos de recursos separados para diferentes culturas.

También puede agregar archivos de recursos .resx para proyectar. Por ejemplo, cree un archivo Strings.resx y añádele una clave de cadena y valores, luego cópielo como strings.en.resx y strings.fa.resx y edite valores para esos idiomas.

Puede establecer la cultura de una aplicación en Persian usando:

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

Debe poner el código anterior al inicio de su aplicación o antes de mostrar un formulario.

Para más información y Ejemplo:

  • Globalizando las Formas de Windows
  • Tutorial: localización de formularios de Windows

Usar un archivo de recursos puede ser más fácil en algunos casos.

  1. Agregue un nuevo archivo de recursos al proyecto en Visual Studio. p.ej. en.resx para inglés fr.resx para francés.

  2. Abra el archivo de recursos, en las cadenas, nombre su cadena y coloque diferentes traducciones en la celda de valores. Por ejemplo: el valor de la next station en en.resx es la next station pero en fr.resx puede ser la Prochaine station . ejemplo como a continuación: en_local.resx fr_local.resx

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

  4. Cuando necesite enviar cualquier cadena a la aplicación, use la función GetString() , por ejemplo label1.Text = rm.GetString("welcome");

Hay algunas partes faltantes en la respuesta de wwjih123.

En VS2017

1-En primer lugar crear recurso en la carpeta raíz de proyectos (No en la carpeta de Recursos). Nómbralo como lang_en, lang_tr, lang_fr, etc.

2-luego la ventana de propiedades del objeto deja Build Action como Recurso incrustado

3-dentro del archivo lang_tr.resx agrega la nueva cadena lbl_error y valora “Hata” en turco (lo que quieras)

4- dentro de la clase define las variables como:

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

Inicialización de clase de 5 después de 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"); 

si tu idioma ui es turco, cargará automáticamente lang_tr.resx, si es inglés, se cargará el archivo lang_en.resx, etc.

buena suerte