Para encontrar uma tradução desatualizada que ainda aparece como traduzida, rastreie a mensagem de origem alterada até sua entrada no String Catalog, faça uma compilação e compare a redação. Uma marca de seleção verde, por si só, não resolve uma divergência que você já identificou.

Este fluxo de trabalho é para quem mantém um app para Mac no Xcode com um catálogo .xcstrings existente. A tarefa é identificar quais traduções precisam de atenção após uma edição no texto de origem em inglês, preservar o texto existente que ainda seja útil e verificar a mensagem corrigida no app em execução.

O que deve acontecer quando uma mensagem de origem muda?

A Apple documenta que a alteração de uma string de origem marca suas traduções para revisão. Os estados do catálogo distinguem strings não traduzidas (New), strings que precisam de atenção (Needs Review) e strings traduzidas com uma marca de seleção verde. O estado separado Stale indica que o Xcode não conseguiu mais encontrar no código uma string traduzida anteriormente. Conheça os String Catalogs

Essa terminologia importa ao diagnosticar este problema. Uma tradução desatualizada de uma mensagem que ainda é usada pelo app exige revisão. Buscar apenas o estado Stale do catálogo pode não encontrá-la.

O comportamento documentado pela Apple para alterações no texto de origem estabelece um resultado esperado, mas não explica por que uma entrada específica manteve o status de traduzida. Quando isso acontece, investigue a relação entre o texto de origem editado e o catálogo antes de considerar a marca de seleção como evidência suficiente de que a redação está atualizada.

Localize a mensagem exata antes de revisar as traduções

Comece com uma mensagem alterada. Anote a redação anterior em inglês, a redação atual, a chave de busca, caso seja separada, e o nome do catálogo. Esse pequeno registro comparativo é uma ajuda de diagnóstico recomendada, não um recurso do Xcode. Ele fornece algo concreto para verificar quando várias entradas parecem semelhantes.

Por exemplo, suponha que um botão do app para Mac antes exibisse Open item e agora exiba Open selected items. A questão da revisão é se cada tradução ainda descreve a abertura da seleção atual, inclusive quando ela pode conter vários itens. Encontrar apenas uma tradução para a palavra Open não responderia a essa questão.

Separe a chave de busca da redação exibida

O Swift permite uma chave de busca estática explícita com um defaultValue separado. Esse valor padrão costuma ser o texto no idioma de desenvolvimento e é usado quando a busca falha. Um comment fornece contexto ao tradutor. Se nenhuma tabela for especificada, a busca usa Localizable; se nenhum bundle for especificado, ela procura no bundle principal do app. Inicializador de string com chave explícita do Swift

Use este registro ilustrativo de mensagem para distinguir esses componentes. São valores sintéticos, não um arquivo de catálogo nem um programa executável.

Componente Antes da edição Depois da edição
Chave de busca selection.open selection.open
Valor de origem em inglês Open item Open selected items
Contexto para o tradutor Button that opens one item Button that opens every item in the current selection
Tabela do catálogo Localizable Localizable

Neste caso, o identificador permanece igual, enquanto a mensagem muda. Uma auditoria que compare apenas os nomes das chaves não perceberia essa edição. Compare também o valor de origem e o contexto.

Algumas chamadas de localização do Swift usam a redação no idioma de desenvolvimento como chave. A Apple descreve String.LocalizationValue como compatível com esse modelo, inclusive com interpolação. Nessa configuração, mudar a redação também pode mudar a chave de busca; portanto, verifique as entradas antiga e nova, em vez de presumir que a tradução continua associada a um único identificador. String.LocalizationValue

Faça uma compilação e inspecione o local de origem

No Xcode, escolha Product > Build e selecione o catálogo relevante no navegador do projeto. A Apple documenta que as compilações atualizam os catálogos com as alterações em strings localizáveis no código. Escolha Editor > Assistant e selecione a chave para inspecionar o local de origem. Localizar e variar texto com um catálogo de strings

Compare o texto de origem do catálogo com a edição pretendida. Se o catálogo ainda contiver Open item, primeiro descubra por que a nova origem não chegou a essa entrada. Revisar uma tradução de destino com base no texto de origem antigo deixaria o problema original sem solução.

Verifique a tabela e o bundle usados pela chamada de localização, especialmente quando o projeto contém vários catálogos ou módulos. A Apple documenta que é possível passar o nome de uma tabela para selecionar um catálogo e um bundle apropriado para strings fora do bundle principal do app. Ela também recomenda APIs localizáveis para que o Xcode possa encontrar o texto voltado ao usuário. Preparar o texto do app para tradução

Para uma entrada gerenciada manualmente, inspecione e mantenha a origem diretamente: a Apple afirma que a sincronização na compilação não atualiza nem remove strings gerenciadas manualmente. Não espere que apenas recompilar a atualize. Conheça os String Catalogs

