Posteado por: toniogago | 4 diciembre 2010

Cambiar el idioma al control ReportViewer


Si estás utilizando el control ReportViewer en una web ASP.NET, puede que los textos del control te aparezcan en inglés. Incluso si tienes que desarrollar una web para un idioma de una de nuestras comunidades (gallego, catalán, euskera…) el control ReportViewer lo podrás adaptar para que los textos aparezcan en el idioma que quieras.

Cambiando la cultura de la página (UICulture=”es-ES” Culture=”es-ES”) no me funcionó. Tampoco otras soluciones que proponen algunos foros. Todos relacionados con la cultura y globalización. Al acceder a la página de Reporting Services (http://servidor/reports) los mensajes me aparecen en castellano, pero en mi página que tiene el control ReportViewer (tengo instalado el 2008 SP1 en castellano) seguía en inglés.

Después de buscar y buscar por la web en encontré una solución que me funcionó: implementar la clase Microsoft.Reporting.WebForms.IReportViewerMessages con una clase. Esta clase hay que crearla en una carpeta especial denominada App_Code.

Para que el control ReportViewer utilice la clase, hay que crear una variable en el archivo web.config, en el grupo appSettings.

<add key="ReportViewerMessages" value="MensajesReportViewer.ES, App_Code"/>

MensajesReportViewer es el nombre del NameSpace y ES es el nombre de la clase. Si te da miedo tocar el archivo web.config podrás crear la variable desde el Administrador IIS: Seleccionas la aplicación con el botón derecho y eliges propiedades. En la pestaña ASP.NET pulsas el botón Editar configuración. Aparecerá una ventana en la que agregarás en Configuración de la aplicación

El código de la clase es el siguiente:

Imports Microsoft.VisualBasic
Namespace RVM
Public Class MiCultura
             Implements Microsoft.Reporting.WebForms.IReportViewerMessages
Public ReadOnly Property BackButtonToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.BackButtonToolTip
  Get
    Return "Atrás"
  End Get
End Property

Public ReadOnly Property ChangeCredentialsText() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.ChangeCredentialsText
  Get
    Return "Cambiar Credenciales"
  End Get
End Property

Public ReadOnly Property ChangeCredentialsToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.ChangeCredentialsToolTip
  Get
    Return "Cambiar Credenciales"
  End Get
End Property

Public ReadOnly Property CurrentPageTextBoxToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.CurrentPageTextBoxToolTip
  Get
    Return "Página actual"
  End Get
End Property

Public ReadOnly Property DocumentMap() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.DocumentMap
  Get
    Return "Mapa"
  End Get
End Property

Public ReadOnly Property DocumentMapButtonToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.DocumentMapButtonToolTip
  Get
    Return "Mapa del documento"
  End Get
End Property

Public ReadOnly Property ExportButtonText() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.ExportButtonText
  Get
    Return "Exportar"
  End Get
End Property

Public ReadOnly Property ExportButtonToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.ExportButtonToolTip
  Get
    Return "Exportar"
  End Get
End Property

Public ReadOnly Property ExportFormatsToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.ExportFormatsToolTip
  Get
    Return "Formatos de exportación"
  End Get
End Property

Public ReadOnly Property FalseValueText() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.FalseValueText
  Get
    Return "Falso"
  End Get
End Property

Public ReadOnly Property FindButtonText() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.FindButtonText
  Get
    Return "Buscar"
  End Get
End Property

Public ReadOnly Property FindButtonToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.FindButtonToolTip
  Get
    Return "Buscar"
  End Get
End Property

Public ReadOnly Property FindNextButtonText() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.FindNextButtonText
  Get
    Return "Siguiente"
  End Get
End Property

Public ReadOnly Property FindNextButtonToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.FindNextButtonToolTip
  Get
    Return "Siguiente"
  End Get
End Property

Public ReadOnly Property FirstPageButtonToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.FirstPageButtonToolTip
  Get
    Return "Primera página"
  End Get
End Property

Public ReadOnly Property InvalidPageNumber() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.InvalidPageNumber
  Get
    Return "Página no válida"
  End Get
End Property

Public ReadOnly Property LastPageButtonToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.LastPageButtonToolTip
  Get
    Return "Última página"
  End Get
End Property

Public ReadOnly Property NextPageButtonToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.NextPageButtonToolTip
  Get
    Return "Siguiente página"
  End Get
End Property

Public ReadOnly Property NoMoreMatches() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.NoMoreMatches
  Get
    Return "No se encuentran más coincidencias"
  End Get
End Property

Public ReadOnly Property NullCheckBoxText() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.NullCheckBoxText
  Get
    Return "Nulo"
  End Get
End Property

Public ReadOnly Property NullValueText() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.NullValueText
  Get
    Return "Nulo"
  End Get
End Property

Public ReadOnly Property PageOf() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.PageOf
  Get
    Return "de"
  End Get
End Property

Public ReadOnly Property ParameterAreaButtonToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.ParameterAreaButtonToolTip
  Get
    Return "Mostrar u ocultar parámetros"
  End Get
End Property

Public ReadOnly Property PasswordPrompt() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.PasswordPrompt
  Get
    Return "Contraseña"
  End Get
End Property

Public ReadOnly Property PreviousPageButtonToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.PreviousPageButtonToolTip
  Get
    Return "Página anterior"
  End Get
End Property

Public ReadOnly Property PrintButtonToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.PrintButtonToolTip
  Get
    Return "Imprimir"
  End Get
End Property

Public ReadOnly Property ProgressText() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.ProgressText
  Get
    Return "El informe se está generando"
  End Get
End Property

Public ReadOnly Property RefreshButtonToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.RefreshButtonToolTip
  Get
    Return "Actualizar"
  End Get
End Property

Public ReadOnly Property SearchTextBoxToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.SearchTextBoxToolTip
  Get
    Return "Buscar texto"
  End Get
End Property

Public ReadOnly Property SelectAll() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.SelectAll
  Get
    Return "(Seleccionar Todo)"
  End Get
End Property

Public ReadOnly Property SelectAValue() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.SelectAValue
  Get
    Return "<Seleccione un valor>"
  End Get
End Property

Public ReadOnly Property SelectFormat() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.SelectFormat
  Get
    Return "Seleccionar un formato"
  End Get
End Property

Public ReadOnly Property TextNotFound() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.TextNotFound
  Get
    Return "Texto no encontrado"
  End Get
End Property

Public ReadOnly Property TodayIs() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.TodayIs
  Get
    Return "Hoy es"
  End Get
End Property

Public ReadOnly Property TrueValueText() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.TrueValueText
  Get
    Return "Verdadero"
  End Get
End Property

Public ReadOnly Property UserNamePrompt() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.UserNamePrompt
  Get
    Return "Usuario"
  End Get
End Property

Public ReadOnly Property ViewReportButtonText1() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.ViewReportButtonText
  Get
    Return "Ver informe"
  End Get
End Property

Public ReadOnly Property ZoomControlToolTip() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.ZoomControlToolTip
  Get
    Return "Zoom"
  End Get
End Property

Public ReadOnly Property ZoomToPageWidth() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.ZoomToPageWidth
  Get
    Return "Ancho de página"
  End Get
End Property

Public ReadOnly Property ZoomToWholePage() As String Implements Microsoft.Reporting.WebForms.IReportViewerMessages.ZoomToWholePage
  Get
    Return "Toda la página"
  End Get
End Property
End Class
End Namespace

Yo utilizo Visual Studio 2008 y facilita enormemente la tarea ya que al teclear Implements y la clase, al pulsar intro, él sólo introduce casi todo el código. Sólo hay que ir rellenando las propiedades con el Return correspondiente.

Anuncios

Responses

  1. Hola! muy bueno por cierto. Te hago una consulta, ¿Cómo sería con el tema de las fechas?

    Porque en mi proyecto me las muestra con el formato jan/1998 y quisiera que sea asi: ene/1998

    • Seguramente que sea un problema de cultura y Globalización en las páginas. Puedes probar a cambiar la directiva @ Page de la página:

      <%@ Page UICulture="es" Culture="es-ES" %>
      

      un saludo.

  2. Perdón, ya encontré la directiva Page.

  3. Muchas gracias Tonio, finalemente me sirvió de muchisima ayuda tu post.

  4. http://www.microsoft.com/es-es/download/details.aspx?id=20884

    • Gracias Cristian por dejar el enlace a la versión 2010 del paquete de idiomas.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: