Localizar a IU com o Translations Editor

O Translations Editor oferece uma visualização consolidada e editável de todos os seus recursos de string padrão e traduzidos.

Para uma introdução sobre como traduzir seu aplicativo para diferentes idiomas, leia Compatibilidade com diferentes idiomas e culturas.

Figura 1. O Translations Editor mostrando o texto do aplicativo antes da tradução.

Recursos de string

Os recursos de string para um projeto estão contidos em arquivos strings.xml. Seu projeto tem um arquivo strings.xml padrão que contém recursos de string no idioma padrão do aplicativo, aquele que você espera que a maioria dos usuários fale. Você também pode ter arquivos strings.xml traduzidos que contenham recursos de string para outros idiomas que você quer que seu aplicativo acomode.

Depois de concluir o arquivo strings.xml padrão, você mesmo poderá adicionar as traduções ou pagar um serviço profissional para fazê-las. De qualquer forma, você poderá aproveitar os recursos do Android Studio para gerenciar e testar textos localizáveis. Para mais informações sobre serviços de tradução profissional, consulte Solicitar serviços de tradução.

Abrir o Translations Editor

Você pode acessar o Translations Editor nos seguintes locais do Android Studio.

Abrir a partir da visualização Android

  1. No painel Project > Android à esquerda, selecione ModuleName > res > values.
  2. Clique com o botão direito do mouse no arquivo strings.xml e selecione Open Translations Editor.

    O Translations Editor exibe os pares de chave-valor do arquivo strings.xml.

    Observação: quando você tem arquivos strings.xml traduzidos, seu projeto tem várias pastas values correspondentes com sufixos indicando o idioma, como values-es para espanhol. Seu arquivo strings.xml padrão fica sempre na pasta values (sem sufixo).

A figura 1 mostra o texto padrão do aplicativo (neste caso, em inglês) no Translations Editor para um aplicativo simples antes do trabalho de tradução. O conteúdo dos arquivos strings.xml traduzidos aparecerá à direita da coluna Untranslatable, com uma coluna por idioma, conforme mostrado na figura 2.

Abrir a partir de strings.xml

Você pode acessar o Translations Editor a partir de qualquer um dos seus arquivos strings.xml.

  1. No painel Project > Android, à esquerda, selecione ModuleName > res > values.
  2. Clique duas vezes em strings.xml para abrir o arquivo para edição.
  3. Em strings.xml, clique no link Open editor no canto superior direito.

Observação: se você clicar no link Hide notification, o link Open editor desaparecerá. Para que ele volte a ser exibido, feche e reabra o projeto.

Abrir a partir do Design Editor

Você pode abrir o Translations Editor a partir do Design Editor do Layout Editor para editar o texto padrão e o traduzido para que se adaptem melhor ao seu layout. Para mais informações sobre como alternar idiomas no Design Editor, consulte Exibir texto traduzido no Design Editor.

  1. No painel Project > Android à esquerda, selecione ModuleName > res > layout.
  2. Clique duas vezes em content_main.xml para abrir o arquivo para edição.
  3. Clique na guia Design no canto inferior esquerdo para exibir o Design Editor.
  4. No Design Editor, selecione a lista suspensa Language .
  5. Selecione Edit Translations .

Configurar linhas não traduzíveis

No Translations Editor, você pode selecionar Unstranslatable para indicar que não quer que o texto da linha em questão seja traduzido. O texto que você não quer que seja traduzido pode ser um texto específico do produto, como nomes comerciais e marcas registradas, ou termos técnicos que não tenham tradução.

Quando você marca Untranslatable, a linha correspondente no arquivo strings.xml padrão adiciona translatable="false". No exemplo a seguir, EasyApp na linha superior não é traduzido porque é o nome do produto.

    <resources>
        <string name="app_name" translatable="false">EasyApp</string>
        <string name="action_settings">Settings</string>
        <string name="easy_app">I am a Simple App!</string>
        <string name="next_page">Next Page</string>
        <string name="second_page_message">I am the Second Page!</string>
        <string name="title_activity_second">SecondActivity</string>
    </resources>
    

