Tutorial: Utilizar los recursos de adaptación con ASP.NET

Actualización: noviembre 2007

Una manera eficaz de crear páginas Web adaptadas es utilizar para el texto y los controles de la página recursos basados en el idioma y la referencia cultural del usuario. Mediante el uso de propiedades asociadas a objetos de recursos, ASP.NET puede seleccionar la propiedad correcta en tiempo de ejecución en función del idioma y la referencia cultural del usuario. El proceso es sencillo:

  • Un archivo de recursos (.resx) almacena los valores.

  • En la página, indica que los controles deben utilizar recursos para obtener los valores de las propiedades.

  • En tiempo de ejecución, los valores de las propiedades de los controles se derivan del archivo de recursos.

    Nota:

    En la práctica, puede almacenar los valores en objetos de recursos personalizados, como una base de datos. Sin embargo, en este tutorial utilizará un archivo .resx para almacenar los valores.

Visual Web Developer permite generar recursos, propiedades y HTML para los controles sin escribir ningún código.

Las tareas ilustradas en este tutorial incluyen:

  • Habilitar la localización de páginas ASP.NET.

  • Generar un archivo de recursos y asociar implícitamente sus valores con los controles de la aplicación.

  • Crear archivos de recursos de localización y hacer referencia explícitamente a ellos en las páginas utilizando expresiones declarativas.

Requisitos previos

Para poder completar este tutorial, necesitará:

  • Visual Web Developer (Visual Studio).

  • .NET Framework.

Crear un sitio Web

Si ya ha creado un sitio Web en Visual Web Developer (vea Tutorial: Crear una página Web básica en Visual Web Developer), podrá utilizarlo y pasar a la siguiente sección, "Localización implícita con ASP.NET". En caso contrario, cree un sitio y una página Web nuevos siguiendo los pasos del procedimiento que se describe a continuación.

Para crear un sitio Web de sistema de archivos

  1. Abra Visual Web Developer.

  2. En el menú Archivo, haga clic en Nuevositio Web.

    Aparece el cuadro de diálogo Nuevo sitio Web.

  3. En Plantillas instaladas de Visual Studio, haga clic en Sitio Web ASP.NET.

  4. En el cuadro Ubicación, escriba el nombre de la carpeta en la que desea guardar las páginas de su sitio Web.

    Por ejemplo, escriba el nombre de carpeta C:\WebSites.

  5. En la lista Lenguaje, haga clic en el lenguaje de programación con el que prefiera trabajar.

  6. Haga clic en Aceptar.

    Visual Web Developer crea la carpeta y una nueva página denominada Default.aspx.

Localización implícita con ASP.NET

En esta sección, trabajará con la localización implícita. En la localización implícita, se especifica que las propiedades de los controles se deben leer de manera automática de un archivo de recursos, pero no es necesario especificar explícitamente qué propiedades se adaptan. A continuación, se crea un archivo de recursos con valores adaptados para propiedades concretas. En tiempo de ejecución, ASP.NET examina los controles de la página. Si el control está marcado para utilizar la localización implícita, ASP.NET busca la página en el archivo de recursos. Si encuentra valores de las propiedades para el control marcado, ASP.NET sustituye los valores del archivo de recursos por los del control.

En este ejemplo de localización implícita, se utiliza una combinación del diseñador y el editor de recursos para generar un archivo de recursos predeterminado que se usará como punto de partida para la localización en dos idiomas. Visual Web Developer generará un archivo de recursos basado únicamente en los controles de la página. Por esta razón, es una buena idea generar el archivo de recursos después de completar el diseño de los controles de la página, incluidos controles sencillos como botones, etiquetas y cuadros de texto.

