domingo, 12 de agosto de 2018

Resource multilenguaje c# ResXManager

 Los recursos pueden mostrarse en una aplicación como mensajes de error o como parte de la interfaz de usuario. Los recursos pueden contener datos con varios formatos, como objetos almacenados, cadenas e imágenes. Al almacenar los datos en un archivo de recursos, se pueden cambiar los datos sin volver a compilar toda la aplicación. Para poder escribir objetos almacenados en un archivo de recursos, los objetos deberán ser serializables.
.NET Framework proporciona numerosas prestaciones para la creación y localización de los recursos. Además, .NET Framework admite un modelo simple para el empaquetado y la implementación de estos recursos localizados.
Anteriormente se tenían que crear los recursos a mano, en la actualidad existen herramientas que nos facilitan la administración de los archivos resource.
En este caso utilizaremos ResXManager, es gratis se puede descargar desde aquí: 
una vez descargado se procede a la instalación.
una vez instalado podremos utilizarla desde visual studio en el menú Herramientas/ ResX Manager






La herramienta se ve de la siguiente manera 







La herramienta es muy intuitiva permite agregar idiomas nuevos, y por cada etiqueta te da la opción de traducción automática... aunque la verdad es mejor traducirlo manualmente.
Por cada idioma la herramienta crea un archivo resource.




Para utilizar estos registros en nuestro codigo ya sea en el cliente (html/ aspx) o en la clase se ocupa de la siguiente forma:
En aspx:
Ejemplo en un boton:
      <asp:Button  class="btn btn-primary" ID="btnOkLogOut"  runat="server" Text="<%$ Resources:Resource , Logout %>" OnClick="btnOkLogOut_Click"   />
en un Link
 <a class="nav-link" data-toggle="modal"    data-target="#exampleModal" onserverclick ="logOut_Click">              <i class="fa fa-fw fa-sign-out"></i>  <asp:Literal runat="Server"   Text="<%$ Resources:Resource , Logout %>" />
 </a>
En la clase vinculada:
lblLogOutTitle.Text = Resources.Resource.ReadytoLeave;

Como asignar idioma a pagina:
protected override void InitializeCulture()
    {    
        CultureInfo cultureInfo = new CultureInfo("es-MX");
        Thread.CurrentThread.CurrentCulture = cultureInfo;
        Thread.CurrentThread.CurrentUICulture = cultureInfo;
    }

1 comentario:

  1. hola, como hago para que se creen los archivos de resx en forma automatica, yo puse la extension en VS, la ejecuto y me aparece español como el lenguaje por defecto y 5 lenguajes mas que elegi. Pero el form solo tiene el archivo.resx, necesito el archivo.es.resx, archivo.de.resx, archivo.it.resx, archivo.fr.resx, archivo.en.resx, archivo.pt.resx. Le indico que traduzca pero no lo hace ni tampoco crea los archivos. Al archivo.resx le puse Internal y que lo copiara siempre y es un recurso incrustado.

    ResponderEliminar

Comenta cualquier duda o recomendatorio.