Share via


Cómo: Localizar una aplicación

Actualización: noviembre 2007

En este tutorial se explica cómo crear una aplicación localizada utilizando la herramienta LocBaml.

Nota

La herramienta LocBaml no es una aplicación lista para producción. Se presenta como un ejemplo que utiliza algunas de las API de localización y muestra cómo podría escribirse una herramienta de localización.

Este tema contiene las secciones siguientes.

  • Información general
  • Requisitos   
  • Crear una aplicación de ejemplo
  • Crear el ensamblado satélite de recursos de idioma neutros
  • Generar la herramienta LocBaml
  • Utilizar LocBaml para analizar un archivo
  • Traducir el contenido localizable
  • Utilizar LocBaml para generar un nuevo archivo .resources.dll
  • Algunas sugerencias para utilizar LocBaml
  • Pasos adicionales
  • Temas relacionados

Información general

En esta explicación se facilita un enfoque paso a paso para localizar una aplicación. En primer lugar, se prepara la aplicación para que se pueda extraer el texto que se traducirá. Una vez traducido el texto, se combinará el texto traducido en una nueva copia de la aplicación original.

Requisitos   

Durante este tutorial, utilizará Microsoft build engine (MSBuild), que es un compilador que se ejecuta desde la línea de comandos.

También se le pedirá que utilice un archivo de proyecto. Para obtener instrucciones sobre cómo utilizar MSBuild y archivos de proyecto, vea Generar e implementar aplicaciones de Windows Presentation Foundation.

En todos los ejemplos de este tutorial se utiliza la referencia cultural en-US (inglés de EE. UU.). Esto le permite recorrer los pasos de los ejemplos sin tener que instalar otro idioma.

Crear una aplicación de ejemplo

En este paso, preparará la aplicación para la localización. En los ejemplos de Windows Presentation Foundation (WPF), se proporciona un ejemplo la aplicación HelloApp que se utilizará en los ejemplos de código de este artículo. Si desea utilizar este ejemplo, descargue los archivos Lenguaje de marcado de aplicaciones extensible (XAML) desde Ejemplo LocBaml Tool.

  1. Programe la aplicación hasta el punto donde desea iniciar la localización.

  2. Especifique el idioma de programación en el archivo de proyecto para que MSBuild genere un ensamblado principal y un ensamblado satélite (un archivo con la extensión .resources.dll) que contendrá los recursos de idioma neutros. El archivo de proyecto del ejemplo HelloApp es HelloApp.csproj. En ese archivo, el idioma de programación se identifica como se muestra a continuación:

    <UICulture>en-US</UICulture>

  3. Agregue UID a los archivos XAML. Lo UID se utilizan para realizar el seguimiento de los cambios efectuados en los archivos e identificar los elementos que se deben traducir. Para agregar UID a los archivos, ejecute updateuid en el archivo de proyecto:

    msbuild /t:updateuid helloapp.csproj

    Para comprobar que no hay ningún UID duplicado ni ausente, ejecute checkuid:

    msbuild /t:checkuid helloapp.csproj

    Después de ejecutar updateuid, los archivos deberían contener UID. Por ejemplo, en el archivo Pane1.xaml de HelloApp, busque lo siguiente:

    <StackPanel x:Uid="StackPanel_1">

      <TextBlock x:Uid="TextBlock_1">Hello World</TextBlock>

      <TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock>

    </StackPanel>

Crear el ensamblado satélite de recursos de idioma neutros

Una vez configurada la aplicación para generar un ensamblado satélite de recursos de idioma neutros, se genera la aplicación. Con ello se genera el ensamblado principal de la aplicación, así como el ensamblado satélite de recursos de idioma neutros que LocBaml necesita para la localización. Para generar la aplicación:

  1. Compile HelloApp para crear un archivo biblioteca de vínculos dinámicos (DLL):

    msbuild helloapp.csproj

  2. El ensamblado de la aplicación principal recién creado, HelloApp.exe, se crea en la carpeta siguiente:

    C:\HelloApp\Bin\Debug\

  3. El ensamblado satélite de recursos de idioma neutros recién creado, HelloApp.resources.dll, se crea en la carpeta siguiente:

    C:\HelloApp\Bin\Debug\en-US\

