Mostrando entradas con la etiqueta ResXManager. Mostrar todas las entradas
Mostrando entradas con la etiqueta ResXManager. Mostrar todas las entradas

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;
    }