Tutorial: Localizar una aplicación híbrida

En este tutorial se muestra cómo localizar los elementos de WPF en una aplicación híbrida basada en Windows Forms.

Las tareas ilustradas en este tutorial incluyen:

  • Crear el proyecto host de Windows Forms.

  • Agregar el contenido localizable.

  • Habilitar la localización.

  • Asignar los identificadores de recursos.

  • Utilizar la herramienta LocBaml para generar un ensamblado satélite.

Para obtener una lista de código completa de las tareas ilustradas en este tutorial, vea Localizing a Hybrid Application Sample.

Al completar este tutorial, dispondrá de una aplicación híbrida localizada.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

  • Visual Studio 2008.

Crear el proyecto host de formularios Windows Forms

El primer paso consiste en crear el proyecto de la aplicación de Windows Forms y en agregar un elemento de WPF con el contenido que se va a localizar.

Para crear el proyecto host

  1. Cree un proyecto de aplicación de WPF denominado LocalizingWpfInWf. Para obtener más información, consulte Cómo: Crear un nuevo proyecto de aplicación de Windows Forms.

  2. Agregue un elemento UserControl de WPF denominado SimpleControl al proyecto.

  3. Utilice el control ElementHost para colocar un elemento SimpleControl en el formulario. Para obtener más información, vea Tutorial: Hospedar un control compuesto 3 D de WPF en Windows Forms.

Agregar contenido localizable

A continuación, agregará un control de etiqueta de Windows Forms y se establecerá el contenido del elemento de WPF en una cadena localizable.

Para agregar el contenido localizable

  1. En el Explorador de soluciones, haga doble clic en el archivo SimpleControl.xaml para abrirlo en WPF Designer.

  2. Establezca el contenido del control Button mediante el código siguiente.

    <UserControl x:Class="LocalizingWpfInWf.SimpleControl"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        >
    
      <Canvas>
        <Button Content="Hello"/>
      </Canvas>
    </UserControl>
    
  3. En el Explorador de soluciones, haga doble clic en Form1 para abrirlo en el Diseñador de Windows Forms.

  4. Abra el Cuadro de herramientas y haga doble clic en Etiqueta para agregar un control de etiqueta al formulario. Establezca el valor de la propiedad Text del control en "Hello".

  5. Presione F5 para compilar y ejecutar la aplicación.

    Tanto el elemento SimpleControl como el control de etiqueta muestran el texto "Hello".

Habilitar la localización

El Diseñador de Windows Forms proporciona valores para habilitar la localización en un ensamblado satélite.

Para habilitar la localización

  1. En el Explorador de soluciones, haga doble clic en Form1.cs para abrirlo en el Diseñador de Windows Forms.

  2. En la ventana Propiedades, establezca el valor de la propiedad Localizable del formulario en true.

  3. En la ventana Propiedades, establezca el valor de la propiedad Idioma en Español (España).

  4. En el Diseñador de Windows Forms, seleccione el control de etiqueta.

  5. En la ventana Propiedades, establezca el valor de la propiedad Text en "Hola".

    Se agrega al proyecto un nuevo archivo de recursos denominado Form1.es-ES.resx.

  6. En el Explorador de soluciones, haga clic con el botón secundario del mouse en Form1.cs y seleccione Ver código para abrirlo en el Editor de código.

  7. Copie el código siguiente en el constructor Form1, antes de la llamada a InitializeComponent.

    public Form1()
    {
        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("es-ES");
    
        InitializeComponent();
    }
    
  8. En el Explorador de soluciones, haga clic con el botón secundario en LocalizingWpfInWf y seleccione Descargar el proyecto.

    El nombre del proyecto tiene la etiqueta (no disponible).

  9. Haga clic con el botón secundario en LocalizingWpfInWf y seleccione Editar LocalizingWpfInWf.csproj.

    Se abre el archivo de proyecto en el Editor de código.

  10. Copie la línea siguiente en el primer PropertyGroup del archivo de proyecto.

    <UICulture>en-US</UICulture> 
    
  11. Guarde el archivo de proyecto y ciérrelo.

  12. En el Explorador de soluciones, haga clic con el botón secundario en LocalizingWpfInWf y seleccione Volver a cargar el proyecto.

Asignar identificadores de recursos

Puede asignar el contenido localizable a ensamblados de recursos utilizando identificadores de recursos. La aplicación MsBuild.exe asigna automáticamente los identificadores de recursos cuando se especifica la opción updateuid.

Para asignar los identificadores de recursos

  1. En el menú Inicio, abra el símbolo del sistema de Visual Studio.

  2. Utilice el comando siguiente para asignar identificadores de recursos al contenido localizable.

    msbuild /t:updateuid LocalizingWpfInWf.csproj
    
  3. En el Explorador de soluciones, haga doble clic en el archivo SimpleControl.xaml para abrirlo en el Editor de código. Observará que el comando msbuild ha agregado el atributo Uid a todos los elementos. Esto facilita la localización mediante la asignación de identificadores de recursos.

    <UserControl x:Uid="UserControl_1" x:Class="LocalizingWpfInWf.SimpleControl"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        >
    
      <Canvas x:Uid="Canvas_1">
        <Button x:Uid="Button_1" Content="Hello"/>
      </Canvas>
    </UserControl>
    
  4. Presione F6 para generar la solución.

Utilizar LocBaml para generar un ensamblado satélite

El contenido localizado se almacena en un ensamblado satélite sólo de recursos. Utilice la herramienta de la línea de comandos LocBaml.exe a fin de generar un ensamblado localizado para el contenido de WPF.

Para generar un ensamblado satélite

  1. Copie LocBaml.exe en la carpeta obj\Debug del proyecto. Para obtener más información, consulte Cómo: Localizar una aplicación.

  2. En la ventana del símbolo del sistema, utilice el comando siguiente para extraer las cadenas de recursos a un archivo temporal.

    LocBaml /parse LocalizingWpfInWf.g.en-US.resources /out:temp.csv
    
  3. Abra el archivo temp.csv con Visual Studio u otro editor de texto. Reemplace la cadena "Hello" por su traducción al español, "Hola".

  4. Guarde el archivo temp.csv.

  5. Utilice el comando siguiente para generar el archivo de recursos localizado.

    LocBaml /generate /trans:temp.csv LocalizingWpfInWf.g.en-US.resources /out:. /cul:es-ES
    

    Se crea el archivo LocalizingWpfInWf.g.es-ES.resources en la carpeta obj\Debug.

  6. Utilice el comando siguiente para generar el ensamblado satélite localizado.

    Al.exe /out:LocalizingWpfInWf.resources.dll /culture:es-ES /embed:LocalizingWpfInWf.Form1.es-ES.resources /embed:LocalizingWpfInWf.g.es-ES.resources
    

    Se crea el archivo LocalizingWpfInWf.resources.dll en la carpeta obj\Debug.

  7. Copie el archivo LocalizingWpfInWf.resources.dll en la carpeta bin\Debug\es-ES del proyecto. Reemplace el archivo existente.

  8. Ejecute LocalizingWpfInWf.exe, que se encuentra en la carpeta bin\Debug del proyecto. No vuelva a generar la aplicación, pues de lo contrario se sobrescribirá el ensamblado satélite.

    La aplicación muestra las cadenas localizadas en lugar de las cadenas en inglés.

Vea también

Tareas

Tutorial: Adaptar formularios Windows Forms

Referencia

ElementHost

WindowsFormsHost

Conceptos

Cómo: Localizar una aplicación

Otros recursos

WPF Designer