Para fazer a tradução de um app para Mac percorrer o fluxo de ida e volta, exporte um Catálogo de Localização do Xcode, preserve sua estrutura de plural e o mapeamento dos argumentos e, em seguida, importe e teste o pacote recebido. Este guia usa um rótulo de seleção sintético para mostrar exatamente o que enviar e conferir.

A tarefa é para quem está preparando materiais para tradutores no Xcode em um Mac: enviar uma mensagem dependente de uma contagem para tradução e recebê-la de volta com seu comportamento intacto. O rótulo de exemplo é Selected 3 tiles in 2 groups. As duas contagens podem variar de forma independente, então o material enviado precisa preservar mais do que a redação legível.

Defina o contrato da mensagem antes de exportar

Trate o contrato da mensagem como uma pequena especificação: qual entrada o app consulta, quais valores de execução ele fornece e quais valores controlam a variação gramatical. A Apple documenta que String.LocalizationValue aceita strings localizáveis com interpolação, inclusive valores fornecidos em tempo de execução. A documentação também descreve como usar uma chave estática e um valor padrão separado quando o identificador deve ser diferente do texto-fonte exibido. String.LocalizationValue

Neste exemplo, registre o seguinte contrato junto ao pedido de tradução. Estes são requisitos ilustrativos para o rótulo sintético, não um formato de arquivo da Apple.

Elemento do contrato Requisito deste exemplo
Finalidade da mensagem Resumir a seleção atual
Texto-fonte em inglês Selected 3 tiles in 2 groups. com ambos os números fornecidos em tempo de execução
Argumento 1 Contagem de blocos; controla a forma de tile
Argumento 2 Contagem de grupos; controla a forma de group
Representação numérica Manter o tipo e o especificador de formato que o Xcode registra para cada argumento
Liberdade na tradução Reordenar a frase preservando o significado de cada argumento
Comportamento exigido Cada substantivo concorda com sua própria contagem

Registre também o catálogo, a tabela e a chave reais do projeto. Não invente uma chave substituta durante a tradução. O guia de preparação da Apple explica que APIs localizáveis preenchem catálogos durante uma compilação e que o parâmetro table ou tableName seleciona o catálogo. O guia também aceita comentários que explicam o contexto da string. Preparar o texto do app para tradução

Um comentário sintético útil seria: Resumo da seleção. O argumento 1 é o número de blocos selecionados. O argumento 2 é o número de grupos que contêm esses blocos. As duas contagens variam de forma independente. Mantenha cada contagem associada ao substantivo correspondente. Assim, o tradutor tem informações suficientes para distinguir dois argumentos, mesmo quando ambos têm o mesmo tipo numérico.

Prepare variações de plural independentes no catálogo

Comece com a mensagem no código-fonte localizável do app e compile o projeto. No editor de catálogo de strings, clique com a tecla Control na chave relevante e escolha Vary by Plural. A Apple documenta que o Xcode determina o especificador de formato da interpolação, adiciona as formas plurais do idioma e preenche inicialmente os campos de variação com o valor existente. Ainda é preciso editar esses valores pré-preenchidos. Localizar e variar texto com um catálogo de strings

Para o texto-fonte em inglês, os resultados renderizados esperados incluem Selected 1 tile in 1 group., Selected 3 tiles in 1 group. e Selected 1 tile in 2 groups. Uma única escolha baseada apenas na contagem de blocos não consegue produzir corretamente todas as combinações.

A demonstração de Catálogos de Strings da Apple mostra como variar vários argumentos por meio de substituições. Cada substituição contém casos de plural, e o inspetor indica a posição do argumento e o especificador de formato no estilo C. Em tempo de execução, as substituições selecionadas são combinadas com a mensagem ao redor. Conheça os Catálogos de Strings

Use esse mecanismo para as duas contagens independentes. Mantenha dentro da variação correspondente as palavras que precisam concordar com uma contagem, em vez de deixar um substantivo com plural fixo na frase ao redor. Dê nomes significativos às substituições quando o editor permitir e, em seguida, confira o mapeamento: a substituição de blocos ainda precisa usar o argumento 1, e a de grupos precisa usar o argumento 2.

