Share via


Como: Localizar um Aplicativo

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

ObservaçãoObservação:

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

Este tópico contém as seguintes seções.

  • Visão Geral
  • Requisitos
  • Crie um aplicativo de exemplo
  • Crie o assembly satélite com recursos de idioma neutro
  • Compile a ferramenta LocBaml
  • Use LocBaml para analisar um arquivo
  • Traduza o conteúdo localizável
  • Use LocBaml para gerar um novo arquivo .resources.dll
  • Algumas dicas para usar LocBaml
  • O Que Mais Há
  • Tópicos relacionados

Visão Geral

Esta discussão oferece uma abordagem passo a passo para fazer a localização de um aplicativo. Primeiro, você preparará o seu aplicativo para que o texto a ser traduzido possa ser extraído. Após a conversão do texto, você irá inserir o texto traduzido em uma nova cópia do aplicativo original.

Requisitos

No decorrer dessa discussão, você usará Mecanismo de compilação Microsoft (MSBuild), que é um compilador que é executado a partir de linha de comando.

Além disso, você receberá instruções para usar um arquivo de projeto. Para obter instruções sobre como usar MSBuild e arquivos de projeto, consulte Criando e implantando aplicativos do Windows Presentation Foundation.

Todos os os exemplos nesta discussão usam en-US (inglês dos EUA) como a cultura. Isso permite que você trabalhe durante as etapas dos exemplos sem instalar um idioma diferente.

Crie um aplicativo de exemplo

Nesta etapa, você preparará o aplicativo para a localização. Nos exemplos Windows Presentation Foundation (WPF), um HelloApp de exemplo é fornecido que será usado para os exemplos de código nesta discussão. Se você deseja usar esse exemplo, baixe os arquivos Extensible Application Markup Language (XAML) de Exemplo de ferramenta LocBaml.

  1. Desenvolva o aplicativo até o ponto onde você deseja iniciar a localização.

  2. Especifique o idioma de desenvolvimento no arquivo de projeto para que MSBuild gere um conjunto de módulos (assembly) principal e um conjunto de módulos satélite (um arquivo com a extensão resources.dll) para conter os recursos de idioma neutro. O arquivo de projeto na amostra HelloApp for HelloApp.csproj. Nesse arquivo, você encontrará a linguagem de desenvolvimento identificada da seguinte maneira:

    <UICulture>en-US</UICulture>

  3. Adicione UIDs a seus arquivos XAML. UIDs são usados para manter controle das alterações em arquivos e para identificar itens que devem ser traduzidos. Para adicionar UIDs em seus arquivos, execute updateuid no seu arquivo de projeto:

    msbuild /t:updateuid helloapp.csproj

    Para verificar se há UIDs ausentes ou duplicados, execute checkuid:

    msbuild /t:checkuid helloapp.csproj

    Depois de executar updateuid, seus arquivos devem conter UIDs. Por exemplo, no arquivo Pane1.xaml de HelloApp, você 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>

Crie o assembly satélite com recursos de idioma neutro

Depois que o aplicativo é configurado para gerar um assembly satélite com os recursos de idioma neutro, você cria o aplicativo. Isso gera o assmbly principal de aplicativos, bem como o assembly satélite com os recursos de idioma neutro exigida por LocBaml para a localização. Para compilar o aplicativo:

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

    msbuild helloapp.csproj

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

    C:\HelloApp\Bin\Debug\

  3. O assembly satélite de recursos de idioma neutro recém-criado, HelloApp.resources.dll, é criado na pasta a seguir:

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

Compile a ferramenta LocBaml

  1. Todos os arquivos necessários para compilar LocBaml encontram-se nos exemplos de WPF. Baixe os arquivos C# do exemplo Exemplo de ferramenta LocBaml.

  2. A partir de linha de comando, execute o arquivo de projeto (locbaml.csproj) para compilar a ferramenta:

    msbuild locbaml.csproj

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

  4. As opções que você pode especificar quando executar LocBaml são:

    • parse ou -p: Analisa arquivos Baml, de recursos, ou DLL para gerar um arquivo .csv ou .txt.

    • generate ou -g: Gera um arquivo binário localizado usando um arquivo traduzido.

    • out ou -o [diretórioarquivo] : Nome de arquivo de saída.

    • culture ou -cul [cultura] : Localidade dos assemblies de saída.

    • translation ou -trans [tradução.csv]: Arquivo traduzido ou localizado.

    • asmpath ou -asmpath: [diretórioarquivos]: Se o código XAML contiver controles personalizados, você deve fornecer o asmpath para o assembly do controle personalizado.

    • nologo: Não exibe nenhuma informação de logotipo ou direitos autorais.

    • verbose: Exibe informações sobre o modo detalhado.

    ObservaçãoObservação:

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

