iOS: o que é internacionalização e sua configuração inicial em um projeto

iOS: o que é internacionalização e sua configuração inicial em um projeto
Ândriu Felipe Coelho
Ândriu Felipe Coelho

Compartilhe

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.

Banner promocional da Alura, com um design futurista em tons de azul, apresentando dois blocos de texto, no qual o bloco esquerdo tem os dizeres:

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”):

Tela de configurações de build no Xcode para um projeto iOS chamado SwiftBank, com foco nas configurações de localizações ecom a opção Use Base Internacionalization selecionada.

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:

A imagem mostra a tela de configurações de build no Xcode para um projeto iOS chamado SwiftBank, destacando as opções de idiomas disponíveis para localização, com o idioma português selecionado.

Em seguida, selecione o idioma Português como default (padrão):

A imagem exibe as configurações de localização no Xcode, onde o idioma "Portuguese (Brazil)" está selecionado como padrão para o projeto SwiftBank. Nenhum arquivo foi localizado até o momento.

Agora podemos começar! Como exemplo, neste artigo, veremos o projeto Swift Bank. Vamos analisar a seção de transações:

A imagem mostra uma lista de transações recentes em um aplicativo, todas referentes a compras realizadas no iFood, no valor de R$ 22,70 cada uma.

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:

A imagem mostra uma tela de seleção de template para a criação de um novo arquivo em um projeto de desenvolvimento. As opções disponíveis incluem diversos tipos de arquivos, como Property List, Rich Text File, SceneKit Catalog, Settings Bundle, entre outros, com a opção "String Catalog" destacada.
A imagem exibe a tela de criação de um novo arquivo chamado "Localizable" em um projeto de desenvolvimento. O arquivo está sendo salvo na pasta "String Locators", e o projeto selecionado como alvo é "SwiftBank".

Ao criar o arquivo, vamos buildar o projeto, para que ele identifique todos os textos dentro do arquivo de tradução:

A imagem mostra a tela do Xcode, onde o desenvolvedor está trabalhando na localização de strings para o projeto "SwiftBank". No painel esquerdo, a pasta "String Locators" está expandida, mostrando os arquivos de localização para os idiomas Português (Brasil) e Inglês. No painel central, é possível ver a chave "Key" e os valores traduzidos para cada idioma, incluindo "Compra realizada no iFood" e "Últimas transações" em Português (Brasil).

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:

A imagem mostra uma tela do Xcode de edição de traduções de strings para o projeto "SwiftBank". A chave "Latest transactions" está sendo traduzida para "Últimas transações" em Português (Brasil). As traduções para outras chaves como "Compra realizada no iFood" e "Conta" também estão visíveis.

Se rodarmos o projeto, você verá o seguinte resultado:

Seção de últimas transações do aplicativo Swift Bank, com três compras de restaurante.

Agora, façamos um teste — vamos alterar a região, nas configurações do iPhone, para testar a tradução em inglês:

Configurações de idioma e região em um dispositivo móvel iOS, mostrando as opções de idioma preferidas, região, formato de data, número, e outras preferências regionais.

Vamos escolher a opção United States:

Tela de seleção de região em um dispositivo móvel, mostrando as opções: United States, United Arab Emirates e United Kingdom.

Rode o projeto para testar as implementações:

Seção de últimas transações do aplicativo Swift Bank, com três compras de restaurante.

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:

Tela de gerenciamento de traduções, mostrando a comparação entre textos em Português (Brasil) e Inglês para itens como "Compra realizada no iFood" e "Últimas transações".

Repare que o idioma English realmente ainda não tem a key de tradução. Vamos configurá-lo com a mesma string "Latest transactions":

Tela de gerenciamento de traduções, mostrando o progresso da tradução de textos do Português (Brasil) para o Inglês, com termos como "Últimas transações" e "Latest transactions".

Vamos rodar o projeto novamente:

Seção do aplicativo Swift Bank que mostra três compras realizadas, cada uma no valor de R$ 22,70, com o título "Latest transactions" no topo.

Ó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:

Até a próxima!

Ândriu Felipe Coelho
Ândriu Felipe Coelho

Ândriu é desenvolvedor iOS e instrutor. É ativo na comunidade iOS, palestrou na CocoaHeads Brasil e sempre procura compartilhar o máximo do seu conhecimento com quem está iniciando ou avançando no mundo de Swift.

Veja outros artigos sobre Mobile