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 ver uma introdução sobre como traduzir seu app para diferentes idiomas, leia Suporte a diferentes idiomas e culturas.

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

Recursos de string

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

Depois de concluir o arquivo strings.xml padrão, você poderá adicionar as traduções por conta própria 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 saber mais 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, o projeto tem várias pastas values correspondentes com sufixos indicando o idioma, como values-es para espanhol. O arquivo strings.xml padrão sempre fica na pasta values (sem sufixo).

A Figura 1 mostra o texto padrão do app (nesse caso, em inglês) no Translations Editor para um app 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 vai desaparecer. Para que ele volte a ser exibido, feche e reabra o projeto.

Abrir no Design Editor

Você pode abrir o Translations Editor no Design Editor do Layout Editor para editar o texto padrão e o traduzido para melhor se adaptarem ao layout. Para saber mais 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 traduzir pode se referir a textos específicos 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 tem suporte a 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 ou excluir texto) ou pode excluir a pasta do projeto referente ao idioma, da seguinte maneira:

  1. No painel Project > Android à esquerda, selecione ModuleNameModuleName > 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 com o Translations Editor. Esta seção descreve a abordagem do Translations Editor. No Translations Editor, é possível editar, adicionar ou excluir textos na visualização em lista ou no campo Translation na parte de baixo 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 adicionar texto ou editar.
  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 o texto 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 adicionar texto ou editar.
  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 o texto 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 Translations 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 uma chave é excluída, o Translations Editor também exclui a chave e todas as traduções associadas. 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 possa fazer as mudanças necessárias antes de excluí-la. A refatoração "Safe Delete" garante que o código ainda seja compilado depois que a chave for excluída.

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 executar a refatoração "Safe Delete" e se quer pesquisar em comentários e strings. Depois, 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 podem ser excluídos com segurança, 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. O texto em vermelho indica um erro que precisa ser corrigido.

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 mudanças no Translations Editor, os arquivos strings.xml subjacentes serão atualizados com essas mudanças. Quando você mudar um arquivo strings.xml, a coluna correspondente no Translations Editor será atualizada.

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 disponível. 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 na célula para 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 traduzida no Design Editor, da seguinte maneira:

  1. No painel Project > Android à esquerda, selecione ModuleNameModuleName > 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. 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 app. Esses recursos têm opções para ajudar a abordar problemas com scripts da direita para a esquerda (RTL, na sigla em inglês), como árabe ou hebraico. Testar o texto localizável permite fazer mudanças 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 oferece suporte a texto bidirecional nos elementos TextView, ConstraintLayout e LinearLayout. Isso permite que os apps mostrem 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 da IU do app 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> no seu arquivo AndroidManifest.xml não tiver o atributo android:supportsRTL="true", marque a caixa de seleção Update AndroidManifest.xml.
    • Se a targetSdkVersion do app for 17 ou mais recente, 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 passa a ser android:paddingStart.
    • Se a targetSdkVersion do app for 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 abrir a janela Find Refactoring Preview clique em Run.

    Figura 12. Verificar a visualização.

  3. Clique em Do Refactor.

Para saber mais sobre como refatorar seu projeto para suporte a RTL, consulte Suporte nativo a RTL no Android 4.2 (em inglês).

Propriedades de direção de texto e layout

A janela Properties, à direita, apresenta a propriedade textDirection, a ser usada com widgets de texto, e a propriedade layoutDirection, a ser usada com widgets de layout para mudar a direção dos componentes de texto e layout. As propriedades de direção estão listadas na janela Properties, à direita, e funcionam com API de nível 17 ou mais recente.

Para ver a mudança da direção do texto e o espelhamento de layout, você também precisa refatorar o projeto para que ele ofereça suporte ao modo 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!" passa a ser "!Hello World". Para ver a mudança de texto de LTR para RTL, é necessário usar um idioma RTL no seu app. Se você quiser usar o inglês e ver a mudança do texto para RTL como um 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 mesma do layout da visualização.
    • anyRtl: a direção do parágrafo será RTL caso ele contenha um caractere RTL forte e será LTR caso contenha algum caractere LTR forte. Se não houver nenhum caractere forte, a direção do parágrafo será a mesma do layout definido 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, entre outros problemas de tradução quando um app é 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 saber mais sobre como usar as pseudolocalidades, consulte Testar o app com pseudolocalidades.