robotics-and-intelligent-systems
Criar um Sistema de Suporte Multilíngue com Localização em Ios
Table of Contents
Compreender a Localização e Internacionalização
A construção de um sistema de suporte multilíngue no iOS começa com a compreensão da distinção entre internacionalização e localização. A internacionalização (i18n) é o processo de concepção do seu aplicativo para que ele possa ser adaptado para várias línguas e regiões sem mudanças de engenharia. A localização (l10n) é a tradução real e adaptação cultural do conteúdo e interface de usuário do aplicativo para um local específico. Os frameworks da Apple lidam com grande parte do levantamento pesado, mas uma estratégia bem pensada no início economiza esforço significativo mais tarde.
A Apple fornece ferramentas abrangentes no Xcode, Foundation e UIKit para suportar a localização. O objetivo é fazer seu aplicativo se sentir nativo em cada idioma, respeitando a direção de leitura, formatos de data, formatação de números e convenções culturais. Este artigo caminha através das etapas práticas para implementar suporte multi-linguagem robusto, desde a configuração do projeto até técnicas avançadas.
Habilitando Localização em Seu Projeto Xcode
O primeiro passo é dizer ao Xcode quais idiomas seu aplicativo irá suportar. Abra as configurações do projeto, selecione seu projeto no Navegador de Projetos e, sob a guia Informações, encontre a seção Localizações. Clique no botão "+" para adicionar idiomas. Para cada idioma, o Xcode cria automaticamente arquivos de recursos (storyboards, XIBs, strings files) que você pode editar separadamente.
Internacionalização de base
A Apple recomenda usar a Base Internacionalização. Na guia Info do seu projeto, verifique “Use a Base Internacionalização”. Isto armazena o layout original da interface em uma localização de base (geralmente em inglês) e cada idioma adicional substitui apenas as strings, não o layout. Isso reduz a duplicação e garante a consistência do layout. Se você desmarcar, você deve duplicar todo o storyboard para cada idioma, que é propensa a erros.
Adicionando Localizações aos Arquivos Existentes
Para storyboards existentes ou XIBs, selecione o arquivo no Inspetor de Arquivos, em seguida, em Localização, verifique os idiomas que você deseja localizar. Xcode gera arquivos específicos de linguagem .strings para storyboards. Para interfaces baseadas em código, você vai confiar em e arquivos .strings separados.
Criar e Gerir Ficheiros de Textos Localizáveis
A forma principal de traduzir texto do código é através de . Crie um ao ir para Arquivo > Novo > Arquivo > Arquivo Strings File (em Recurso). Nomeie-o . Em seguida, no Inspetor de Arquivo, localize- o: clique em Localizar, selecione então sua língua base. Depois disso, para cada idioma adicional, um novo arquivo aparece em uma subpasta.
O formato é chave = pares de valores:
Para a localização alemã:
Sempre use as teclas descritivas, não a própria string inglesa, para evitar alterações acidentais que quebram as buscas. Se você usar a string inglesa como a chave, renomeá- la mais tarde se torna problemática.
Organizando strings com comentários
Adicionar comentários para explicar o contexto para os tradutores. Eles não são compilados na aplicação. Exemplo:
Usando o NSLocalizedString em Código
A macro lê o texto do arquivo apropriado baseado na linguagem do dispositivo do usuário. Sua assinatura:
A maioria das chamadas usa apenas a chave e comentário:
Se não for encontrada nenhuma tradução, a chave em si é devolvida (ou o parâmetro de valor, se for fornecido). Forneça sempre um comentário significativo para orientar os tradutores.
Manuseando strings de formato com parâmetros
Para conteúdo dinâmico, use especificadores de formato como , , . Exemplo:
Em código:
Isto permite que os tradutores reordenem as palavras de forma adequada (por exemplo, em japonês, a estrutura da frase pode colocar o número após o substantivo). Ainda melhor, use com um argumento de formato:
Usando .stringsdict para Regras Plural
Diferentes idiomas têm regras plural complexas. Por exemplo, o inglês tem singular/plural, mas o árabe tem seis formulários, e o polonês tem três. A Apple fornece arquivos para lidar com pluralização e outro texto variável. Crie um arquivo chamado nas mesmas pastas de localização que . Seu formato é uma plist com uma chave por formato. Exemplo:
[FLT: 22]
Em seguida, no código use a mesma chave: . iOS seleciona automaticamente o formulário plural correto com base nas regras do locale.
Localizando Storyboards e XIBs
Quando você localizar um storyboard, cada campo de etiqueta, botão e texto obtém uma contrapartida no arquivo de strings específicos do idioma. Você pode editar essas strings diretamente, ou usar o Construtor de Interface para visualizar e modificar layouts por idioma. No entanto, para uma interface mais dinâmica, você pode preferir definir texto programáticamente usando e, em seguida, lidar com layout com layout automático.
Visualizando as Localizações no Xcode
No Xcode, você pode visualizar um storyboard em diferentes idiomas sem construir: abra o storyboard, então no menu Editor, selecione Preview. Adicione um dispositivo de pré-visualização e depois mude o idioma usando o dropdown na parte inferior. Isto mostra como as strings expandem ou contraem.
Ajustando o layout para expansão de texto
O texto alemão é frequentemente 30% mais longo do que o inglês. Use o layout automático com restrições que podem crescer etiquetas vertical ou horizontalmente. Defina o número de linhas do rótulo para 0. Evite restrições de largura fixa. Use as prioridades de resistência de abraços de conteúdo e compressão apropriadamente. Para botões, considere usar ou permitir largura dinâmica. Teste com traduções mais longas possíveis.
Lidar com as línguas direita-esquerda (RTL)
Árabe, hebraico, persa, urdu e outros fluem da direita para a esquerda. O iOS suporta RTL através da propriedade em visualizações e o sistema de inversão automática de imagens e layout baseado na direção de layout da interface do usuário (a partir do idioma do dispositivo).
Configuração para RTL
Assegure-se de que as suas vistas do storyboard usam restrições de condução/trailing em vez de esquerda/direita. O layout automático do Xcode suporta automaticamente a direção de condução/trailing correta. Para layouts programáticos, use e . Se você tiver desenho ou transformações personalizadas, respeite a direção de layout da interface do usuário de ou verifique .
Imagens e RTL
Imagens que têm significado direcional (por exemplo, uma seta apontando para a frente) devem ser viradas no modo RTL. No Catálogo de ativos, você pode definir imagens como "Mirror" para RTL. Alternativamente, fornecer conjuntos de imagens separados para cada direção. Para imagens modelo, iOS pode espelhar automaticamente se você definir na imagem.
Alinhamento de Texto
Para as legendas e visualizações de texto, use que automaticamente alinha para a esquerda para LTR e para a direita para RTL. Evite alinhamento de codificação dura.
Localizando datas, números e moedas
Os usuários finais esperam datas e números formatados de acordo com sua localidade. Use e com a localidade do usuário. Defina (que é o padrão) e use estilos predefinidos como , , ou padrões personalizados. Por exemplo:
Para números, use com estilo ou . Trata de separadores de agrupamento, separador decimal e símbolo de moeda automaticamente.
Usar a Localização com os Textos de Formato
Ao usar com especificadores numéricos, a localidade pode afetar o agrupamento. Para strings voltadas para o usuário, use que respeita a localidade. Para análise interna, use com uma localidade fixa como .
Localização de Testes
Testes completos são críticos. Simule idiomas diferentes no simulador, editando as configurações de linguagem e região do esquema. Vá para Produto > Esquema > Editar esquema, em seguida, em Executar > Opções, escolha uma língua de aplicação diferente (por exemplo, alemão) e região (por exemplo, Alemanha). Construa e execute para ver todas as strings localizadas.
Usando o interruptor de linguagem do simulador
Você também pode mudar a linguagem do Simulador: Configurações > Geral > Língua e Região. No entanto, o método de esquema é mais rápido para testar uma única língua.
Teste RTL
Defina o idioma de aplicação do esquema para árabe. Verifique se todas as visualizações mudam corretamente. Preste muita atenção às visualizações personalizadas, role as vistas e as vistas da web. Use as ferramentas Depurar > Ver Depurar para inspecionar o layout.
Teste com Pseudolocalização
Xcode oferece pseudolocalização para simular cordas longas ou RTL sem traduções reais. Nas Opções do esquema, habilitar "Duplo-Comprimento Pseudolinguagem" ou "Direito à Esquerda Pseudolinguagem". Isto ajuda a pegar problemas de truncamento e alinhamento precocemente.
Localizando conteúdo dinâmico e interface de usuário com servidor
Se o seu aplicativo baixa conteúdo de um servidor, você não pode confiar apenas em . Você precisa enviar a preferência local do usuário para o servidor e tê-lo devolvido conteúdo traduzido. Use o cabeçalho ou um parâmetro personalizado. No lado iOS, você pode obter os idiomas preferidos de ou .
Para a interface baseada em servidor renderizada em componentes nativos, você pode mapear as chaves de string enviadas pelo servidor para traduções locais usando um padrão similar , mas com uma tabela ou pacote diferente. Considere armazenar as localizações em um arquivo JSON obtido após o lançamento do aplicativo para permitir atualizações por fora do ar sem submissão de aplicativos.
Melhores práticas para localização sustentável
- Mantenha as teclas descritivas e consistentes – Use a notação de pontos como para as teclas de espaço de nomes.
- Use uma única fonte de verdade – Evite duplicar traduções entre arquivos. Use a localização base e consulte a mesma chave.
- Automatizar exportação/importação – Xcode pode exportar todas as localizações como arquivos XLIFF para tradutores, em seguida, importar os arquivos traduzidos de volta. Use e .
- Versão controlar suas strings – Mantenha ] e arquivos no Git. Use ferramentas de diff para rastrear as alterações.
- Nunca inclua texto localizável em código – Utilize sempre ou para separação.
- Considere a interpolação de string cuidadosamente – Os tradutores precisam entender o que cada placeholder representa. Use argumentos posicionais () para permitir a reordenação.
Trabalhar com a Localização SwiftUI
SwiftUI simplifica a localização. Por padrão, procura a string em usando a chave “Olá”. Se não existir nenhuma tecla, ela usa a string literal em si. Você pode explicitar as teclas com e fornecer traduções.
Para strings formatadas, use – SwiftUI usa automaticamente o se você tiver a chave “Você tem %d items” em um arquivo . No entanto, para corresponder à chave precisamente, você pode precisar definir o formato completo. Melhor usar uma chave dedicada:
não funciona diretamente. Em vez disso, use:
Ou use o da SwiftUI com interpolação: mas isso requer que a chave seja exatamente “items conunt %d” no arquivo strings. A abordagem mais segura é continuar usando com dentro de uma propriedade computada.
Localizando imagens em SwiftUI
Use e forneça a localização do catálogo de ativos para cada idioma. Ou use com etiquetas de acessibilidade localizadas via .
Pistas comuns e como evitá - las
- Traduções em falta – Use com um parâmetro para fornecer um retorno em inglês. Execute regularmente o simulador em cada idioma para detectar strings não traduzidas.
- Disposição codificada por código rígido – Evite larguras fixas. Teste com traduções mais longas em alemão.
- Ignorando regras plurais – Use sempre .stringsdict para strings pluralizáveis.
- Esquecendo a localização para a data/número de análise – Ao processar a entrada do usuário, use uma localidade fixa como en US POSIX para armazenamento interno.
- Não testar em dispositivos reais – A mudança de linguagem do simulador é confiável, mas o teste do dispositivo expõe comportamentos específicos de região, como calendário, fuso horário e teclado.
- Acessibilidade de visualização – VoiceOver fala strings localizadas. Certifique-se de que as etiquetas de acessibilidade também estão localizadas e use adequadamente.
Recursos externos para um entendimento mais profundo
- Guia de Internacionalização e Localização da Apple – Documentação oficial que abrange tudo, desde arquivos de strings até suporte da direita para a esquerda. Apple Internacionalização
- O artigo NSLocalizedString do NShipster – Dicas práticas e funcionalidades de API menos conhecidas. NShipster no NSLocalizedString
- Internacionalização de Objc.io – Mergulhar profundamente em .stringsdict e pluralização. Objc.io Internacionalização de Objc.io
Conclusão
Implementando suporte multilíngue no iOS é mais do que tradução: envolve planejamento cuidadoso de strings, layouts, formatos e convenções culturais. Ao aproveitar as ferramentas de localização integradas da Apple – a Internacionalização de Bases, , , e o Layout Auto – você pode criar um aplicativo que se sinta em casa em qualquer idioma. Testes regulares com pseudolocalização e dispositivos reais pegam problemas precocemente. O esforço inicial economiza futuras dores de cabeça e abre seu aplicativo para milhões de usuários em todo o mundo. Comece com uma sólida fundação de internacionalização, e depois expanda linguagens à medida que sua base de usuários cresce.