Lição 152: Melhores Práticas de Internacionalização
A internacionalização (i18n) é o processo de projetar uma aplicação de forma que possa ser adaptada para vários idiomas e regiões sem a necessidade de mudanças na engenharia. Nesta lição, abordaremos as melhores práticas para internacionalização em aplicações Swift, focando em localização, manuseio de formatos locais e garantia de acessibilidade.
1. Utilize Localizable.strings
Um dos primeiros passos para internacionalizar seu aplicativo é usar o arquivo Localizable.strings
para armazenar suas strings traduzidas. Crie arquivos Localizable.strings
separados para cada idioma que você suporta.
Exemplo
// Localizable.strings (Português)
"Saudacao" = "Olá, Mundo!";
// Localizable.strings (Espanhol)
"Saudacao" = "¡Hola, Mundo!";
Para acessar strings localizadas no seu código Swift, utilize:
let saudacao = NSLocalizedString("Saudacao", comment: "Uma saudação amigável")
print(saudacao) // A saída dependerá das configurações de idioma do dispositivo
2. Localizando Storyboards
Se você estiver utilizando o Interface Builder, pode localizar storyboards diretamente, selecionando o arquivo do storyboard e adicionando novas traduções. Dessa forma, você garante que os elementos da interface do usuário sejam adequadamente traduzidos.
Passos para Localizar Storyboards:
- Selecione o arquivo do storyboard no Xcode.
- Vá para o Inspetor de Arquivos (no painel direito).
- Na seção de Localização, clique no botão "+" para adicionar um novo idioma.
- O Xcode criará um arquivo de storyboard separado para essa localização, onde você poderá atualizar o texto.
3. Formatação de Datas e Números
Ao exibir datas e números, é essencial formatá-los com base na localidade do usuário. Utilize DateFormatter
e NumberFormatter
para lidar com isso de forma elegante.
Exemplo: Formatação de Data
let data = Date()
let formatadorDeData = DateFormatter()
formatadorDeData.dateStyle = .medium
formatadorDeData.locale = Locale.current // Utilize a localidade atual
let dataFormatada = formatadorDeData.string(from: data)
print(dataFormatada) // A saída varia com base na localidade
Exemplo: Formatação de Número
let numero = 1234567.89
let formatadorDeNumero = NumberFormatter()
formatadorDeNumero.numberStyle = .currency
formatadorDeNumero.locale = Locale.current // Utilize a localidade atual
if let numeroFormatado = formatadorDeNumero.string(from: NSNumber(value: numero)) {
print(numeroFormatado) // A saída varia com base na localidade
}
4. Suportando Idiomas da Direita para a Esquerda
Certifique-se de que o layout do seu aplicativo suporte idiomas que utilizam a escrita da direita para a esquerda (RTL). Utilize o Auto Layout e ajuste suas strings para acomodar o RTL onde necessário.
Exemplo
if UIView.userInterfaceLayoutDirection(for: view.semanticContentAttribute) == .rightToLeft {
// Ajuste a interface para RTL
meuLabel.textAlignment = .right
} else {
// Ajuste a interface para LTR
meuLabel.textAlignment = .left
}
5. Testando Strings Localizadas
Sempre teste suas traduções para garantir que se encaixam bem na sua interface de usuário. Utilize o Simulador
para rapidamente alterar as configurações de idioma e região do dispositivo emulado para fins de teste.
Mudando o Idioma no Simulador
- Abra o aplicativo
Ajustes
no Simulador. - Vá para
Geral
>Idioma & Região
. - Mude o
Idioma do iPhone
para a localização desejada.
6. Usando NSLocalizedString
de Forma Eficiente
É uma boa prática fornecer comentários significativos na função NSLocalizedString
para ajudar os tradutores a entender o contexto.
Exemplo
let mensagemBoasVindas = NSLocalizedString("Mensagem_Boas_Vindas", comment: "Uma mensagem de boas-vindas exibida aos usuários ao iniciar o aplicativo")
Conclusão
A internacionalização é uma parte crucial do desenvolvimento de um aplicativo moderno que atenda a um público global. Seguindo melhores práticas, como usar Localizable.strings
, localizar storyboards, formatar datas e números corretamente e testar seu aplicativo adequadamente, você pode criar uma experiência amigável e inclusiva. Sempre torne sua interface de usuário adaptável a diferentes idiomas e culturas para alcançar um público mais amplo.