Adicionar e excluir idiomas

O Translations Editor é compatível com BCP 47 e combina códigos de localidade e região (país) em uma única seleção para as localizações desejadas. Uma localidade define mais do que o idioma. Ela inclui a formatação específica do país para itens como data e hora, moedas e decimais.

Para adicionar um idioma, faça o seguinte:

  1. No Translations Editor, clique no ícone de globo .
  2. Na lista suspensa, selecione o idioma que você quer adicionar.

    O novo idioma aparece no Translations Editor, e uma pasta values-* com um arquivo strings.xml é adicionada ao projeto. Por exemplo, values-es para espanhol.

Para excluir um idioma, faça o seguinte:

Você pode excluir um idioma no Translations Editor excluindo todos os valores da coluna (consulte Editar, adicionar e excluir texto) ou pode excluir a pasta do projeto referente a esse idioma, da seguinte maneira:

  1. No painel Project > Android à esquerda, selecione ModuleName > res.
  2. Clique com o botão direito na pasta values-* do idioma que você quer excluir. Por exemplo, values-hi para hindi.
  3. Na lista suspensa, selecione Delete para excluir a pasta e o respectivo arquivo strings.xml.

Editar, adicionar e excluir texto

Você pode editar as configurações de texto diretamente no arquivo strings.xml ou pelo Translations Editor. Esta seção descreve a abordagem do Translations Editor. No Translations Editor, você pode editar, adicionar ou excluir texto por meio da visualização em lista ou pelo campo Translation na parte inferior do Translations Editor.

Figura 2. Visualização em lista na parte superior e o campo Translation na parte inferior.

Visualização em lista

Para editar ou adicionar texto, faça o seguinte:

  1. Clique duas vezes na célula em que você quer editar ou adicionar texto.
  2. Copie e cole usando os atalhos de teclado ou, se você tem um teclado compatível com diacríticos (sinais gráficos e de acentuação), digite diretamente na visualização em lista.
  3. Use a tecla Tab ou mova o cursor para fora do campo.

Para excluir texto, faça o seguinte:

  1. Clique duas vezes na célula que você quer excluir.
  2. Na visualização em lista, selecione o texto e pressione Delete.
  3. Use a tecla Tab ou mova o cursor para fora do campo.

Campo "Translation"

Para editar ou adicionar texto, faça o seguinte:

  1. Na visualização em lista, clique uma vez na célula em que você quer editar ou adicionar texto.
  2. No campo Translation, copie e cole usando os atalhos de teclado ou, se você tem um teclado compatível com diacríticos (sinais gráficos e de acentuação), digite diretamente no campo Translation.
  3. Use a tecla Tab ou mova o cursor para fora do campo.

Para excluir texto, faça o seguinte:

  1. Clique uma vez na célula que você quer excluir.
  2. No campo Translation, selecione o texto e pressione Delete.

Adicionar e excluir chaves

No Translation Editor, a coluna Key lista os identificadores exclusivos de cada item de dados nos arquivos strings.xml. Você pode adicionar e excluir chaves usando o Translations Editor. Quando você exclui uma chave, o Translations Editor também a exclui, junto com todas as traduções associadas a ela. O Translations Editor usa a refatoração "Safe Delete" para excluir uma chave, para que você saiba se o texto da chave é usado em outro local e ter a oportunidade de fazer os ajustes necessários antes de excluir a chave. A refatoração "Safe Delete" garante que seu código ainda seja compilado depois que você excluir a chave.

Para adicionar uma chave, faça o seguinte:

  1. No Translations Editor, clique em Add Key .
  2. Na caixa de diálogo, digite um nome de chave, o valor padrão e a localização do arquivo strings.xml padrão.

    Figura 3. Adicionar uma chave.