Para insertar controles en una página

  1. En el Explorador de soluciones, haga clic con el botón secundario en Default.aspx, haga clic en Cambiar nombre y, a continuación, escriba Sample.aspx.

    De esta forma, se evitará la confusión en el resto del tutorial con respecto a los archivos de recursos predeterminados, ya que los nombres de archivos de recursos implícitos usan los nombres de las páginas.

  2. Abra Sample.aspx y, a continuación, cambie a la vista Diseño.

  3. En el Cuadro de herramientas, desde la sección Estándar, arrastre un control Button, otro Label y otro TextBox hasta la página.

  4. Para cada control, establezca Text en English Button, English Label y English TextBox, respectivamente.

Después de crear la página y agregar los controles, puede usar un comando de Visual Web Developer para generar un archivo de recursos local para esta página. El archivo de recursos local contendrá las cadenas de recursos para los controles de la página. Visual Web Developer genera una cadena de recurso para cada propiedad que se designa internamente en el control como adaptable. Cada control puede tener distintas propiedades designadas como adaptables, aunque la mayoría de las propiedades de texto se marcan así.

Para generar automáticamente un archivo de recursos

  1. Haga clic en la superficie del diseñador o en un control.

  2. En el menú Herramientas, haga clic en Generar recurso local.

    Visual Web Developer crea una nueva carpeta denominada App_LocalResources y, dentro de la carpeta App_LocalResources, un nuevo archivo llamado Sample.aspx.resx. Si asignó a la página un nombre distinto de Sample.aspx, el archivo .resx reflejará el nombre elegido. Cuando se utiliza la localización implícita, los nombres de los archivos de recursos se basan en los nombres de las páginas.

  3. Cambie a la vista Código fuente para ver los cambios realizados en las declaraciones de los controles.

    Visual Web Developer ha agregado un atributo a los controles para recuperar sus valores del archivo de recursos que se acaba de crear. Por ejemplo, el marcado del control Button tiene un nuevo atributo meta:resourcekey.

    <asp:Button ID="Button1" Runat="server" meta:resourcekey="ButtonResource1" Text="English Button" />
    

Cuando un explorador envía una solicitud al servidor Web, la solicitud puede incluir información sobre el idioma y la referencia cultural actuales. Por ejemplo, un explorador puede enviar la cadena "en-us" para indicar que se ha configurado para usar inglés de Estados Unidos; otro explorador puede enviar la cadena "en-gb" para indicar que se ha configurado para usar inglés del Reino Unido.

Nota:

La configuración de idioma y referencia cultural de una solicitud del explorador no es una manera totalmente confiable de detectar el idioma preferido por el usuario. La configuración indica únicamente el ajuste que el explorador tiene definido para los envíos o ha heredado del sistema operativo subyacente. En este tutorial, se confía en la configuración de idioma y referencia cultural, pero en una aplicación de producción también se debe incluir un sistema que permita a los usuarios seleccionar manualmente el idioma y la referencia cultural.

El archivo de recursos se utiliza como archivo de recursos predeterminado para todas las solicitudes. Es el archivo de recursos para la referencia cultural de reserva. Si el explorador no especifica ninguna referencia cultural o si la solicitud del explorador incluye un idioma o una referencia cultural que no se admite, los valores de los recursos se obtienen de este archivo predeterminado.

Una vez creado el archivo de recursos, puede insertar el texto adaptado dentro de él utilizando el editor de recursos.

Para editar el archivo de recursos utilizando el editor de recursos

  1. En el Explorador de soluciones, abra Sample.aspx.resx.

    En el editor de recursos, en Valor, se encuentran las propiedades Text de cada uno de los controles insertados en la página. Al cambiar el valor aquí, se cambiará el valor de la referencia cultural predeterminada.

  2. Establezca ButtonResource1.Text en Edited English Text.

  3. Guarde el archivo.

Ahora puede probar la página.

Para probar la página

  • Presione CTRL+F5 para ejecutar la página.

    El texto proporcionado en el editor de recursos se muestra como etiqueta de Button1. Al utilizar la localización implícita, las propiedades de sintaxis de los archivos de recursos reemplazarán las propiedades especificadas en la página.

Agregar otras referencias culturales