Use LocBaml para analisar um arquivo

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

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

  2. Para analisar o arquivo de assembly satélite e armazenar a saída em um arquivo .csv, use o seguinte comando:

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

    ObservaçãoObservação:

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

  3. Quando você executar LocBaml para analisar arquivos, a saída consiste em sete campos delimitados por vírgulas (arquivos .csv) ou tabulação (arquivos .txt). Veja, a seguir, o arquivo .csv de análise para o 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

    Os sete campos são:

    1. BAML Name. O nome do recurso BAML relativo ao assembly satélite no idioma original.

    2. Resource Key. O identificador do recurso localizado.

    3. Category. O tipo de valor. Consulte Localization Attributes and Comments.

    4. Readability. Se o valor pode ser lido por um localizador. Consulte Localization Attributes and Comments.

    5. Modifiability. Se o valor pode ser modificado por um localizador. Consulte Localization Attributes and Comments.

    6. Comments. Descrição adicional do valor para ajudar a determinar como um valor é localizado. Consulte Localization Attributes and Comments.

    7. Value. O valor de texto a traduzir para a cultura desejada.

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

    BAML name

    Resource key

    Category (Categoria)

    Readability

    Modifiability

    Comentários

    Valor

    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

    Nenhum

    TRUE

    TRUE

    Hello World

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

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

    Nenhum

    TRUE

    TRUE

    Goodbye World

    Observe que todos os valores do campo Comments não contêm nenhum valor; se um campo não tiver um valor, ele estará vazio. Também observe que o item na primeira linha não é legível e nem modificável, e tem "Ignore" como seu valor Category; todos estes valores indicam que o valor é não localizável.

  4. Para facilitar a descoberta de itens localizáveis em arquivos analisados, especialmente em grandes arquivos, você pode classificar ou filtrar os itens por Category, Readability e Modifiability. Por exemplo, você pode aplicar um filtro que exclui valores não modificáveis e ilegíveis.

Traduza o conteúdo localizável

Use qualquer ferramenta que você tem disponível para traduzir o conteúdo extraído. Uma boa maneira para fazer isso é gravar os recursos em um arquivo .csv e exibi-los no Microsoft Excel, fazendo as mudanças da tradução na última coluna (valor).

Use LocBaml para gerar um novo arquivo .resources.dll

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

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

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

    ObservaçãoObservação:

    Se o arquivo de entrada, Hello.csv , não está no mesmo diretório enquanto move o executável, LocBaml.exe, um dos arquivos para que sejam sistema autônomo dois arquivos no mesmo diretório.

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

  3. "Hello World" e "Goodbye World " agora devem estar traduzidos em seu aplicativo.

  4. Para traduzir para uma cultura diferente, use a cultura do idioma para o qual você estiver convertendo. O exemplo a seguir mostra como converter para francês canadense:

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

  5. No mesmo assembly em que se encontra o assembly principal do aplicativo, crie uma nova pasta específica da cultura para abrigar o novo assembly satélite. Para francês canadense, a pasta seria fr-CA.

  6. Copie o assembly satélite gerado para a nova pasta.

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

    • Alterar as configurações regionais do sistema operacional (Iniciar | Painel de controle | Regionais opções e de idiomas).

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

Algumas dicas para usar LocBaml

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

  • Se o assembly principal for assinado, o DLL de recursos gerado também deve ser assinado para que ele seja carregado.

  • A versão do DLL de recurso localizado precisa ser sincronizado com o assembly principal.

O Que Mais Há

Agora você deve ter um entendimento básico de como usar a ferramenta LocBaml. Você deve ser capaz de montar um arquivo que contém UIDs. Usando a ferramenta LocBaml, você deve ser capaz analisar um arquivo para extrair o conteúdo localizável, e depois que o conteúdo for traduzido você deve ser capaz de gerar um arquivo .resources.dll que mescla o conteúdo traduzido. Este tópico não inclui todos os detalhes possíveis, mas agora você tem o conhecimento necessário para usar LocBaml na localização de seus aplicativos.

Consulte também

Conceitos

Globalização para o Windows Presentation Foundation

Visão Geral do Uso de Layout Automático