Texto em Voz para TranslatePress: O Que Funciona de Verdade
O TranslatePress traduz o HTML renderizado de uma página no momento da requisição e armazena cada tradução em tabelas locais do banco de dados. Há um único ID de post por artigo, e a troca de idioma acontece via trp_translate(), não por meio de posts duplicados. Esse detalhe muda completamente como o texto em voz precisa funcionar em um site com TranslatePress.
Este é o quinto e último post da nossa série sobre TTS multilíngue. Já abordamos WPML, Polylang, Weglot e GTranslate. O TranslatePress ocupa uma posição técnica entre eles, e a configuração do áudio reflete isso.
Como o TranslatePress difere do WPML, Polylang e Weglot
O WPML e o Polylang criam um post separado para cada idioma. Cada tradução tem seu próprio ID de post, seu próprio post_content e seu próprio permalink. A geração de áudio é direta porque cada idioma é um objeto WordPress distinto.
O Weglot segue o caminho oposto. As traduções ficam nos servidores do Weglot e são injetadas na página via proxy ou subdomínio. O banco de dados do WordPress nunca vê o texto traduzido, e é por isso que o TTS no lado do servidor com Weglot é difícil sem hooks de JavaScript.
O TranslatePress é o meio-termo. Há um post por artigo, então post_content contém apenas o idioma padrão. Mas todas as traduções ficam localmente no banco de dados do WordPress, nas tabelas wp_trp_. Você pode lê-las, consultá-las e enviá-las para um mecanismo de TTS. Isso muda a abordagem de áudio em relação a qualquer um dos outros quatro plugins.
Onde as traduções realmente ficam armazenadas
O TranslatePress armazena as traduções em tabelas dedicadas com o prefixo wp_trp_. Cada par de idiomas tem sua própria tabela de dicionário, identificada como wp_trp_dictionary_<source>_<target>. Existe também a tabela wp_trp_original_strings para as strings de origem e tabelas gettext para traduções de temas e plugins.
O armazenamento é direcional. A tradução alemã de um site em inglês fica no dicionário inglês-alemão. Para recuperá-la, é preciso usar a mesma direção. A função pública que importa aqui é trp_translate(), que recebe uma string de conteúdo e um código de idioma e retorna a versão traduzida.
if ( function_exists( 'trp_translate' ) ) {
$translated = trp_translate( $post->post_content, 'de_DE' );
// Passe $translated para o mecanismo de TTS, não $post->post_content.
}
Para uma integração de TTS, essa função é a fonte primária. Ler post_content diretamente sempre retorna o idioma padrão, independentemente da URL que o visitante está acessando. Consulte a documentação de integração com TranslatePress para ver como o TTSWP lida com isso.

