iOS: o que é internacionalização e sua configuração inicial em um projeto
Se você trabalha com desenvolvimento iOS ou estuda essa área, já se perguntou como se produz um aplicativo que roda em diferentes países?
Com a globalização e a conectividade, há vários aplicativos, comuns em nosso dia a dia, que funcionam em diversos idiomas — como aplicativos de corrida ou de banco. Isso é possível com a internacionalização.
Neste artigo, você descobrirá os principais passos para internacionalizar seu projeto iOS, da configuração inicial à manipulação de strings e recursos visuais com localized
.
O que é internacionalização no iOS?
Internacionalização é a prática de adaptar um aplicativo para que funcione em diversos países.
No iOS, significa adaptar o aplicativo para diferentes culturas e idiomas. Um exemplo é preparar e traduzir uma string (como veremos adiante) e o conteúdo do aplicativo (títulos, botões etc).
Outro exemplo são as datas: no Brasil, estamos habituados ao formato dia/mês/ano (30/12/2024); nos Estados Unidos, utiliza-se o padrão mês/dia/ano (12/30/2024).
Algumas linguagens (japonês, árabe, hebraico) são lidas no sentido da direita para a esquerda.
A internacionalização também envolve adaptar a interface do aplicativo para que uma pessoa japonesa consiga acessar e ler um aplicativo em sua ordem natural de leitura. Quem já leu algum mangá ou livro em japonês deve imaginar isso.
Por que fazer a internacionalização no iOS?
Em uma palavra: escalabilidade.
O sistema operacional iOS é utilizado por milhões de pessoas ao redor do mundo. Logo, são muitas as oportunidades para que as empresas cresçam e escalem seus negócios em outros países.
Por exemplo, um aplicativo que roda em várias línguas (português, inglês, japonês, árabe) alcançará mais pessoas ao redor do mundo, certo?
As pessoas desenvolvedoras iOS, a depender da empresa onde trabalham, precisam dominar as técnicas de internacionalização, pois elas permitem que um aplicativo cresça e tenha uma grande base de usuários.
Por exemplo, o Uber e WhatsApp funcionam em quase todos os países e, portanto, precisam ser traduzidos em vários idiomas.
Vamos ver um exemplo prático de como fazer isso com um aplicativo bancário!
Como configurar a internacionalização em aplicativos iOS?
Como habilitar a internacionalização em Views do tipo Storyboard ou XIB
Antes de iniciar a tradução e adaptação do conteúdo do aplicativo, é importante preparar o projeto no Xcode para suportar a internacionalização. Para fazê-lo, vamos marcar a opção Use Base Internationalization (“Usar a internacionalização base”):
Essa configuração faz com que o Xcode gerencie automaticamente a localização dos arquivos de interface (Storyboard, XIBs), caso você os use.
Como idioma padrão, marque a opção português, na aba Info do projeto:
Em seguida, selecione o idioma Português como default (padrão):
Agora podemos começar! Como exemplo, neste artigo, veremos o projeto Swift Bank. Vamos analisar a seção de transações:
Vamos traduzir o título Últimas transações para inglês.
Como usar o localized string e arquivos de tradução no iOS
Uma tarefa importante na internacionalização de um aplicativo iOS é a tradução de strings. Isso inclui todos os textos exibidos para o usuário: títulos, botões, mensagens de erro, etc.
A função NSLocalizedString
é o ponto principal para gerenciar as strings a ser localizadas. Como exemplo, vou utilizar o arquivo ActivitiesView:
var header: some View {
VStack {
HStack {
Text("Últimas transações")
.font(.system(size: 16))
.fontWeight(.medium)
Spacer()
Image(systemName: "chevron.right")
.font(.system(size: 10))
}
.padding(.bottom, 2)
}
}
Perceba que temos um texto ("Últimas transações") com alguns modificadores. A primeira alteração que vamos fazer é incluir o NSLocalizedString
:
var header: some View {
VStack {
HStack {
Text(NSLocalizedString("Latest transactions", comment: "Title for the recent transactions section"))
.font(.system(size: 16))
.fontWeight(.medium)
Spacer()
Image(systemName: "chevron.right")
.font(.system(size: 10))
}
.padding(.bottom, 2)
}
}
O NSLocalizedString
buscará a tradução correspondente no arquivo “Localizable.strings”. Então, vamos criá-lo:
Ao criar o arquivo, vamos buildar o projeto, para que ele identifique todos os textos dentro do arquivo de tradução:
Agora o arquivo já identificou todos os textos nos idiomas pré-configurados no projeto. Uma boa prática, adotada pela maioria das empresas, é colocar os textos no código em inglês.
No arquivo que criamos, “Localizable.xcstrings”, adicionamos as chaves de tradução:
Se rodarmos o projeto, você verá o seguinte resultado:
Agora, façamos um teste — vamos alterar a região, nas configurações do iPhone, para testar a tradução em inglês:
Vamos escolher a opção United States:
Rode o projeto para testar as implementações:
Repare que o texto não foi traduzido. Isso significa que ainda não colocamos a key de tradução para o idioma selecionado. Vamos abrir o arquivo de tradução:
Repare que o idioma English realmente ainda não tem a key de tradução. Vamos configurá-lo com a mesma string "Latest transactions":
Vamos rodar o projeto novamente:
Ótimo! Já temos o título da seção de "Últimas transações" traduzido corretamente para o inglês.
Se você precisasse adicionar tradução para outros idiomas, teria que ir na configuração do projeto, e adicionar o novo idioma.
Quando gerasse um novo build do projeto, apareceria no arquivo “Localizable.xcstrings” a nova coluna com o idioma configurado. A partir desse ponto, é somente ir adicionando as traduções conforme necessário.
Lembre-se de que, para testar, acesse as configurações do iPhone e escolha a localização de acordo com o idioma que deseja testar.
Conclusão
Neste artigo, vimos uma introdução ao tema de internacionalização em aplicativos iOS e aprendemos como internacionalizar a parte de um projeto.
Caso queira conhecer mais sobre desenvolvimento iOS, acesse os seguintes links:
- iOS: construindo seu primeiro aplicativo
- Formação Domine a linguagem Swift
- Formação Desenvolva aplicativos iOS utilizando view code
- Formação Escalabilidade em aplicativos iOS
- Formação Evolua Apps em SwiftUI: CRUD, MVVM e Autenticação
Até a próxima!