Conceitos e implementação do Jetpack Compose
O Android é usado por muitos dispositivos em várias regiões. Para alcançar o maior número possível de usuários, verifique se o app processa textos, arquivos de áudio, números, moedas e gráficos da maneira correta nas localidades em que ele será usado.
Nesta página, descrevemos algumas práticas recomendadas para localização de apps Android.
Você precisa ter conhecimento prático de Kotlin ou da linguagem de programação Java e estar familiarizado com carregamento de recursos do Android, declaração de elementos da interface do usuário em XML, considerações de desenvolvimento, como o ciclo de vida da atividade, e princípios gerais de internacionalização e localização.
Uma das práticas recomendadas é usar o framework de recursos do Android para separar o máximo possível os aspectos localizados do app da funcionalidade principal:
- Coloque a maior parte ou todo o conteúdo da interface do usuário do app em arquivos de recurso, conforme descrito nesta página e na Visão geral de recursos de app.
- O comportamento da interface do usuário, por outro lado, é orientado pelo código baseado em Kotlin ou Java. Por exemplo, se os usuários inserirem dados que precisam ser formatados ou classificados de forma diferente dependendo da localidade, use o Kotlin ou a linguagem de programação Java para gerenciar os dados programaticamente. Esta página não aborda como localizar o código baseado em Kotlin ou Java.
Para um guia rápido sobre localização de strings no seu app, consulte Suporte para diferentes idiomas e culturas.
Usar recursos de localização
Esta seção discute como criar recursos padrão e recursos alternativos. Ela também explica como os recursos são atribuídos à precedência e como você se refere a eles no código.
Criar recursos padrão
Coloque o texto padrão do app em res/values/strings.xml. Para essas strings, use
o idioma padrão, aquele que você espera que a maioria dos usuários do app fale.
O conjunto de recursos padrão também inclui drawables e layouts padrão e pode incluir outros tipos de recursos, como animações. Esses recursos ficam nos diretórios abaixo:
res/drawable/: diretório obrigatório com pelo menos um arquivo gráfico para o ícone do app no Google Play.res/layout/: diretório obrigatório com um arquivo XML que define o layout padrãores/anim/: obrigatório se você tiver pastasres/anim-<qualifiers>.res/xml/: obrigatório se você tiver pastasres/xml-<qualifiers>.res/raw/: obrigatório se você tiver pastasres/raw-<qualifiers>.
Dica: no seu código, examine cada referência a um recurso do Android. Um recurso padrão precisa ser definido para cada referência. Verifique também se o arquivo de strings padrão está completo: um arquivo de strings localizadas pode conter um subconjunto das strings, mas o arquivo de strings padrão precisa conter todas elas.
Dicas de localização
Siga estas dicas ao localizar o app.
Projetar um layout flexível
Caso seja necessário reorganizar seu layout para que ele se encaixe em um determinado idioma,
crie um layout alternativo para esse idioma, como
res/layout-de/main.xml para um layout em alemão. No entanto, isso pode
dificultar a manutenção do app. É melhor criar um único
layout que seja mais flexível.
Outra situação típica é um idioma que exige algo diferente no layout. Por exemplo, você pode ter um formulário de contato com dois campos de nome quando o app for executado em japonês, mas três campos de nome quando ele for executado em algum outro idioma. Isso pode ser feito de duas maneiras:
- Crie um layout com um campo que pode ser programaticamente ativado ou desativado, dependendo do idioma.
- Ou faça com que o layout principal inclua outro layout com o campo a ser modificado. O segundo layout pode ter configurações diferentes para idiomas diferentes.
Use o objeto de contexto do Android para pesquisa manual de localidade
Você pode procurar a localidade usando o objeto Context
disponibilizado pelo Android, conforme mostrado no exemplo abaixo:
Kotlin
val primaryLocale: Locale = context.resources.configuration.locales[0] val locale: String = primaryLocale.displayName
Java
Locale primaryLocale = context.getResources().getConfiguration().getLocales().get(0); String locale = primaryLocale.getDisplayName();