Não exija que cada localização de destino reproduza o inventário de ramificações do inglês. A Apple documenta que o Xcode adiciona variações de plural específicas para cada idioma. Adicionar uma variação na localização de origem também a propaga para as traduções; adicioná-la somente em outra localização afeta apenas aquela localização. Confira as ramificações reais do idioma de destino antes de exportar. Localizar e variar texto com um catálogo de strings

Preserve a identidade dos argumentos quando a redação mudar de ordem

A posição de um marcador na frase e o número do argumento têm funções diferentes. O tradutor pode precisar colocar a contagem de grupos antes da contagem de blocos sem alterar a ordem em que o app fornece esses valores.

A referência de especificadores de formato da Apple documenta a notação posicional com n$. Por exemplo, %1$lld se refere ao argumento 1 com uma conversão de inteiro long long, enquanto %2$lld se refere ao argumento 2 com essa conversão. %d representa outro tipo de inteiro; não é uma forma abreviada de %lld. A referência está arquivada, então use-a para consultar essas regras de formatação estabelecidas junto ao fluxo de trabalho atual do catálogo. Especificadores de formato de string

Considere o fragmento ilustrativo de formato Groups: %2$lld; tiles: %1$lld. Com o argumento 1 igual a 3 e o argumento 2 igual a 2, o resultado esperado é Groups: 2; tiles: 3. Este fragmento demonstra apenas a ordem dos argumentos; ele não implementa a seleção gramatical de plural e não deve substituir as substituições do catálogo.

Confira os marcadores pelo significado, índice e tipo. Verificar apenas se restaram dois sinais de porcentagem não detectaria a troca de contagens. Conferir somente os tipos também não detectaria a troca, pois ambos os valores são inteiros. Da mesma forma, mudar a ordem dos argumentos do app apenas para corresponder a uma tradução alteraria o contrato para todas as outras traduções que usam essa entrada.

Ao enviar o material, peça ao tradutor que preserve as associações dos argumentos e os tipos de formatação exportados enquanto adapta a redação. Uma mudança estrutural em uma substituição precisa ser revisada explicitamente à luz do contrato. Alterar a ordem das palavras pode ser perfeitamente apropriado.

Exporte um pacote que o tradutor possa devolver

Antes de exportar, ative a configuração de compilação do projeto Use Compiler to Extract Swift Strings para incluir as strings localizáveis do Swift. Selecione o projeto no navegador de projetos, escolha Product > Export Localizations, selecione as localizações necessárias e o destino e faça a exportação. A Apple documenta essas etapas e o pacote .xcloc resultante. Exportar localizações

As duas extensões de catálogo têm funções distintas. O arquivo .xcstrings do projeto contém seu Catálogo de Strings. O pacote .xcloc exportado é o material enviado ao tradutor; sua pasta Localized Contents contém XLIFF, e sua pasta Notes pode incluir texto de apoio. Envie o pacote junto com a nota do contrato, em vez de reduzir a mensagem a uma lista de duas colunas com as frases visíveis. Exportar localizações

Confira se a ferramenta de tradução oferece suporte a variações do Catálogo de Strings em XLIFF. A Apple explica que os identificadores de variação derivados do catálogo codificam a chave da string e a configuração de variação, e documenta a configuração Localization Prefers String Catalogs para essa representação de exportação. Essas estruturas precisam sobreviver ao caminho de volta. Conheça os Catálogos de Strings

Use esta lista prática para conferir o material enviado. Ela é uma recomendação de fluxo de trabalho derivada da estrutura documentada do pacote e do contrato do exemplo.

  • Devolva o pacote .xcloc traduzido com os recursos relevantes intactos.
  • Preserve os identificadores das mensagens e os caminhos das variações, a menos que uma mudança estrutural intencional esteja documentada.
  • Forneça o texto de destino para as ramificações de plural exigidas pela localização de destino.
  • Preserve as identidades dos argumentos, os tipos numéricos e o mapeamento das substituições.
  • Identifique quaisquer alterações na origem recebidas após a exportação para que possam ser conciliadas antes da importação.

