Partilhar via


Como: Localizar um aplicativo

Este tutorial explica como criar um aplicativo localizado usando a ferramenta LocBaml.

Observação

A ferramenta LocBaml não é um aplicativo pronto para produção. Ele é apresentado como um exemplo que usa algumas das APIs de localização e ilustra como você pode escrever uma ferramenta de localização.

Visão geral

Este artigo fornece uma abordagem passo a passo para localizar um aplicativo. Primeiro, prepara a sua aplicação para que o texto que será traduzido possa ser extraído. Depois que o texto for traduzido, você mesclará o texto traduzido em uma nova cópia do aplicativo original.

Criar um aplicativo de exemplo

Nesta etapa, você prepara seu aplicativo para localização. Nos exemplos do Windows Presentation Foundation (WPF), é fornecido um exemplo HelloApp que será usado para os exemplos de código nesta discussão. Se você quiser usar este exemplo, baixe os arquivos XAML (Extensible Application Markup Language) do LocBaml Tool Sample.

  1. Desenvolva seu aplicativo até o ponto em que deseja iniciar a localização.

  2. Especifique a linguagem de desenvolvimento no arquivo de projeto para que o MSBuild gere um assembly principal e um assembly satélite (um arquivo com a extensão .resources.dll) para conter os recursos de linguagem neutra. O arquivo de projeto no exemplo HelloApp é HelloApp.csproj. Nesse arquivo, você encontrará a linguagem de desenvolvimento identificada da seguinte forma:

    <UICulture>en-US</UICulture>

  3. Adicione Uids aos seus arquivos XAML. Os Uids são usados para controlar as alterações nos arquivos e identificar os itens que devem ser traduzidos. Para adicionar Uids aos seus ficheiros, execute updateuid no seu ficheiro de projeto:

    msbuild -t:updateuid helloapp.csproj

    Para verificar se você não tem Uids ausentes ou duplicados, execute checkuid:

    msbuild -t:checkuid helloapp.csproj

    Depois de executar updateuid, seus arquivos devem conter Uids. Por exemplo, no ficheiro Pane1.xaml de HelloApp, deve encontrar o seguinte:

    <StackPanel x:Uid="StackPanel_1">
      <TextBlock x:Uid="TextBlock_1">Hello World</TextBlock>
      <TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock>
    </StackPanel>
    

Criar o conjunto de satélite de recursos em linguagem neutra

Depois que o aplicativo é configurado para gerar um assembly satélite de recursos de linguagem neutra, você cria o aplicativo. Isso gera a assemblagem da aplicação principal, bem como a assemblagem de recursos de linguagem neutra satélite que é exigida pelo LocBaml para localização.

Para criar o aplicativo:

  1. Compile o HelloApp para criar uma biblioteca de vínculo dinâmico (DLL):

    msbuild helloapp.csproj

  2. O assembly do aplicativo principal recém-criado, HelloApp.exe, é criado na seguinte pasta: C:\HelloApp\Bin\Debug

  3. O recém-criado conjunto de satélites de recursos de linguagem neutra, HelloApp.resources.dll, é criado na seguinte pasta: C:\HelloApp\Bin\Debug\en-US

Crie a ferramenta LocBaml

  1. Todos os arquivos necessários para construir LocBaml estão localizados nos exemplos do WPF. Baixe os arquivos C# do LocBaml Tool Sample.

  2. Na linha de comando, execute o arquivo de projeto (locbaml.csproj) para criar a ferramenta:

    msbuild locbaml.csproj

  3. Vá para o diretório Bin\Release para encontrar o arquivo executável recém-criado (locbaml.exe). Exemplo: C:\LocBaml\Bin\Release\locbaml.exe

  4. As opções que você pode especificar ao executar o LocBaml são as seguintes.

    Opção Descrição
    parse ou -p Analisa Baml, recursos ou arquivos DLL para gerar um arquivo .csv ou .txt.
    generate ou -g Gera um arquivo binário localizado usando um arquivo traduzido.
    out ou -o {filedirectory] Nome do arquivo de saída.
    culture ou -cul {cultura} Localidade das assemblies de saída.
    translation ou -trans {translation.csv] Arquivo traduzido ou localizado.
    asmpath ou -asmpath {filedirectory] Se seu código XAML contiver controles personalizados, você deverá fornecer o asmpath para o assembly de controle personalizado.
    nologo Não exibe nenhum logotipo ou informações de direitos autorais.
    verbose Exibe informações detalhadas do modo.

    Observação

    Se você precisar de uma lista das opções quando estiver executando a ferramenta, digite LocBaml.exe e pressione Enter.

