
Recentemente, trabalhei num projeto Xcode em que tive de traduzir texto para diferentes línguas. A vantagem de apresentar o texto de um projeto em várias línguas não pode ser subestimada, pois aumenta consideravelmente o público da aplicação.
A nova abordagem da Apple à localização são os novos catálogos de cordas. Para poder utilizá-los, é necessário primeiro preparar o texto do projeto para catalogação. A Apple recomenda a utilização de "String" com o parâmetro "localized", da seguinte forma:
 |
Fig. 1: Cadeia localizada |
Depois, ao construir o projeto, o Xcode utiliza o texto no parâmetro "localized" como uma chave no catálogo. Este catálogo tornar-se-á a localização predefinida nas definições do projeto.
 |
Fig. 2: Definições localizadas |
 |
Fig. 3: Catálogo de cordas |
Há pelo menos dois problemas fundamentais com esta abordagem. Em primeiro lugar, utilizar o texto a localizar como chave significa que, se quiser alterar esse texto, as relações com os textos traduzidos serão quebradas. Por exemplo:
 |
Fig. 4: O texto chave foi mudado |
 |
Fig. 5: A chave antiga é agora obsoleta |
Em segundo lugar, na minha experiência, o Xcode não estava a exportar o catálogo de base (que é o inglês), então, o inglês não aparecia na lista de idiomas que a aplicação suportava na App Store.
Na minha opinião, é preferível definir o texto-chave como um código (uma constante), colocar o texto a localizar no catálogo e tratar o catálogo como qualquer outro. Também é possível atribuir um valor predefinido se não pretender reatribuí-lo no catálogo.
 |
Fig. 10: Outras localizações no catálogo |
Finalmente, precisamos de forçar o Xcode a gerar o catálogo de base. Para tal, seleccione outra localização como catálogo de base e construa o projeto. O Xcode exporta os ficheiros necessários e inclui-os nos meta-dados do projeto. O idioma base será agora incluído na lista de idiomas da App Store.
 |
Fig. 11: Lista de idiomas que a aplicação suporta na App Store |
Comments
Post a Comment