Se a ferramenta do tradutor não conseguir preservar as entradas com variações, use o Xcode para editar a localização exportada ou inserir as traduções no catálogo do projeto. A Apple documenta a edição de alvos XLIFF e de Catálogos de Strings no Xcode; exportações posteriores incluem as alterações feitas no catálogo. Uma troca de texto simples deixa para alguém reconstruir a estrutura das variações. Editar arquivos XLIFF e de catálogo de strings

Importe o retorno e confira as diferenças reais

Mantenha a exportação original disponível para comparação. Quando o pacote traduzido voltar, selecione o projeto e escolha Product > Import Localizations. Selecione a pasta do Catálogo de Localização do Xcode. Na interface de importação, confira os avisos e erros em Issues View e as alterações em File View antes de concluir a importação. A Apple informa que o editor de comparação exibe a versão importada à esquerda e a versão atual do projeto à direita. Importar localizações

Para strings originadas em um catálogo, a Apple documenta a importação das traduções de volta para o Catálogo de Strings correspondente. Depois da importação, abra novamente a entrada do resumo da seleção e confira as duas substituições, seus mapeamentos de argumentos e suas ramificações no idioma de destino. Conheça os Catálogos de Strings

Use uma sequência de diagnóstico focada se algo parecer errado. Se faltar uma entrada, compare a tabela e a chave com a exportação original. Se faltarem variantes de plural, compare a estrutura de variações recebida. Se as contagens aparecerem junto aos substantivos errados, compare os mapeamentos de argumentos. Se apenas uma combinação estiver incorreta, confira o texto dessa ramificação antes de alterar o código do app. Essa sequência segue as dependências do exemplo; não significa que o Xcode detecte automaticamente todas as violações do contrato.

Teste contagens diferentes para detectar argumentos trocados

Uma importação bem-sucedida confirma que o Xcode aceitou o material entregue. O exemplo ainda precisa de verificações de comportamento. Use os dados de teste do app ou um conjunto de dados de desenvolvimento para renderizar as combinações a seguir. As frases esperadas ilustram o contrato do texto-fonte em inglês; a redação e a seleção de ramificações no idioma de destino devem seguir a localização de destino.

Contagem de blocos Contagem de grupos Resultado esperado em inglês O que ajuda a revelar
1 1 Selected 1 tile in 1 group. As duas formas do singular
3 1 Selected 3 tiles in 1 group. Variação independente dos blocos
1 2 Selected 1 tile in 2 groups. Variação independente dos grupos
3 2 Selected 3 tiles in 2 groups. Valores diferentes que revelam a troca de argumentos

Adicione uma verificação com contagem zero se o app puder exibir uma seleção vazia. Escolha também valores que exercitem todas as categorias de plural exigidas por cada localização de destino. As quatro linhas acima cobrem as combinações de singular e plural do inglês, mas não todas as ramificações possíveis no idioma de destino.

Para executar o app para Mac em uma localização de destino, escolha Product > Scheme > Edit Scheme, selecione Run e abra Options. Defina App Language e, se necessário, App Region; feche o editor, selecione o destino de execução para Mac e execute o app. A Apple documenta esse fluxo de teste baseado no esquema. Testar localizações ao executar o app

Leia a mensagem renderizada e confira se ela cabe na interface para desktop. Se as contagens continuarem associadas aos substantivos corretos, cada ramificação exigida funcionar e a estrutura recebida corresponder ao contrato previsto, o processo de tradução de ida e volta terá preservado o comportamento de que esse rótulo precisa. Mantenha a nota do contrato junto ao material entregue para que a próxima alteração na redação possa ser conferida segundo os mesmos requisitos explícitos.

Fontes