Para excluir uma chave, faça o seguinte:

  1. No Translations Editor, selecione a chave que você quer excluir.
  2. Clique em Remove Keys .
  3. Na caixa de diálogo Delete, decida se quer uma exclusão segura e se quer pesquisar em comentários e strings, e clique em OK.

    Figura 4. Caixa de diálogo "Delete".

    Se não houver referências (usos) à chave excluída ou se todas as referências puderem ser recolhidas com segurança, a chave será excluída. Caso contrário, o "Translations Editor" exibirá a caixa de diálogo Usages Detected com informações sobre os problemas detectados.

    Figura 5. Caixa de diálogo "Delete".

  4. Selecione View Usages para revisar o que será excluído. A caixa de diálogo Find Safe Delete Conflicts mostra todos os usos que não é seguro excluir, para que você possa editar o código correspondente.

    Figura 6. Usos inseguros.

  5. Clique com o botão direito do mouse em um uso para exibir o menu de contexto e selecione Jump to Source para fazer as alterações necessárias.
  6. No painel Find Safe Delete Conflicts, selecione Rerun Safe Delete para garantir que não haja outros usos que precisem de atenção.
  7. Quando os usos forem apagados, clique em Do Refactor para excluir a chave.

Corrigir erros

A figura 7 mostra o Translations Editor exibindo o conteúdo dos arquivos strings.xml em inglês, espanhol e francês. O texto em vermelho indica linhas com erros.

Figura 7. Texto em vermelho indica uma condição de erro que precisa ser corrigido.

Para corrigir um erro, faça o seguinte:

  1. Passe o mouse sobre o texto em vermelho para exibir uma explicação do problema e a respectiva resolução.
  2. Para corrigir um erro, passe o mouse sobre o texto em vermelho para exibir uma explicação do problema e a respectiva resolução.

Ao fazer alterações no Translations Editor, os arquivos strings.xml subjacentes serão atualizados com as alterações. Quando você fizer alterações em um arquivo strings.xml, a coluna correspondente no Translations Editor será atualizada com elas.

Exemplo de correções do Translations Editor:

  • A figura 7 mostra que a linha app_name está com a opção Untranslatable marcada, mas há uma tradução em espanhol na linha. Exclua a tradução em espanhol para corrigir o erro.
  • A figura 7 mostra que a linha next_page está sem tradução em francês. Use o teclado para copiar Page Suivante para a célula a fim de corrigir o erro. Uma operação de copiar e colar no teclado copia o texto com os diacríticos para a célula.

Exibir texto traduzido no Design Editor

Para ver como o texto traduzido será exibido no layout do app, alterne o texto entre as versões padrão e traduzidas no Design Editor, da seguinte maneira:

  1. No painel Project > Android à esquerda, selecione ModuleName > res > layout.
  2. Clique duas vezes em content_main.xml para abrir o arquivo para edição.
  3. Clique na guia Design no canto inferior esquerdo para exibir o Design Editor.
  4. No Design Editor, selecione a lista suspensa Language .
  5. Selecione Edit Translations .
  6. Selecione o idioma que você quer usar para ver o app.

    Figura 8. A lista suspensa de idiomas com espanhol selecionado.

O Design Editor exibe o layout do app no idioma selecionado, que nesse caso é o espanhol.

Figura 9. O Design Editor exibe o texto traduzido em espanhol.

Configurar o Design Editor para o idioma padrão

Para restaurar o idioma para o padrão, selecione es > Language .

Figura 10. Configurar para o idioma padrão.

Gerenciar e testar texto localizável

A plataforma Android e o Android Studio oferecem vários recursos para ajudar a gerenciar e testar o texto localizável do aplicativo. Esses recursos têm opções para ajudar a lidar com problemas com scripts da direita para a esquerda (RTL), como árabe ou hebraico. Testar seu texto localizável permite fazer ajustes no texto da IU e no layout antes de confirmar suas mensagens para o repositório de origem para serem enviadas para tradução posteriormente.

Refatorar seu projeto para compatibilidade com RTL