Cada combinación de idioma y referencia cultural requiere un archivo de recursos único. Para agregar otras referencias culturales, puede utilizar el archivo predeterminado como punto de partida. Puede crear archivos de recursos para diferentes referencias culturales y configuraciones regionales mediante la creación de nuevos archivos de recursos en los que los códigos de idioma ISO formen parte del nombre de archivo (por ejemplo, en-us, fr-ca y en-gb). Estos códigos ISO se colocan entre el nombre de la página y la extensión de nombre de archivo .resx, como en Sample.aspx.en-us.resx. Para especificar un idioma culturalmente neutro se debe eliminar el código de país, como Sample.aspx.fr.resx para el idioma francés.

Nota:

Cuando se utiliza la sintaxis de localización implícita, se debe crear una serie independiente de archivos de recursos para cada página.

Para crear un archivo de idioma francés culturalmente neutro

  1. En el Explorador de soluciones, haga clic con el botón secundario en el archivo Sample.aspx.resx y, a continuación, haga clic en Copiar.

  2. Haga clic con el botón secundario en la carpeta App_LocalResources y, a continuación, haga clic en Pegar.

    Visual Web Developer crea un archivo denominado Copia de Sample.aspx.resx.

  3. Haga clic con el botón secundario en el archivo Copia de Sample.aspx.resx, haga clic en Cambiar nombre y, a continuación, escriba Sample.aspx.fr.resx.

    Sample.aspx.fr.resx indica un archivo para texto en idioma francés culturalmente neutro.

  4. Abra Sample.aspx.fr.resx.

  5. En los controles Button, Label y TextBox, establezca Text como French Button, French Label y French TextBox, respectivamente.

  6. Guarde el archivo.

Probar con una configuración de idioma alternativa

Antes de ver si ASP.NET utiliza este nuevo archivo de recursos, debe modificar la configuración del explorador para solicitar la referencia cultural deseada.

Para cambiar la configuración de idioma del explorador

  1. En Microsoft Internet Explorer, en el menú Herramientas, haga clic en Opciones de Internet.

  2. Haga clic en Idiomas.

  3. En el cuadro de diálogo Preferencias de idioma, haga clic en Agregar.

  4. En el cuadro de diálogo Agregar idioma, en Idiomas, haga clic en Francés (Francia) [fr] y haga clic en Aceptar.

  5. Haga clic en Agregar y agregue Español (México) [es-mx] a la lista de idiomas.

  6. Haga clic en Agregar y agregue Árabe (Egipto) [ar-eg] a la lista de idiomas.

    Utilizará los idiomas español y árabe para realizar pruebas más adelante en este tutorial.

  7. En el cuadro de diálogo Preferencias de idioma, en Idioma, haga clic en Francés (Francia) [fr], haga clic en Subir y, a continuación, haga clic en Aceptar.

De esta forma, Internet Explorer se ha configurado para pasar fr como ajuste de idioma para cualquier solicitud. Con la referencia cultural definida como auto en la página Sample.aspx, ASP.NET intentará encontrar un archivo de recursos y los valores correspondientes para ensamblar la página de acuerdo con las preferencias de idioma y referencia cultural del usuario.

Para probar la página

  • En Visual Web Developer, presione CTRL+F5 para ejecutar la página.

    La página se actualiza con los valores del archivo de idioma francés adaptado en lugar de los de la versión en inglés.

    Nota:

    Puede restablecer la configuración de idioma en Internet Explorer. Para ello, regrese al cuadro de diálogo Preferencias de idioma y vuelva a subir el idioma elegido en la lista.

Localización explícita con ASP.NET

En la primera parte de este tutorial, ha utilizado la localización implícita de ASP.NET para hacer que los controles muestren texto adaptado. Ha generado un archivo de recursos con valores de propiedades y, en el proceso, ha agregado un atributo a cada control que le da instrucciones de rellenar los valores de sus propiedades, si los hay, a partir del archivo de recursos. La localización implícita funciona automáticamente, ya que no requiere especificar propiedad por propiedad cómo se debe leer la información de un archivo de recursos.