Generar la herramienta LocBaml

  1. Todos los archivos necesarios para generar LocBaml se encuentran en los ejemplos de WPF. Descargue los archivos de C# del ejemplo Ejemplo LocBaml Tool.

  2. Desde la línea de comandos, ejecute el archivo de proyecto (locbaml.csproj) para generar la herramienta:

    msbuild locbaml.csproj

  3. Vaya al directorio Bin\Release para buscar el archivo ejecutable recién creado (locbaml.exe). Ejemplo, C:\LocBaml\Bin\Release\locbaml.exe.

  4. Las opciones que puede especificar al ejecutar LocBaml son:

    • parse o -p: Analiza los archivos Baml, de recursos o DLL para generar un archivo .csv o .txt.

    • generate o -g: Genera un archivo binario localizado utilizando un archivo traducido.

    • out u -o [filedirectory]: Nombre del archivo de salida.

    • culture o -cul [culture]: Configuración regional de los ensamblados de salida.

    • translation o -trans [translation.csv]: Archivo traducido o localizado.

    • asmpath o -asmpath: [filedirectory]: Si el código XAML contiene controles personalizados, debe indicar la asmpath al ensamblado de controles personalizados.

    • nologo: No muestra ningún logotipo ni información de copyright.

    • verbose: Muestra información del modo detallado.

    Nota

    Si necesita una lista de las opciones mientras ejecuta la herramienta, escriba LocBaml.exe y presione ENTRAR.

Utilizar LocBaml para analizar un archivo

Ahora que ha creado la herramienta LocBaml, está listo para utilizarla a fin de analizar HelloApp.resources.dll y extraer el contenido de texto que se localizará.

  1. Copie LocBaml.exe en la carpeta bin\debug de la aplicación, donde se creó el ensamblado de la aplicación principal.

  2. Para analizar el archivo de ensamblado satélite y almacenar el resultado como un archivo .csv, utilice el comando siguiente:

    LocBaml.exe /parse en-US/HelloApp.resources.dll /out:Hello.csv

    Nota

    Si el archivo de entrada, HelloApp.resources.dll, no está en el mismo directorio que LocBaml.exe, mueva uno de los archivos para que ambos estén en el mismo directorio.

  3. Cuando se ejecuta LocBaml para analizar los archivos, el resultado se compone de siete campos delimitados por comas (archivos .csv) o tabuladores (archivos .txt). A continuación se muestra el archivo .csv analizado para HelloApp.resources.dll:

    HelloApp.g.en-US.resources:window1.baml,Stack1:System.Windows.Controls.StackPanel.$Content,Ignore,FALSE, FALSE,,#Text1;#Text2;

    HelloApp.g.en-US.resources:window1.baml,Text1:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Hello World

    HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Goodbye World

    Los siete campos son:

    1. BAML Name. Nombre del recurso BAML con respecto al ensamblado satélite del idioma de origen.

    2. Resource Key. El identificador de recursos localizado.

    3. Category. Tipo del valor. Visite Atributos y comentarios sobre localización.

    4. Readability. Si un localizador puede leer el valor. Visite Atributos y comentarios sobre localización.

    5. Modifiability. Si un localizador puede modificar el valor. Visite Atributos y comentarios sobre localización.

    6. Comments. Descripción adicional del valor para ayudar a determinar cómo se localiza. Visite Atributos y comentarios sobre localización.

    7. Value. Valor del texto que se traducirá a la referencia cultural deseada.

    En la tabla siguiente se muestran las asignaciones de estos campos a los valores delimitados del archivo .csv:

    BAML name

    Resource key

    Category

    Readability

    Modifiability

    Comments

    Value

    HelloApp.g.en-US.resources:window1.baml

    Stack1:System.Windows.Controls.StackPanel.$Content

    Ignore

    FALSE

    FALSE

    #Text1;#Text2

    HelloApp.g.en-US.resources:window1.baml

    Text1:System .Windows .Controls .TextBlock. Contenido de $

    None

    TRUE

    TRUE

    Hello World

    HelloApp.g.en-US.resources:window1.baml

    Text2:System.Windows.Controls.TextBlock.$Content

    None

    TRUE

    TRUE

    Goodbye World

    Observe que el campo Comments no contiene valores en ningún caso; si un campo no tiene valor, está vacío. Observe también que el elemento de la primera fila no legible ni modificable y que el valor de Category es "Ignore", todo lo cual nos indica que se trata de un valor no localizable.

  4. Para facilitar la detección de los elementos localizables en los archivos analizados, en particular si son de gran tamaño, puede ordenar o filtrar los elementos por Category, Readability y Modifiability. Por ejemplo, puede filtrar para que no aparezcan los valores ilegibles o no modificables.

