Localização no Xcode 15

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. 6: Utilização de uma constante de cadeia como chave

Fig. 7: Utilização de valor predefinido

String(localized:) requer que o utilizador escolha o idioma da aplicação nas definições do dispositivo.  Em alternativa, pode utilizar "LocalizedStringResource", que localiza automaticamente o texto com base na localização do utilizador.  Ambas as alternativas apoiam a utilização do catálogo.

Fig 8: String vs LocalizedStringResource

Fig. 9: Chave definida 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

Popular posts from this blog

Pray!