Sin embargo, a veces se desea tener un control más directo sobre la configuración de las propiedades. Para ello, en lugar de utilizar la localización implícita, puede usar la localización explícita. La localización explícita permite establecer el valor de una propiedad utilizando una expresión que señala a un archivo de recursos. Cuando la página se ejecuta, la expresión se evalúa, el valor se lee en el archivo de recursos especificado y, a continuación, se usa para establecer la propiedad.

La localización explícita resulta útil cuando se tienen mensajes personalizados o cuerpos de texto de gran tamaño que se desea adaptar, además de controles y etiquetas. Por ejemplo, puede desarrollar una serie de mensajes adaptados de bienvenida y agradecimiento para un sitio de comercio electrónico, y usar expresiones declarativas explícitas para insertar este texto en las páginas. Por otra parte, la localización explícita permite mantener un único conjunto de archivos de recursos adaptados, en lugar de mantener un conjunto de archivos independiente para cada página.

En esta sección, creará manualmente los archivos de recursos y hará referencia a ellos utilizando la sintaxis de expresiones declarativas de ASP.NET. Creará un archivo de recursos para un mensaje de agradecimiento sencillo. A diferencia del uso del diseñador, este procedimiento no requiere un archivo de recursos independiente para cada página ASP.NET.

El nombre base del archivo de recursos será LocalizedText. Para cada idioma que desee adaptar, creará otro archivo con el código de idioma (y, opcionalmente, el código de referencia cultural) adecuado como parte del nombre de archivo. Por ejemplo, para el idioma inglés de Estados Unidos, creará un archivo denominado LocalizedText.resx. Para el idioma francés de Canadá, creará un archivo llamado LocalizedText.fr-ca.resx. Ambos archivos se guardarán en el directorio Resources de la aplicación Web. A diferencia del ejemplo implícito anterior, no es necesario mantener un archivo de recursos para cada página .aspx. En lugar de esto, se puede mantener una única serie de archivos para cada idioma o referencia cultural que se admita.

Para crear un archivo de recursos

  1. En el Explorador de soluciones, haga clic con el botón secundario en la raíz del sitio Web, haga clic en Agregar carpeta ASP.NET y, a continuación, haga clic en App_GlobalResources.

  2. Haga clic con el botón secundario en la carpeta App_GlobalResources y, a continuación, haga clic en Agregar nuevo elemento.

  3. En Plantillas instaladas de Visual Studio, haga clic en Archivo de recursos.

  4. En el cuadro Nombre, escriba LocalizedText.resx y, a continuación, haga clic en Agregar.

    El archivo LocalizedText.resx actuará como recurso para la referencia cultural de reserva.

  5. Cree un segundo archivo .resx y denomínelo LocalizedText.fr.resx.

    La cadena "fr" identifica el archivo como el recurso que se debe utilizar si el idioma del explorador se ha definido como Francés (con independencia de la referencia cultural).

  6. Cree un tercer archivo .resx y denomínelo LocalizedText.es-mx.resx.

    La cadena "es-mx" identifica el archivo como el recurso que se debe utilizar si el idioma del explorador se ha definido como Español (México).

  7. Abra el archivo LocalizedText.resx.

  8. En la primera fila, en la columna Name, escriba Msg1.

  9. En la primera fila, en la columna Value, escriba Hello.

  10. Guarde el archivo y ciérrelo.

  11. Abra LocalizedText.fr.resx, cree una cadena de recurso denominada Msg1, asígnele el valor Bon jour. Cuando termine, guarde y cierre el archivo.

  12. Abra LocalizedText.es-mx.resx, cree una cadena de recurso denominada Msg1, asígnele el valor Buenos días. Cuando termine, guarde y cierre el archivo.

    Nota:

    Para insertar la letra acentuada (í), escriba ALT+0237 en el teclado numérico con Bloq Num activado.

    Ha creado tres valores para el recurso denominado Msg1. ASP.NET leerá el valor del archivo de recursos adecuado en función del idioma que tenga configurado el explorador.

