WordPress multilíngue

Como traduzi 11 mil textos do TranslatePress sem copiar um por um

Com mais de 11 mil textos para traduzir, tirei as strings do banco do TranslatePress, organizei tudo em uma planilha e conferi cada linha antes de importar.

Assistir ao vídeo original no YouTube
Thumbnail do vídeo: Traduzindo um site com TranslatePress + Limite Google Translate

Eu estava traduzindo o site para vários idiomas e tinha três problemas de uma vez: texto demais para a caixa do Google Tradutor, a cota da API automática do TranslatePress que podia acabar no meio do caminho e um trabalho enorme de abrir cada frase no painel. Quando contei as strings, eram 11.404. Não fazia sentido tratar tudo uma por uma. Então fui para o banco de dados e montei um caminho com uma planilha.

Exporte só os textos necessários para uma planilha de uma coluna

Na época, eu já tinha traduzido o site para mais de cinco idiomas. Usava o Navicat para trabalhar com o banco e preferia baixar uma cópia para o computador. Tentar aplicar um lote de cerca de 20 mil linhas no servidor remoto chegou a levar umas três horas; no banco local, eu conseguia fazer as alterações bem mais rápido. O phpMyAdmin também serve para esse tipo de trabalho, mas para mim o ganho estava em não depender da conexão remota.

Separei as linhas que faziam sentido mandar para o tradutor. Código, trechos de HTML que podiam quebrar a planilha e textos em japonês ficaram de fora. Depois copiei a coluna de texto original para o BBEdit e conferi a quantidade: 11.404 linhas. Joguei tudo numa planilha de uma coluna, porque o Google Tradutor aceitava um arquivo maior do que a caixa de texto, que no meu uso cortava o conteúdo depois de 5 mil caracteres.

No primeiro momento tentei enviar um arquivo de texto. Às vezes demorava demais ou falhava; para mim, o XLS foi o que funcionou melhor. Também precisei ajustar delimitadores em alguns arquivos que apareciam com colunas a mais. O cuidado mais importante era manter uma linha por string. Se a planilha perde uma linha no meio, cada tradução abaixo dela pode parar no lugar errado.

Confira as 11.404 linhas antes de importar a tradução

Com o arquivo traduzido em mãos, removi o cabeçalho e a linha vazia que apareciam no resultado. Contei as linhas de novo antes de copiar o conteúdo para a coluna de tradução. Só continuei quando o total batia com as 11.404 originais. Essa conferência parece chata, mas é o que evita colocar a frase de uma página no lugar da frase de outra.

Na versão que eu usava, a tabela do TranslatePress tinha as colunas `original`, `translated` e `status`. Depois de preencher a tradução, eu marcava o status como 2 para o plugin reconhecer aqueles textos no meu fluxo e não tentar traduzi-los de novo pela API. Essa parte depende da versão e das configurações do TranslatePress: hoje a documentação, por exemplo, descreve o status 3 para traduções reaproveitadas pela memória automática e diz que uma tradução editada no painel passa para o status 2. Antes de alterar muitas linhas, eu criaria uma tradução manual de teste e olharia o valor que a sua instalação grava.

Terminada a planilha, eu levava a tabela local de volta ao servidor. Antes de substituir qualquer coisa, renomeava a tabela atual para deixá-la como cópia de segurança. Depois abria o site nos idiomas novos e conferia o resultado publicado. Fazer a troca sem backup ou sem validar a contagem seria arriscar perder o que já estava traduzido.

Mantenha o japonês original e revise hífens depois do lote

Eu não passava os caracteres japoneses pelo Tradutor. Nas minhas tabelas, ele às vezes inventava uma palavra ou colocava espaços no meio do kana. Para essas linhas, mantinha o texto original também na coluna traduzida. Hífens e traços deram outro tipo de problema: alguns viravam entidades, outros códigos, e alguns simplesmente sumiam. Tive que procurar os padrões no banco e corrigir o que tinha sido alterado, além de revisar as páginas no idioma correspondente.

O resultado não ficava perfeito sozinho. O Tradutor de documentos resolvia o volume, mas havia correções manuais depois. Ainda assim, foi assim que consegui levar o site a mais de dez idiomas sem pagar pela tradução automática da API em cada string. Para o meu caso, naquele momento, esse equilíbrio entre volume e revisão valia o trabalho.

Compare o lote com os limites atuais da API

Na época, eu tinha como referência cerca de 500 mil caracteres por mês na cota da API do Google Cloud. A página atual ainda mostra os primeiros 500 mil caracteres mensais de tradução NMT cobertos por um crédito de US$ 10. Esse valor depende do modelo e do uso da conta; a página de preços é o lugar para conferir o que vale antes de começar. A planilha resolvia o meu lote, mas não era a mesma integração automática que o TranslatePress chamava.

O Google Tradutor para computador hoje informa suporte a arquivos de até 10 MB nos formatos DOCX, PDF, PPTX e XLSX, com limite de 300 páginas para PDF. Eu usei XLS no meu processo antigo; agora salvaria a planilha como XLSX antes de enviar. Para documentos maiores, a própria documentação aponta para a API Cloud. E, qualquer que seja o caminho, eu ainda conferiria a quantidade de linhas e abriria as páginas traduzidas antes de considerar o trabalho pronto.

A experiência com os idiomas e os resultados do site está em como a tradução mudou as visitas e a receita. Para lidar com uma tabela do TranslatePress que cresceu demais, também escrevi sobre limpar o banco com n8n.