Internacionalização (i18n) em Swift para iOS e macOS

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Internacionalização (i18n) em Swift: Guia completo para iOS e macOS



Internacionalização (abreviada como i18n) é o processo de projetar um aplicativo para que ele possa ser adaptado a diferentes idiomas e regiões sem alterar o código-fonte. Para desenvolvedores das plataformas Apple (iOS, macOS, watchOS, tvOS), o Swift oferece um conjunto de ferramentas poderoso, porém elegante. Neste artigo, vamos detalhar como configurar a i18n no seu projeto Swift, utilizando os mecanismos nativos da Apple.



Por que a i18n é crucial?

Mesmo que seu aplicativo seja inicialmente criado em um único idioma, a internacionalização deve ser considerada na fase de arquitetura. Isso permite:

  • Ampliar o público: Usuários de diferentes países preferem aplicativos em seu idioma nativo.
  • Simplificar a localização: Uma i18n adequada transforma a adição de um novo idioma em uma operação simples com arquivos.
  • Evitar hardcode: Todas as strings são movidas para recursos separados, melhorando a legibilidade e a manutenção do código.


Ferramenta principal: NSLocalizedString

O coração da internacionalização em Swift é a macro NSLocalizedString. Ela busca a string nos arquivos de localização (.strings) e retorna a versão traduzida. Se a tradução não for encontrada, a chave (geralmente a string em inglês) é usada.



// Exemplo de uso em Swiftlet welcomeMessage = NSLocalizedString("welcome_message", comment: "Saudação na tela inicial")label.text = welcomeMessage


Recomenda-se sempre incluir o comment — ele ajuda os tradutores a entender o contexto.



Estrutura dos arquivos de localização

No Xcode, os idiomas são adicionados através de Project Settings > Info > Localizations. Em seguida, são criadas as pastas xx.lproj (por exemplo, en.lproj, pt-BR.lproj). Dentro delas, são armazenados:

  • Localizable.strings — o arquivo principal com pares "chave" = "valor";
  • InfoPlist.strings — para localizar o nome do aplicativo e strings do sistema;
  • Storyboard.strings — arquivo gerado automaticamente para interfaces criadas em storyboards.


Formato do Localizable.strings

O arquivo tem uma sintaxe simples:

// Inglês (en.lproj/Localizable.strings)"welcome_message" = "Welcome to our app!";"login_button" = "Log In";

// Português (pt-BR.lproj/Localizable.strings)"welcome_message" = "Bem-vindo ao nosso aplicativo!";"login_button" = "Entrar";


Importante: As strings terminam com ponto e vírgula. A codificação do arquivo deve ser UTF-8 ou UTF-16.



Formatação de strings com parâmetros

Frequentemente é necessário inserir dados dinâmicos em uma string (nome do usuário, quantidade de itens). Para isso, usa-se String(format:):



// No Localizable.strings:"items_count" = "Você tem %d itens.";"user_greeting" = "Olá, %@!";

// No código Swift:let count = 5let itemsText = String(format: NSLocalizedString("items_count", comment: "Quantidade de itens"), count)

let userName = "Alexandre"let greeting = String(format: NSLocalizedString("user_greeting", comment: "Saudação ao usuário"), userName)


Para suportar formas plurais (1 maçã, 2 maçãs, 5 maçãs), use StringDict (arquivos .stringsdict).



Trabalhando com XLIFF para tradutores

A Apple suporta o formato XLIFF (XML Localisation Interchange File). Este é um padrão da indústria para troca de traduções. No Xcode, você pode exportar todas as strings para um arquivo XLIFF, entregá-lo ao tradutor e, em seguida, importá-lo de volta.



// Comando no terminal para exportar:xcodebuild -exportLocalizations -localizationPath ./translations -project YourProject.xcodeproj

// Importar traduções prontas:

Recommendations