Una vez creado el archivo de recursos, puede volver a la página y agregar controles que hagan referencia al recurso.

Para agregar un control Label a la página

  1. Vaya a Sample.aspx y, a continuación, cambie a la vista Diseño.

  2. Arrastre otro control Label a la página.

  3. Haga clic con el botón secundario en el control Label, haga clic en Propiedades y, a continuación, haga clic en el botón de puntos suspensivos (...) del cuadro Expresiones.

    Aparece el cuadro de diálogo Expresiones.

  4. En la lista Propiedades enlazables, haga clic en Text.

  5. En la lista Tipo de expresión, seleccione Recursos.

  6. En Propiedades de expresión, establezca ClassKey como LocalizedText y ResourceKey como Msg1.

  7. Haga clic en Aceptar.

  8. Cambie a la vista Código fuente.

    El atributo de texto de la etiqueta tiene ahora una expresión explícita que define el archivo base del que se recuperarán el recurso y la clave que se deben seleccionar.

    <asp:Label ID="Label2" Runat="server" Text="<%$ Resources:LocalizedText, Msg1 %>">
    
    Nota:

    El atributo LocalizedText no tiene ningún indicador de idioma, indicador de referencia cultural o extensión .resx porque no es el nombre de archivo real. En lugar de eso, LocalizedText representa la clase de recursos base. Dependiendo de la referencia cultural enviada por el explorador, ASP.NET seleccionará el recurso en el archivo con el código de idioma o referencia cultural correcto en el nombre de archivo, como LocalizedText.fr.resx, LocalizedText.es-mx.resx o, si no se encuentra ningún idioma coincidente, LocalizedText.resx.

Con el archivo de recursos completado y la expresión declarativa agregada, puede probar la página. Después de la última comprobación, el explorador se configuró para indicar Francés como preferencia de idioma. Durante las pruebas, cambiará varias veces el idioma del explorador.

Para probar la página

  1. Presione CTRL+F5 para ejecutar la página.

    La versión en francés del texto proporcionado en el editor de recursos se muestra como texto del control Label.

  2. En Microsoft Internet Explorer, en el menú Herramientas, haga clic en Opciones de Internet.

  3. Haga clic en Idiomas.

  4. En el cuadro de diálogo Preferencias de idioma, desplace Español (México) [es-mx] al principio de la lista de idiomas. Cuando termine, haga clic en Aceptar y cierre el cuadro de diálogo Opciones de Internet.

  5. Presione F5 para actualizar el explorador.

    Se muestra la versión en español del texto.

  6. Cambie el idioma a árabe y, a continuación, presione F5 para actualizar de nuevo la página.

    Esta vez, el texto se muestra en el idioma empleado en el archivo de recursos de reserva. Como no ha creado un archivo LocalizedText.ar-eg.resx, ASP.NET no puede encontrar texto que coincida con el idioma y la referencia cultural indicados por el explorador, de modo que usa el archivo de recursos de reserva.

  7. Cuando termine de probar la página, vuelva a establecer el idioma en su idioma preferido.

Pasos siguientes

La localización puede ser una tarea compleja. Este tutorial ha mostrado algunas de las características de Visual Web Developer que pueden eliminar parte del trabajo. Puede obtener más información sobre la localización y ASP.NET. Por ejemplo, puede:

  • Obtener más información sobre cómo utilizar los recursos en las aplicaciones. Para obtener información detallada, vea Recursos en aplicaciones.

  • Usar clases que definen información relativa a la referencia cultural, como el idioma, el país o región, los calendarios utilizados, los modelos de formato de fecha, la moneda, los números y el criterio de ordenación de las cadenas. Para obtener información detallada, vea System.Globalization.

  • Obtener más información sobre los procedimientos recomendados al codificar para un público internacional. Para obtener información detallada, vea Prácticas recomendadas para desarrollar aplicaciones de uso internacional.

Vea también

Conceptos

Utilizar la clase CultureInfo

Otros recursos

Codificación y localización

Espacios de nombres de globalización y localización en Visual Studio