segunda-feira, 28 de maio de 2012

iOS: Localização: Fazendo um Aplicativo Para Vários Idiomas

Mais um tutorial para iOS. Vamos ver como fazer com que o aplicativo altere o idioma para o idioma do sistema. Para quem quer vender internacionalmente, é fundamental que o aplicativo esteja disponível em maior números de idiomas possíveis.

Para começar, abrindo a pasta do projeto no Finder, vamos criar as pastas onde os arquivos localizados (no sentido de tradução) vão ser colocados. O nome da pasta vai ser o código do idioma, sendo que deve estar no formato ISO 639-1 ou  ISO 639-2, com uma extensão *.lproj. Por exemplo: quero que meu aplicativo tenha o idioma em Português, Inglês e Espanhol, serão criadas três pastas:
  • pt.lproj: para o português;
  • en.lproj: para o inglês;
  • es.lproj: para o espanhol;

Com as pastas criadas, agora vamos criar um arquivo: abra o Xcode e na pasta Resources, vamos criar um novo arquivo: então clique com o botão direito na pasta e selecione Add > New File. Dentro selecione Resource > Strings File e clieque em "Next". Dê o nome de "Localizable.strings" e salvando dentro de uma das pastas, de acordo com o idioma desejado. Note que vai precisar fazer a mesma coisa para todas as pastas.

Com o arquivo criado, vamos começar a criar o dicionário. A estrutura dos arquivos Localizable.string é a seguinte

"nomeDaChave" = "Texto No Idioma"

Exemplo prático para um "Oi" e "Tchau" nos três idiomas:

Em pt.lproj:

"oi" = "Oi";
"tchau" = "Tchau";

Em en.lproj:

"oi" = "Hello";
"tchau" = "Bye";

Em es.lproj:
"oi" = "Hola";
"tchau" = "Chau";

Perceba que a chave sempre será o mesmo nos três arquivos, mas a mensagem que ela usará é no idioma correspondente.

Por último, precisamos chamar o dicionário quando for utilizar as mensagens/palavras. Para isso, usamos a função NSLocalizedString, que recebe dois argumentos: o primeiro vai ser uma string indicando a chave desejada. O segundo argumento é uma descrição, explicando o contexto. Geralmente o segundo vai receber o valor nil. Exemplo de como usar a função:

NSLocalizedString(@"oi",nil);
NSLocalizedString(@"tchau",nil);

Com isso, ele vai verificar o idioma do sistema e procurar a chave e retornar a mensagem correspondente ao idioma.

Acredito que é isso, até o próximo tutorial.


Um comentário:

  1. Para ajudar na tradução dos arquivos .strings, você pode utilizar uma colaborativa plataforma da tradução do site e aplicativos, como https://poeditor.com

    ResponderExcluir