O Android Studio tem um comando de refatoração que é compatível com texto bidirecional nos elementos TextView, ConstraintLayout e LinearLayout. Isso permite seus app exibam texto em scripts da esquerda para a direita (LTR, na sigla em inglês) e da direita para a esquerda (RTL, na sigla em inglês) e que os usuários editem esses textos. O comando também oferece espelhamento automático de layouts de IU do aplicativo e de todos os widgets de visualização. Para ver a mudança de direção do texto e o espelhamento de layout, você também precisa definir as propriedades de direção de texto e layout no Layout Editor.

O procedimento a seguir mostra como refatorar seu projeto para que seja compatível com RTL:

  1. Selecione Refactor > Add RTL support where possible para exibir a caixa de diálogo mostrada na figura 11.

    Figura 11. Adicionar compatibilidade com RTL.

    • Se o elemento <application> do arquivo AndroidManifest.xml não tiver o atributo android:supportsRTL="true", você precisará marcar a caixa de seleção Update AndroidManifest.xml.
    • Se a targetSdkVersion do app é 17 ou posterior, selecione Replace Left/Right Properties with Start/End Properties. Nesse caso, suas propriedades precisam usar "start" e "end", em vez de "left" e "right". Por exemplo, android:paddingLeft se torna android:paddingStart.
    • Se a targetSdkVersion do app é 16 ou anterior, selecione Generate -v17 Versions. Nesse caso, o XML precisa usar os dois conjuntos de propriedades. Por exemplo, o XML precisa usar android:paddingLeft e android:paddingStart.
  2. Para exibir a janela Find Refactoring Preview, clique em Run.

    Figura 12. Verificar a visualização.

  3. Clique em Do Refactor.

Para mais informações sobre como refatorar seu projeto para compatibilidade com RTL, consulte Compatibilidade nativa com RTL no Android 4.2 (link em inglês).

Propriedades de direção de texto e layout

A janela "Properties" à direita oferece a propriedade textDirection para ser usada com widgets de texto e a propriedade layoutDirection para ser usada com widgets de layout para alterar a direção dos componentes de texto e layout. As propriedades de direção são listadas na janela Properties à direita e funcionam com API de nível 17 ou posterior.

Para ver a mudança da direção do texto e o espelhamento de layout, você também precisa refatorar o projeto para que seja compatível com RTL. Em inglês, a mudança de direção do texto move apenas a pontuação do lado direito para o lado esquerdo do texto, por exemplo, "Hello World!" torna-se "!Hello World". Para ver a mudança de texto LTR para RTL, você precisa usar um idioma RTL no seu aplicativo. Se você quer usar o inglês para ver o texto alternar para RTL para fins de teste, use pseudolocalidades. Pseudolocalidades são independentes do comando de refatoração e das propriedades de direção.

Para acessar e usar as propriedades de direção, faça o seguinte:

  1. No Layout Editor, selecione um widget de texto.
  2. Abra a janela Properties e procure a propriedade RTL que você quer usar.

    Para configurar o valor da propriedade, selecione um dos seguintes:

    • firstStrong: padrão para a visualização raiz. O primeiro caractere direcional forte determina a direção do parágrafo. Se não houver um caractere direcional forte, a direção do parágrafo será a direção do layout da visualização.
    • anyRtl: a direção do parágrafo será RTL se contiver algum caractere RTL forte e será LTR se contiver algum caractere LTR forte. Se não houver nenhum, a direção do parágrafo será a direção de layout resolvida da visualização.
    • ltr: a direção do parágrafo é LTR.
    • rtl: a direção do parágrafo é RTL.
    • locale: a direção do parágrafo vem da localidade do sistema.
    • inherit: padrão. Use a direção definida no pai.
  3. Para revisar o texto e o layout invertidos, execute o app.

Pseudolocalidades

Uma pseudolocalidade é uma localidade simulada projetada para assumir as características de idiomas que causam problemas de IU, layout, RTL e outros quando um aplicativo é traduzido. As pseudolocalidades oferecem traduções instantâneas e automáticas que podem ser lidas em inglês para todas as mensagens localizáveis. Isso possibilita que você detecte mensagens não traduzíveis no código-fonte.

Para mais informações sobre como usar pseudolocalidades, consulte Testar seu aplicativo com pseudolocalidades.