A armadilha dos códigos de localidade
O TranslatePress usa códigos de localidade completos, não slugs. Alemão é de_DE, não de. Francês é fr_FR. Português do Brasil é pt_BR. Qualquer integração que presuma slugs de duas letras no estilo do Polylang vai falhar silenciosamente no TranslatePress.
A documentação para desenvolvedores do TranslatePress é explícita sobre isso. O código de idioma passado para trp_translate() é a localidade definida em Configurações, TranslatePress, Geral, e não é necessariamente igual ao slug de idioma na URL. Um slug simples como de não corresponde a nenhum dicionário, então a função cai de volta para a string original sem avisar. Se você escrever código personalizado, normalize os códigos de idioma antes de chamar trp_translate(), e armazene o mesmo formato de localidade junto dos seus arquivos de áudio para poder relacioná-los depois.
Estrutura de URL e cache
O TranslatePress usa um subdiretório por idioma como padrão. Sua página em inglês fica em site.com/blog/post e a versão alemã em site.com/de/blog/post. Há também a opção de usar um subdiretório para o idioma padrão, tornando todos os idiomas simétricos.
Esse é o cenário ideal para cache. URLs distintas geram chaves de cache distintas por idioma. WP Rocket, LiteSpeed e caches de borda em CDN tratam /de/blog/post como um recurso separado de /blog/post, então o arquivo de áudio em alemão é entregue com a página alemã e o áudio em inglês com a página em inglês. Nossa documentação de integração com cache cobre as regras de exclusão, se você precisar.
O único risco é o complemento pago de Detecção Automática de Idioma do Usuário. Ele redireciona visitantes com base no idioma do navegador, o que pode conflitar com o cache de página e entregar o redirecionamento errado ao usuário errado. Abordamos o mesmo padrão no post sobre Polylang. Menos sites com TranslatePress usam detecção porque é um complemento pago, mas se você usa, exclua a lógica de redirecionamento do cache.
O problema de tradução da interface do player
Este caso é exclusivo do TranslatePress. O plugin detecta e traduz strings inseridas por JavaScript, o que é incomum. A maioria das ferramentas de tradução ignora conteúdo renderizado via JS. O TranslatePress captura isso no DOM após a renderização e oferece a opção de traduzir.
O efeito colateral é que rótulos do player de áudio como "Play", "Pause" e "Ouça este artigo" aparecem no editor do TranslatePress como strings traduzíveis. Se essas strings forem traduzidas automaticamente sem revisão, o player pode acabar com textos de botão estranhos ou errados e, pior, rótulos de acessibilidade com erros que confundem leitores de tela.
Há duas formas de resolver isso dentro do TranslatePress. Adicione o atributo data-no-translation a qualquer elemento que você queira excluir. Ou use os seletores de exclusão em Configurações Avançadas para ignorar containers inteiros por seletor CSS. Ambas as opções estão documentadas nas próprias configurações do TranslatePress. Para o player do TTSWP especificamente, exclua o wrapper do player por classe e deixe os rótulos traduzidos do player virem pelos próprios arquivos de idioma do plugin.
O que excluir
- O elemento container do player de áudio
- Rótulos ARIA nos controles de play, pause e progresso
- Exibições de tempo e contadores de duração
- Quaisquer rótulos de nome de voz ou idioma renderizados pelo TTSWP
Se você quiser personalizar o visual do player após excluí-lo, nossa documentação de CSS personalizado cobre os seletores.
O problema de dessincronização por edição de conteúdo
O TranslatePress vincula cada tradução à string de origem exata. Edite o original, e o TranslatePress cria uma nova string de origem e desvincula a tradução existente. A Memória de Tradução sugere a tradução antiga de volta, mas até que um humano confirme, o idioma de destino volta ao de origem.
Para o texto em voz, isso significa que o áudio pode ficar fora de sincronia com o texto traduzido após qualquer edição. Uma vírgula adicionada em inglês desvincula a tradução de todos os idiomas para aquela string. O áudio em alemão ainda diz a frase antiga, mas o texto alemão visível já exibe a nova.
Lista de verificação prática após editar conteúdo:
- Confirme a nova string de origem no editor do TranslatePress para cada idioma ativo.
- Regenere o áudio no post do idioma padrão primeiro.
- Regenere o áudio para cada idioma e, em seguida, reproduza o áudio em cada URL localizada para confirmar que o novo arquivo corresponde ao texto visível.
- Limpe o cache de página de todas as URLs localizadas, não apenas a padrão.
Configurando o TTSWP em um site com TranslatePress
Veja o fluxo atual. A documentação de integração sempre descreve o comportamento mais recente.
- Instale o TTSWP pelo diretório de plugins do WordPress.org. O guia de instalação explica cada etapa.
- Conecte o plugin ao backend do TTSWP. Os planos gratuitos incluem créditos iniciais para você testar o fluxo completo antes de pagar. Veja como conectar seu site.
- Confirme que o TranslatePress está ativo e que pelo menos um idioma de destino está configurado com um código de localidade completo.
- Mapeie uma voz por idioma usando o mapeamento de idioma para voz. Atribua uma voz em alemão a
de_DE, uma voz em francês afr_FR, e assim por diante. Veja o catálogo de vozes para as opções disponíveis. - Publique ou atualize um post. O áudio é gerado primeiro para o idioma padrão.
- Reproduza o áudio em cada URL traduzida. A geração acontece sob demanda. Na primeira vez que um visitante reproduzir o áudio em um idioma secundário, o TranslatePress informa ao TTSWP qual idioma está ativo, e o TTSWP gera e armazena em cache o arquivo para aquele idioma. Todas as reproduções seguintes usam o arquivo em cache.
- Exclua o player do TranslatePress usando
data-no-translationou um seletor em Configurações Avançadas para que os rótulos do player sejam controlados pelos próprios arquivos de tradução do TTSWP.
O TTSWP armazena um arquivo de áudio por post e por idioma, e o player segue o idioma da URL que o visitante está acessando. Em /de/blog/post o player carrega o arquivo em alemão, e na URL padrão carrega o arquivo no idioma padrão. Com a tradução automática ativa, o TTSWP lê o texto traduzido diretamente do TranslatePress antes de enviá-lo ao ElevenLabs, então o áudio corresponde ao que o visitante vê na página.
TranslatePress gratuito vs pago para TTS
O TranslatePress gratuito suporta um idioma adicional, inclui 2.000 palavras traduzidas por IA via TranslatePress AI e permite usar o Google Translate com sua própria chave de API. Isso é suficiente para manter um blog bilíngue com áudio correspondente em dois idiomas.
O TranslatePress pago adiciona idiomas extras ilimitados, o SEO Pack para slugs traduzidos, meta e controle de hreflang, suporte ao DeepL, contas de tradutor, o complemento de Detecção Automática de Idioma do Usuário e domínio diferente por idioma. Para um site que precisa de mais de dois idiomas, tags hreflang para mecanismos de busca ou traduções com qualidade DeepL antes da geração de TTS, o plano pago é a escolha prática. A qualidade do áudio em si não depende do plano.
SEO e AEO com áudio por idioma
O SEO Pack permite configurar tags hreflang por idioma, com opções de localidade específica por país, idioma independente de região ou ambos. Para mecanismos de busca e motores de resposta por IA, é isso que sinaliza qual áudio corresponde a qual região.
Adicione uma entrada de schema AudioObject por URL de idioma, com o valor correto de inLanguage correspondendo ao hreflang. Google e Bing identificam o par de idiomas, e em nossos próprios testes, motores de IA como Perplexity e ChatGPT Search citam artigos com áudio com mais frequência quando o schema está correto e a URL do áudio resolve. Escrevemos mais sobre isso no post sobre AEO e áudio.
Problemas comuns e soluções
| Problema | Causa | Solução |
|---|---|---|
| Áudio reproduzido no idioma errado | Texto lido de post_content em vez de trp_translate() | Passe o texto por trp_translate( $content, $locale ) com o código de localidade completo |
| Botões do player traduzidos de forma errada | O TranslatePress capturou os rótulos do player inseridos via JS | Adicione data-no-translation ao wrapper do player ou exclua o container por seletor em Configurações Avançadas |
| Áudio sumiu após edição de conteúdo | Editar a string de origem desvincula as traduções e, consequentemente, o áudio por idioma | Confirme as traduções no editor do TranslatePress e regenere o áudio por idioma |
| Código de localidade incompatível | Integração passando de em vez de de_DE | Normalize para localidade completa antes de chamar trp_translate() |
| Layout RTL quebrado para árabe ou hebraico | CSS do player sem suporte a RTL | Use CSS personalizado para espelhar os controles do player em localidades RTL |
| Redirecionamento em cache para idioma errado | Complemento de Detecção Automática de Idioma do Usuário interagindo com o cache de página | Exclua o redirecionamento do cache ou desative a detecção |
Nota sobre acessibilidade
A narração em áudio atende a vários critérios de sucesso da WCAG quando o player pode ser operado por teclado e está rotulado corretamente. Se você excluir o player do TranslatePress, mantenha os rótulos ARIA nas traduções do próprio TTSWP. Nosso guia de áudio para WCAG cobre os critérios em detalhes, e o tutorial principal de configuração é um bom ponto de partida.
Perguntas frequentes
O TranslatePress funciona com texto em voz?
Sim. O TranslatePress armazena as traduções localmente nas tabelas wp_trp_ do banco de dados, e a função trp_translate() retorna o conteúdo traduzido no lado do servidor. Uma integração de TTS pode ler o texto traduzido e gerar áudio por idioma, desde que identifique o áudio pelo ID do post mais a localidade e use códigos completos como de_DE em vez de slugs.
Preciso do TranslatePress pago para ter áudio?
Não. O TranslatePress gratuito suporta um idioma adicional e inclui tradução via TranslatePress AI, Google Translate com sua própria chave ou edição manual. Isso é suficiente para um site bilíngue com áudio correspondente. O plano pago adiciona idiomas ilimitados, SEO Pack, DeepL e complementos de detecção, úteis se você precisar de mais de dois idiomas ou controle de hreflang.
Por que os botões do meu player foram traduzidos de forma errada?
O TranslatePress detecta strings inseridas via JS, então os rótulos do player de áudio aparecem no editor e podem ser traduzidos automaticamente. Para corrigir, adicione data-no-translation ao wrapper do player, ou exclua o container do player em Configurações Avançadas usando um seletor CSS. Os rótulos do player passam a vir dos próprios arquivos de idioma do TTSWP.
Por que meu áudio parou de corresponder à tradução?
Editar a string original no TranslatePress cria uma nova string de origem e desvincula a tradução existente. A Memória de Tradução sugere a antiga de volta, mas até você confirmar, o idioma de destino volta ao de origem. Regenere o áudio no post padrão e em cada idioma após qualquer edição de conteúdo e, em seguida, limpe o cache de todas as URLs localizadas.
Qual a diferença entre TranslatePress e Weglot para TTS?
O Weglot armazena as traduções em seus próprios servidores e as injeta na página, então o WordPress nunca vê o texto traduzido no lado do servidor. O TranslatePress armazena todas as traduções no seu banco de dados local e expõe trp_translate() para acesso no lado do servidor. Isso torna a geração de áudio por idioma mais direta no TranslatePress do que no Weglot.
O que fazer agora
Instale o Conversão de Texto em Voz - TTSWP pelo diretório de plugins do WordPress.org, conecte ao seu conta e mapeie uma voz para cada idioma que você já usa no TranslatePress. Publique um post, reproduza o áudio em cada URL traduzida e confirme que o áudio corresponde ao texto visível. Se algo sair do esperado, a documentação de integração com TranslatePress é o primeiro lugar para verificar.
Artigos relacionados
Text to Speech para Sites com Polylang: O Que Realmente Funciona
Como adicionar conversão de texto em voz ao Polylang gerando um arquivo de áudio por tradução, com a voz certa em cada idioma, sem quebrar o cache.
Text to Speech para Sites WPML: O Que Realmente Funciona
Como adicionar conversão de texto em voz ao WPML com a voz certa por idioma, áudio separado por tradução e sem erros de detecção de idioma via AJAX.
Melhores Plugins de Síntese de Voz no WordPress (2026)
Um guia imparcial com os sete melhores plugins de síntese de voz do WordPress em 2026, com pontos fortes, limitações reais e uma tabela completa de comparação.