traductor - resources c# resx
Cómo hacer una aplicación multilingüe en winforms (3)
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 hacer eso. ¿Alguien me puede ayudar para esto? Necesito algunos ejemplos en C # Windows Forms.
Faltan algunas partes en la respuesta de wwjih123.
En VS2017
1-En primer lugar, cree recursos en la carpeta raíz de proyectos (No en la carpeta Recursos). Nómbrelo como lang_en, lang_tr, lang_fr, etc.
2-luego la ventana de propiedades del objeto deja la acción Build como recurso incorporado
3-dentro del archivo lang_tr.resx agregue una nueva cadena lbl_error y valor "Hata" en turco (lo que quiera)
4- dentro de la clase define variables como:
ResourceManager res_man; // declare Resource manager to access to specific cultureinfo
Inicialización de clase de 5 en 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 su idioma ui es turco, cargará automáticamente el lang_tr.resx, si está en inglés se cargará el archivo lang_en.resx, etc.
buena suerte
Usar un archivo de recursos puede ser más fácil en algunos casos.
-
Agregue un nuevo archivo de recursos al proyecto en Visual Studio. p.ej.
en.resx
para inglésfr.resx
para francés. -
Abra el archivo de recursos, en las cadenas, asigne un nombre a su cadena y coloque diferentes traducciones en la celda de valor. Por ejemplo: el valor de la
next station
enen.resx
es lanext station
pero enfr.resx
puede ser laProchaine station
. ejemplo a continuación: -
En el código, use
public static ResourceManager rm = new ResourceManager("WindowsFormsApp1.en_local", Assembly.GetExecutingAssembly());
para seleccionar el recurso de idioma. -
Cuando necesite enviar cualquier cadena a la aplicación, use la función
GetString()
, por ejemplolabel1.Text = rm.GetString("welcome");
Uso de propiedad de forma
Localizable
y de
Language
Form
clase de
Form
tiene propiedades
Localizable
y de
Language
.
Si establece la propiedad
Localizable
en true, puede agregar controles para formar el idioma predeterminado y establecer propiedades para el idioma predeterminado.
Luego puede seleccionar otros idiomas y cambiar las propiedades de esos idiomas.
De esta manera, el valor o las propiedades localizables se almacenarán en archivos de recursos separados para diferentes culturas.
Nota: Una propiedad se considera localizable si está decorada con el atributo
Localizable(true)
.
Por ejemplo, la propiedad
BackColor
no es localizable, pero la propiedad
Text
es localizable.
Localización de mensajes e imágenes utilizando archivos de recursos de Resx
El proyecto tiene un archivo
Rseources.Resx
en la carpeta
Properties
que puede usar para localizar imágenes y mensajes.
También puede agregar archivos de recursos .resx al proyecto.
Por ejemplo, puede crear un archivo
Strings.resx
y agregarle algunas claves y valores de cadena, luego copiarlo como
strings.en.resx
y
strings.fa.resx
y editar valores para esos idiomas.
Luego puede usar esos valores de recursos, por ejemplo:
MessageBox.Show(Properties.Resources.AreYouSure);
AreYouSure
el valor de
AreYouSure
del archivo
Resources.Resx
con el lenguaje de cultura de UI actual.
Si no se encuentra una clave de recurso para una cultura o la cultura especificada no se encuentra para el archivo de recursos, se utilizará el valor de la clave en cultura neutral del archivo
Resx
.
Cambiar el idioma en tiempo de ejecución
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.
Más información
Para más información y ejemplo: