Advertisement
  1. Code
  2. iOS SDK

Localizando um aplicativo iOS no Xcode 6

Scroll to top

Portuguese (Português) translation by David Batista (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Traduzir um aplicativo iOS em diferentes linguas é um processo de duas etapas. Primeiro, você precisa preparar seu app separando todos os textos, imagens e outros recursos voltados para o usuário que precisam ser traduzidos do resto do seu código e storyboards. Este processo é chamado de internacionalização (I18N).

Após você ter finalizado a internacionalização do seu app, você estará preparado para localiza-lo. Esse é o momento em que você exporta seus recursos e envia para o seu tradutor. Quando você obter os recursos traduzidos de volta, você simplesmente importa de volta ao Xcode e seu aplicativo estará pronto para oferecer suporte a outra língua.

1. Configuração

Estaremos usando um app simples de exemplo para experimentar com localizações. Crie um novo projeto Xcode, use Single View Application como template e chame o projeto de LocalizationExample.

Em seguida, precisamos criar uma interface simples, para podermos ver nossas localizações em ação. No Main.storyboard, adicione um label e um image view. Mude o texto do label para "Hello, World!". Baixe estes recursos de imagem, adicione a en/logo.pgn em seu projeto no Xcode (certifique-se de que Copy items if needed esteja marcado), e exiba ela em seu image view alterando seu campo de Image para logo.pgn. Não esqueça também de adicionar uma restrição Center Horizontally in Container no layout para os dois elementos da interface.

Você também precisa saber como funciona para localizar strings hard-code, então vá em frente e adicione uma mensagem de console em AppDelegate.m. Adicione a instrução de log a seguir em applicationDidFinishLaunching:.

1
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
2
    NSLog(@"Hello, World!");
3
    return YES;
4
}

Isto nos da três recursos para localizar, uma imagem, um label e uma string hard-code. Note que desenvolver um app localizado é praticamente a mesma coisa que criar um app não localizado. Você pode configurar as views e definir o comportamento personalizado sem realmente se preocupar com a localização. A maior parte dela acontece depois que você tem suas funcionalidades básicas em funcionamento.

2. Internacionalização

Agora que temos um aplicativo básico para trabalhar, estamos prontos para internacionalizar nosso app. Este é o momento onde nos preparamos para a localização dos recursos, isolando eles do restante do nosso código. O Xcode fornece amplos recursos de I18N, o que torna muito mais fácil para localizar um app.

Passo 1: Preparando storyboards

Primeiro, vamos ver como internacionalizar a interface do nosso app. O primeiro passo é informar ao Xcode quais regiões, ou locais, você quer dar suporte. Clique no projeto LocalizationsExample no Project Navigator e selecione o ícone azul do projeto na lista no topo esquerdo.

A seção Localizations é onde você pode adicionar locais para o seu app. Iremos traduzir nosso projeto exemplo para espanhol, então clique no sinal de mais e selecione Spanish (es). Isto irá abrir uma janela de diálogo perguntando o que você quer fazer com seus recursos existentes. Certifique que Localizable Strings esteja selecionado para ambos, Main.storyboard e LaunchScreen.xib como mostrado no screenshot abaixo. Clique em Finish para continuar.

Agora, você encontrará dois itens sob Main.storyboard, um storyboard de base e um arquivo de Main.strings. O primeiro é o seu arquivo de storyboard atual e o outro é um arquivo de strings que contém todo o texto voltados para o usuário no storyboard. Este arquivo de strings é o que acabará sendo traduzido.

O arquivo Main.storyboard está agora internacionalizado e pronto para ser localizado.

Passo 2: Preparando strings hard-code

Strings destinadas aos usuários que estão em hard-code em suas classes Objective-C/Swift precisam de um processo especial. Este é um passo necessário, por exemplo, se você for definir textos programaticamente para os elementos da interface em seus storyboards.

Felizmente, internacionalizar strings em hard-code é um processo simples. Tudo o que você precisa fazer é envolvê-los em uma macro NSLocalizedString, da seguinte forma:

1
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
2
    NSString *greeting = NSLocalizedString(@"Hello, World!", @"A friendly greeting");
3
    NSLog(@"%@", greeting);
4
    return YES;
5
}

O primeiro argumento é a chave de indicação da string que você está procurando e o segundo argumento (opcional) é um comentário que será incluído no arquivo de strings exportado. Você pode usar um resumo, uma chave estilo dicionario (ex: @"greeting"), mas eu acho que o código fica mais legível se você usar a string real a ser traduzido como a chave.

Na próxima seção, todas as chamadas NSLocalizedString serão automaticamente puxadas de nosso código e adicionadas à lista de strings que precisam ser traduzidos.

3. Localização

Uma vez que seu app esteja internacionalizado, você estará preparado para iniciar a localização dos seus recursos. A localização é um processo bastante simples, onde você exporta todas as strings que precisam ser traduzidas, passa para seu tradutor e importa de volta para o seu projeto. Este ciclo exportar/traduzir/importar, pode continuar enquanto você desenvolve seu app, mas geralmente é uma boa ideia finalizar a maioria da sua interface antes de iniciar o processo de localização.

Passo 1: Exportando strings

O Xcode facilita a exportação de todas as suas strings internacionalizadas para um simples documento XML Localization Interchange File Format (.xliff), que é o formato padrão para a industria de localização.

Para gerar este arquivo, selecione LocalizationExample no Project Navigator, escolha Editor > Export For Localization... no menu do Xcode e selecione um caminho fora do seu projeto Xcode para se prevenir de qualquer potencial confusão.

Clicando em Save você criará uma nova pasta contando um arquivo es.xliff. Se você abri-lo, você encontrará um monte de comandos XML contendo informações sobre cada string em seu app que precisa ser localizada.

Este é o arquivo que você precisa enviar ao seu tradutor. Eles terão ferramentas especias para a edição do XML, mas para nosso exemplo, vamos entrar e editá-lo diretamente. Abra o es.xliff e procure pelo texto "Hello, World!". Você encontrará dois elementos separados por <trans-unit> como mostrado abaixo.

1
<trans-unit id="Cns-Fc-27j.text">
2
    <source>Hello, World!</source>
3
    <target>Hola, Mundo!</target>
4
    <note>Class = "IBUILabel"; text = "Hello, World!"; ObjectID = "Cns-Fc-27j";</note>
5
</trans-unit>
6
<!-- ... -->
7
<trans-unit id="Hello, World!">
8
    <source>Hello, World!</source>
9
    <target>Hola, Mundo!</target>     <!-- Add a <target> element -->
10
    <note>A friendly greeting</note>
11
</trans-unit>

Como você pode ver no elemento <note>, o primeiro é o texto para nosso label e o segundo é a string hard-code que nós empacotamos no NSLocalizedString.

Mude o elemento <target> para "Hola, Mundo!" para ambos. Você pode precisar adicionar um elemento <target> para o segundo. Nossas strings traduzidas agora estão prontas para serem carregadas de volta ao Xcode.

Passo 2: Importando strings

Uma vez que seu tradutor finalizar o trabalho com no arquivo .xliff, você precisa carrega-lo de voltar para seu projeto no Xcode. Com o LocalizationExample selecionado no Project Navigator, escolha Editor > Import Localizations...  no menu do Xcode. Navegue até o arquivo es.xliff que atualizamos na seção anterior e clique no botão Import.

Adicionamos com sucesso uma tradução em espanhol para o nosso app. Se você abrir o Main.strings, você irá ver o texto da label traduzido. Você também encontrará um novo arquivo de Localizable.strings na pasta Supporting Files que contém a tradução da nossa mensagem NSLocalizedString.

Testaremos essas traduções em um momento, mas primeiro precisamos dar uma olhada na localização de recursos que não são strings.

Passo 3: Localizando imagens

Localizar recursos de imagem é um pouco diferente do que localizar strings. Selecione a logo.pgn e clique no botão Localize... no File Inspector.

Isto abrirá uma caixa de diálogo perguntando qual localidade esta imagem representa. Selecione English e clique no botão Localize. A seção Localization ira virar uma lista de caixas de seleção. Selecione ambos, English e Spanish nas caixas de seleção.

A imagem agora está localizada, mas nós ainda precisamos entrar em nosso projeto do Xcode e manualmente substituir a versão em espanhol da nossa imagem. Usando o Finder, navegue para a pasta contendo seu projeto do Xcode e abra a pasta LocalizationExample. Encontraremos uma pasta en.lproj e uma es.lproj.

Isto é como um app iOS internamente representa seus recursos localizados. Recursos em inglês estão na pasta en.lproj, enquanto os em espanhol na pasta es.lproj e os recursos compartilhados na pasta Base.lproj. Substitua es.lproj/logo.pgn com a imagem es/logo.pgn que você baixou no começo deste tutorial. Outros recursos como arquivos de dados, som e vídeo podem ser localizados da mesma forma.

4. Testando localizações

Você deve sempre testar suas localizações em um dispositivo real, mas também é possível testá-los no simulador iOS usando esquemas (schemes). Navegue no menu Product > Scheme > Edit Scheme... no Xcode para abrir o editor de esquemas. Com Run selecionado na lista da esquerda, abra a guia Options e mude a opção Application Language para Spanish.

Isso é tudo que deve ser feito. Da próxima vez que você executar o aplicativo no simulador iOS, você verá a versão em espanhol do label, image view e a mensagem do console.

Conclusão

Localizar um aplicativo iOS requer um trabalho adicional, mas o Xcode torna o processo fácil e simples. Neste tutorial, você aprendeu a diferença entre internacionalização e localização, você também aprendeu sobre os passos para localizar strings e recursos em um aplicativo iOS usando as ferramentas embutidas no Xcode.

Seja o primeiro a saber sobre novas traduções–siga @tutsplus_pt no Twitter!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.