Compare o significado com uma tabela de decisão para alterações no texto de origem

Quando o texto de origem atual estiver presente, selecione cada idioma de destino e examine a entrada afetada. O Xcode permite filtrar texto e ordenar por estado, o que pode ajudar a localizar itens que precisam de revisão. Examine também a mensagem alterada específica, mesmo que seu status continue como traduzida. Conheça os String Catalogs

O guia de decisão a seguir se baseia na comparação do significado das mensagens, e não em uma avaliação automática da tradução. Os rótulos em inglês são exemplos sintéticos. Ele ajuda a determinar o que pedir ao profissional de localização que verifique, sem presumir que toda alteração no texto de origem exija uma mudança na redação de destino.

Alteração ilustrativa no texto de origem O que examinar Decisão de revisão
Open item → Open selected items O escopo da seleção e o sentido singular ou plural Verifique se a tradução ainda descreve a ação completa.
Show details → Hide details A direção da ação Verifique se a ação traduzida muda de acordo.
Items → Items: A pontuação e a posição do rótulo Mantenha a redação somente se ela continuar adequada ao contexto.
Open continua Open, mas seu uso muda Se o rótulo agora nomeia uma ação diferente Revise o contexto mesmo que o texto de origem seja idêntico.

Para cada opção, compare três coisas: o significado da mensagem antiga, o significado da mensagem atual e o que a tradução comunica agora. Uma diferença visível na origem indica que vale a pena revisar; por si só, não prova que a redação de destino precise mudar.

Alterações apenas no contexto merecem uma verificação explícita. A Apple documenta que os comentários servem de orientação aos tradutores, mas a documentação consultada não estabelece que toda edição de comentário invalide automaticamente as traduções existentes. Se um rótulo em inglês inalterado adquirir outro significado, inclua-o na fila de revisão. Preparar o texto do app para tradução

Se a mensagem contiver uma contagem ou uma variante específica de dispositivo, expanda essas variantes em vez de inspecionar somente a linha principal. A Apple documenta variações de plural e de dispositivo nos catálogos. Em inglês, uma contagem pode exigir 1 item e 2 items; revise as formas aplicáveis para cada idioma de destino em vez de copiar mecanicamente a gramática do inglês. Localizar e variar texto com um catálogo de strings

Resolva a revisão sem descartar traduções úteis

Use o menu de contexto da entrada para marcar uma tradução duvidosa para revisão. Quando a redação existente tiver sido verificada e continuar adequada, escolha Mark as Reviewed; caso contrário, atualize a tradução. Essas ações de revisão estão documentadas no passo a passo de String Catalogs da Apple. Conheça os String Catalogs

Mantenha a redação existente disponível enquanto a compara com o texto de origem alterado. Apagar traduções apenas para reduzir a ambiguidade elimina material útil para comparação. Da mesma forma, evite apagar uma entrada só porque sua tradução está desatualizada: primeiro confirme se o app ainda usa a chave dela.

Para o exemplo sintético da seleção, uma solicitação útil ao profissional de localização incluiria a chave selection.open, a alteração de Open item para Open selected items e a explicação de que o botão abre todos os itens selecionados. Isso dá a ele uma ação e um escopo específicos para avaliar.

Há um limite prático: a documentação da Apple consultada para este fluxo de trabalho não descreve um comando retrospectivo que reconstrua todas as alterações anteriores no texto de origem que tenham passado despercebidas em entradas marcadas como traduzidas. Se a redação anterior não estiver disponível, você pode revisar a origem atual em comparação com a tradução atual, mas não pode determinar exatamente quando a divergência começou. Use uma revisão anterior do projeto ou uma cópia salva do texto de origem, se a comparação entre antes e depois for importante.

Verifique a mensagem corrigida no app para Mac

Depois de editar, teste a interface real. Escolha Product > Scheme > Edit Scheme, selecione Run, abra Options e escolha o idioma de destino em App Language. Feche a caixa de diálogo, selecione o destino de execução do Mac e execute o app. A Apple documenta esse teste de localização baseado no esquema. Testar localizações ao executar o app

Volte ao controle exato que motivou a investigação. Para Open selected items, experimente uma seleção única e uma seleção múltipla. Verifique se o rótulo descreve a ação nas duas situações e se o texto exibido corresponde à entrada do catálogo que você editou. Uma divergência nessa etapa é motivo para rever a chave de busca, a tabela, o bundle ou a variante aplicável.

Conclua registrando claramente a situação de cada idioma afetado: a redação existente continua adequada, a tradução foi atualizada ou a revisão ainda está pendente. Isso encerra a tarefa considerando a mensagem alterada e seu comportamento na interface, com o estado do catálogo dando suporte a essa decisão.

Fontes