Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial se explica cómo crear una aplicación localizada mediante la herramienta LocBaml.
Nota:
La herramienta LocBaml no es una aplicación lista para producción. Se presenta como un ejemplo que usa algunas de las API de localización y muestra cómo puede escribir una herramienta de localización.
Información general
En este artículo se proporciona un enfoque paso a paso para localizar una aplicación. En primer lugar, prepare la aplicación para que se pueda extraer el texto que se traducirá. Una vez traducido el texto, se combina el texto traducido en una nueva copia de la aplicación original.
Crear una aplicación de ejemplo
En este paso, preparas tu app para la localización. En los ejemplos de Windows Presentation Foundation (WPF), se proporciona un ejemplo helloApp que se usará para los ejemplos de código de esta discusión. Si quieres usar este ejemplo, descarga los archivos de Lenguaje de marcado extensible de aplicaciones (XAML) del ejemplo de herramienta LocBaml.
Desarrolle la aplicación hasta el punto en el que desea iniciar la localización.
Especifique el lenguaje de desarrollo en el archivo del proyecto para que MSBuild genere un ensamblado principal y un ensamblado satélite (un archivo con la extensión .resources.dll) para contener los recursos de lenguaje neutro. El archivo de proyecto del ejemplo HelloApp es HelloApp.csproj. En ese archivo, encontrará el lenguaje de desarrollo identificado como se indica a continuación:
<UICulture>en-US</UICulture>
Agregue Uids a los archivos XAML. Los uids se usan para realizar un seguimiento de los cambios en los archivos e identificar los elementos que se deben traducir. Para agregar Uids a los archivos, ejecute
updateuid
en el archivo del proyecto:msbuild -t:updateuid helloapp.csproj
Para comprobar que no hay Uids faltantes ni duplicados, ejecute
checkuid
:msbuild -t:checkuid helloapp.csproj
Después de ejecutar
updateuid
, los archivos deben contener Uids. Por ejemplo, en el archivo Pane1.xaml de HelloApp, debería encontrar lo siguiente:<StackPanel x:Uid="StackPanel_1"> <TextBlock x:Uid="TextBlock_1">Hello World</TextBlock> <TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock> </StackPanel>
Creación del ensamblado satélite de recursos de lenguaje neutro
Una vez configurada la aplicación para generar un ensamblado satélite de recursos de lenguaje neutro, compile la aplicación. Esto genera el ensamblado de aplicación principal, así como el ensamblado satélite de recursos de lenguaje neutro requerido por LocBaml para la localización.
Para compilar la aplicación:
Compile HelloApp para crear una biblioteca de vínculos dinámicos (DLL):
msbuild helloapp.csproj
El ensamblado de aplicación principal recién creado, HelloApp.exe, se crea en la siguiente carpeta: C:\HelloApp\Bin\Debug
El ensamblaje satélite de recursos de idioma neutral recién creado, HelloApp.resources.dll, se crea en la carpeta siguiente: C:\HelloApp\Bin\Debug\en-US
Compilación de la herramienta LocBaml
Todos los archivos necesarios para compilar LocBaml se encuentran en los ejemplos de WPF. Descargue los archivos de C# del ejemplo de herramienta LocBaml.
Desde la línea de comandos, ejecute el archivo del proyecto (locbaml.csproj) para compilar la herramienta:
msbuild locbaml.csproj
Vaya al directorio Bin\Release para buscar el archivo ejecutable recién creado (locbaml.exe). Ejemplo: C:\LocBaml\Bin\Release\locbaml.exe
Las opciones que puede especificar al ejecutar LocBaml son las siguientes.
Opción Descripción parse
o-p
Analiza los archivos Baml, resources o DLL para generar un archivo .csv o .txt. generate
o-g
Genera un archivo binario localizado mediante un archivo traducido. out
o-o
{directorio de archivos]Nombre del archivo de salida. culture
o-cul
{cultura]Configuración regional de ensamblajes de salida. translation
o-trans
{translation.csv]Archivo traducido o localizado. asmpath
o-asmpath
{directorio de archivos]Si el código XAML contiene controles personalizados, debes proporcionar el asmpath
al ensamblado del control personalizado.nologo
No muestra información sobre el logotipo ni los derechos de autor. verbose
Muestra información detallada del modo. Nota:
Si necesita una lista de las opciones al ejecutar la herramienta, escriba
LocBaml.exe
y presione Entrar.
Uso de LocBaml para analizar un archivo
Ahora que ha creado la herramienta LocBaml, está listo para usarla y analizar HelloApp.resources.dll, con el fin de extraer el contenido de texto que se va a localizar.
Copie LocBaml.exe en la carpeta bin\debug de la aplicación, donde se creó el ensamblado de aplicación principal.
Para analizar el archivo de ensamblado satélite y almacenar la salida como un archivo .csv, use el siguiente comando:
LocBaml.exe /parse HelloApp.resources.dll /out:Hello.csv
Nota:
Si el archivo de entrada, HelloApp.resources.dll, no está en el mismo directorio que LocBaml.exe mover uno de los archivos para que ambos archivos estén en el mismo directorio.
Al ejecutar LocBaml para analizar archivos, la salida consta de siete campos delimitados por comas (archivos.csv) o pestañas (archivos.txt). A continuación se muestra el archivo de .csv analizado para el HelloApp.resources.dll:
Archivo .csv procesado 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,,Hola Mundo HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Adiós Mundo Los siete campos son:
Nombre de BAML. Nombre del recurso BAML con respecto al ensamblaje satélite del idioma fuente.
Clave de recurso. Identificador de recurso localizado.
Categoría. Tipo de valor. Consulte Atributos y comentarios de localización.
Legibilidad. Indica si un localizador puede leer el valor. Consulte Atributos y comentarios de localización.
Modificabilidad. Si un localizador puede modificar el valor. Consulte Atributos y comentarios de localización.
Comentarios. Descripción adicional del valor para ayudar a determinar cómo se localiza un valor. Consulte Atributos y comentarios de localización.
Valor. El valor de texto para traducir a la cultura deseada.
En la tabla siguiente se muestra cómo estos campos se asignan a los valores delimitados del archivo .csv:
Nombre BAML Clave de recurso Categoría Legibilidad Modificabilidad Comentarios Importancia HelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$Content Ignorar FALSO FALSO #Text1;#Text2 HelloApp.g.en-US.resources:window1.baml Text1:System.Windows.Controls.TextBlock.$Content Ninguno VERDADERO VERDADERO Hola mundo HelloApp.g.en-US.resources:window1.baml Text2:System.Windows.Controls.TextBlock.$Content Ninguno VERDADERO VERDADERO Adiós mundo Observe que todos los valores del campo Comentarios no contienen valores; si un campo no tiene un valor, está vacío. Observe también que el elemento de la primera fila no es legible ni modificable y tiene "Ignore" como su valor Category , todos los cuales indican que el valor no es localizable.
Para facilitar la detección de elementos localizables en archivos analizados, especialmente en archivos grandes, puede ordenar o filtrar los elementos por Categoría, Legibilidad y Modificabilidad. Por ejemplo, puede filtrar los valores no legibles y no modificables.
Traducción del contenido localizable
Use cualquier herramienta que tenga disponible para traducir el contenido extraído. Una buena manera de hacerlo es escribir los recursos en un archivo .csv y verlos en Microsoft Excel, realizando cambios de traducción en la última columna (valor).
Uso de LocBaml para generar un nuevo archivo .resources.dll
El contenido identificado mediante el análisis HelloApp.resources.dll con LocBaml se ha traducido y debe combinarse de nuevo en la aplicación original. Use la generate
opción o -g
para generar un nuevo archivo .resources.dll.
Use la siguiente sintaxis para generar un nuevo archivo HelloApp.resources.dll. Marque la referencia cultural como en-US (/cul:en-US).
LocBaml.exe /generate 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 ejecutable, LocBaml.exe, mueva uno de los archivos para que ambos archivos estén en el mismo directorio.
Reemplace el archivo HelloApp.resources.dll antiguo en el directorio C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll por el archivo deHelloApp.resources.dll recién creado.
"Hola mundo" y "Adiós mundo" ahora deben traducirse en la aplicación.
Para traducir a una referencia cultural diferente, use la referencia cultural del idioma al que se va a traducir. En el ejemplo siguiente se muestra cómo traducir a francés-canadiense:
LocBaml.exe /generate HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CA
En el mismo ensamblado que el ensamblado de aplicación principal, cree una nueva carpeta específica de la referencia cultural para hospedar el nuevo ensamblado satélite. En francés-canadiense, la carpeta sería fr-CA.
Copie el ensamblado satélite generado en la nueva carpeta.
Para probar el nuevo conjunto satélite, debe cambiar la configuración regional bajo la cual se ejecutará su aplicación. Puede hacerlo de una de las maneras siguientes:
Cambie la configuración regional del sistema operativo.
En la aplicación, agregue el código siguiente a App.xaml.cs:
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SDKSample.App" x:Uid="Application_1" StartupUri="Window1.xaml"> </Application>
using System.Windows; using System.Globalization; using System.Threading; namespace SDKSample { public partial class App : Application { public App() { // Change culture under which this application runs CultureInfo ci = new CultureInfo("fr-CA"); Thread.CurrentThread.CurrentCulture = ci; Thread.CurrentThread.CurrentUICulture = ci; } } }
Imports System.Windows Imports System.Globalization Imports System.Threading Namespace SDKSample Partial Public Class App Inherits Application Public Sub New() ' Change culture under which this application runs Dim ci As New CultureInfo("fr-CA") Thread.CurrentThread.CurrentCulture = ci Thread.CurrentThread.CurrentUICulture = ci End Sub End Class End Namespace
Sugerencias para usar LocBaml
Todos los ensamblados dependientes que definen controles personalizados deben copiarse en el directorio local de LocBaml o instalarse en la GAC. Esto es necesario porque la API de localización debe tener acceso a los ensamblados dependientes cuando lee el XAML binario (BAML).
Si el ensamblado principal está firmado, el archivo DLL del recurso generado también debe estar firmado para que se cargue.
La versión del archivo DLL de recursos localizados debe sincronizarse con el ensamblado principal.
Consulte también
- globalización de para wpf
- Información general sobre el uso del diseño automático
.NET Desktop feedback