Traducir el contenido localizable

Utilice cualquier herramienta que tenga a su disposición para traducir el contenido extraído. Una forma adecuada de hacerlo es escribir los recursos en un archivo .csv, verlos en Microsoft Excel y realizar los cambios de la traducción en la última columna (valor).

Utilizar LocBaml para generar un nuevo archivo .resources.dll

El contenido que se identificó al analizar HelloApp.resources.dll mediante LocBaml se ha traducido y debe volver a combinarse en la aplicación original. Utilice la opción generate o -g para generar un nuevo archivo .resources.dll.

  1. Utilice la sintaxis siguiente para generar un nuevo archivo HelloApp.resources.dll. Marque la referencia cultural como en-US (/cul:en-US).

    LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-US

    Nota

    Si el archivo de entrada, Hello.csv, no está en el mismo directorio que el archivo ejecutable, LocBaml.exe, mueva uno de los archivos para que ambos estén en el mismo directorio.

  2. Reemplace el archivo HelloApp.resources.dll anterior en el directorio C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll con el archivo HelloApp.resources.dll recién creado.

  3. Ahora, "Hello World" y "Goodbye World" deben estar traducidos en la aplicación.

  4. Para traducir a una referencia cultural diferente, utilice la referencia cultural del idioma al que está traduciendo. En el ejemplo siguiente se muestra cómo traducir al francés canadiense:

    LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CA

  5. En el mismo ensamblado que el ensamblado de la aplicación principal, cree una nueva carpeta específica de la referencia cultural para alojar el nuevo ensamblado satélite. Para el francés canadiense, la carpeta sería fr-CA.

  6. Copie el ensamblado satélite generado en la nueva carpeta.

  7. Para probar el nuevo ensamblado satélite, debe cambiar la referencia cultural bajo la que se ejecutará la aplicación. Hay dos maneras de hacerlo:

    • Cambie la configuración regional del su sistema operativo (Inicio | Panel de control | Configuración regional y de idioma).

    • En la aplicación, agregue el código siguiente a App.xaml.cs:

      <Application
          xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
          x:Class="SDKSample.App"
          x:Uid="Application_1"
          StartupUri="Window1.xaml">
      </Application>
      

Algunas sugerencias para utilizar LocBaml

  • Todos los ensamblados dependientes que definen controles personalizados se deben copiar en el directorio local de LocBaml o instalarse en la GAC. Esto es necesario porque la API de localización debe tener el acceso a los ensamblados dependientes cuando lea XAML binario (BAML).

  • Si el ensamblado principal está firmado, también deberá firmarse el archivo DLL de recursos generado, para que se cargue.

  • La versión del archivo DLL de recursos localizado deberá sincronizarse con la del ensamblado principal.

Pasos adicionales

Ahora, dispone de conocimientos básicos sobre cómo utilizar la herramienta LocBaml. Debe ser capaz de crear un archivo que contenga UID. Mediante la herramienta LocBaml, debe poder analizar un archivo para extraer el contenido localizable y, vez traducido, debe poder generar el archivo .resources.dll para combinar el contenido traducido. En este tema no se incluyen todos los detalles posibles, pero ahora usted tiene los conocimientos necesarios para utilizar LocBaml en la localización de aplicaciones.

Vea también

Conceptos

Globalización para Windows Presentation Foundation

Información general sobre el uso del diseño automático