14 Nov, 2008 13:52

Traduzindo Xib's (Nib's)

Para quem ainda não começou a mexer no SDK do iPhone, eu com certeza estou falando grego, mas prometo que em breve trataremos outros assuntos mais básicos sobre o mesmo. Sendo assim... esse artigo fica como referência para aqueles que se aventurarem pelo mesmo caminho no futuro.

Bom, o desafio era pegar um arquivo MainWindow.xib, p. ex. e fazer uma tradução para o Inglês. O modo chato é fácil:

  1. No XCode, selecione o MainWindow.xib, e execute Command-i;
  2. Clique em Make File Localizable - será criada uma versão do arquivo em inglês;
  3. Na aba General, Add Localization;
  4. Nomeie como Portuguese.

Pronto, o XCode fez o seguinte: copiou seu MainWindow.xib para a pasta English.lproj e apagou o original da pasta raiz; depois fez outra cópia para a pasta Portuguese.lproj.

Com isso, basta você abrir o arquivo que desejar modificar a linguagem e alterar todas as strings na munheca.

Tosco, não? Afinal, qualquer modificação que quiser fazer no layout, você terá de lembrar de reproduzí-la em todas as linguas disponíveis. Ai, ai....

Procurando uma alternativa com um potencial menos explosivo, encontramos a primeira referência a partir da API dentro do próprio XCode: Preparing Your Nib Files for Localization - (precisa ter login no ADC da Apple pra acessar esse artigo). A segunda foi pelo Google, chegando ao Internationalization with Cocoa.

Incompetência nossa ou não, não conseguimos executar os comandos com sucesso. Em ambos os casos terminamos com o erro:

Invalid stringsfile. The keypath "com.apple.ibtool.document.localizable-strings" could not be parsed.

Fomos para casa dormir e no dia seguinte, surgiu a resposta: Localizing Your Nib File’s Content.

Assumindo que seu xib está em português, faça o seguinte:

  1. repita os passos lá de cima;
  2. entre na pasta Portuguese.lproj e gere o arquivo de strings do seu Xib original
    ibtool MainWindow.xib --generate-stringsfile MainWindow.strings
  3. copie o arquivo .strings para a pasta English.lproj e faça as traduções;
  4. gere o arquivo xib em inglês a partir do xib em português e do arquivo traduzido
    ibtool Portuguese.lproj/MainWindow.xib --strings-file English.lproj/MainWindow.strings --write English.lproj/MainWindow.xib

Qual a diferença agora? Qualquer alteração no layout de um xib não precisa mais ser refeita nos outros correspondentes. Basta rodar o segundo comando acima para propagar as mudanças. E se o número de xib's crescer, prepare um batch com o comando moficado de acordo com cada xib. Assim, você poderá rodar sempre e garantir que seus xibs estão sempre atualizados.

Em breve, voltamos com mais dicas para o iPhone.

Ao navegar neste site, você consente o uso de cookies nossos e de terceiros, que coletam informações anônimas e são essenciais para melhorar sua experiência em nosso site.