Use LocBaml para analisar um arquivo

Agora que criou a ferramenta LocBaml, está pronto para usá-la para analisar o HelloApp.resources.dll e extrair o conteúdo de texto a localizar.

  1. Copie LocBaml.exe para a pasta bin\debug do seu aplicativo, onde o assembly principal do aplicativo foi criado.

  2. Para analisar o ficheiro de assembly satélite e guardar a saída como um ficheiro .csv, use o seguinte comando:

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

    Observação

    Se o arquivo de entrada, HelloApp.resources.dll, não estiver no mesmo diretório que LocBaml.exe mova um dos arquivos para que ambos os arquivos estejam no mesmo diretório.

  3. Quando você executa LocBaml para analisar arquivos, a saída consiste em sete campos delimitados por vírgulas (arquivos.csv) ou guias (arquivos.txt). A seguir mostra o arquivo de .csv analisado para o HelloApp.resources.dll:

    Arquivo .csv analisado
    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,,Olá Mundo
    HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Adeus Mundo

    Os sete campos são:

    A tabela a seguir mostra como esses campos são mapeados para os valores delimitados do arquivo .csv:

    Denominação BAML Chave de recurso Categoria Legibilidade Modificabilidade Observações Valor
    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 Texto1:System.Windows.Controls.TextBlock.$Content Nenhum VERDADEIRO VERDADEIRO Olá, mundo
    HelloApp.g.en-US.resources:window1.baml Texto2:System.Windows.Controls.TextBlock.$Content Nenhum VERDADEIRO VERDADEIRO Adeus Mundo

    Observe que todos os valores para o campo Comentários não contêm valores; Se um campo não tiver um valor, ele estará vazio. Observe também que o item na primeira linha não é legível nem modificável e tem "Ignorar" como seu valor de categoria , o que indica que o valor não é localizável.

  4. Para facilitar a descoberta de itens localizáveis em arquivos analisados, particularmente em arquivos grandes, você pode classificar ou filtrar os itens por de Categoria, de Legibilidade e de Modificabilidade. Por exemplo, você pode filtrar valores ilegíveis e não modificáveis.

Traduzir o conteúdo localizável

Use qualquer ferramenta que você tenha disponível para traduzir o conteúdo extraído. Uma boa maneira de fazer isso é gravar os recursos em um arquivo .csv e visualizá-los no Microsoft Excel, fazendo alterações de tradução na última coluna (valor).

Use LocBaml para gerar um novo arquivo .resources.dll

O conteúdo que foi identificado pela análise HelloApp.resources.dll com LocBaml foi traduzido e deve ser mesclado de volta ao aplicativo original. Use a opção generate ou -g para gerar um novo arquivo .resources.dll.

  1. Use a sintaxe a seguir para gerar um novo arquivo HelloApp.resources.dll. Marque a cultura como en-US (/cul:en-US).

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

    Observação

    Se o arquivo de entrada, Hello.csv, não estiver no mesmo diretório que o executável, LocBaml.exe, mova um dos arquivos para que ambos os arquivos estejam no mesmo diretório.

  2. Substitua o arquivo HelloApp.resources.dll antigo no diretório C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll pelo arquivo HelloApp.resources.dll recém-criado.

  3. "Hello World" e "Goodbye World" devem agora ser traduzidos na sua candidatura.

  4. Para traduzir para uma cultura diferente, use a cultura do idioma para o qual você está traduzindo. O exemplo a seguir mostra como traduzir para francês-canadense:

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

  5. No mesmo assembly que o assembly do aplicativo principal, crie uma nova pasta específica da cultura para abrigar o novo assembly satélite. Para os franco-canadianos, a pasta seria o fr-CA.

  6. Copie a assemblagem de satélite gerada para a nova pasta.

  7. Para testar o novo assembly satélite, você precisa alterar a cultura sob a qual seu aplicativo será executado. Você pode fazer isso de duas maneiras:

    • Altere as configurações regionais do seu sistema operacional.

    • Em seu aplicativo, adicione o seguinte código para 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
      

Dicas para usar o LocBaml

  • Todos os assemblies dependentes que definem controles personalizados devem ser copiados para o diretório local do LocBaml ou instalados no GAC. Isso é necessário porque a API de localização deve ter acesso aos assemblies dependentes quando lê o XAML binário (BAML).

  • Se o assembly principal estiver assinado, a DLL do recurso gerado também deverá ser assinada para que seja carregada.

  • A versão da DLL do recurso localizado precisa ser sincronizada com o conjunto principal.

Ver também