Como corrigir a tradução do Tutor LMS com WPML ou Polylang no WordPress
O que é tradução do Tutor LMS com WPML ou Polylang?
O Tutor LMS tem dois tipos de texto que muita gente trata como se fossem um só. O primeiro são as strings da interface: botões como Enroll Now, rótulos do painel do aluno, status de matrícula e modelos de e-mail. Esses textos vêm dos arquivos de idioma do próprio plugin (tutor.pot e os derivados .po/.mo) e não passam por WPML nem por Polylang. O segundo tipo é o conteúdo que você cria: cursos, lições, tópicos, questionários e perguntas. Esse conteúdo é o que o WPML ou o Polylang traduzem, post a post, como em qualquer custom post type.
A tradução do Tutor LMS com WPML ou Polylang não funciona quando esses dois níveis são misturados. Se você ativa o WPML esperando que ele traduza os botões da interface, eles continuam em inglês porque dependem do arquivo .mo, não do WPML. Se você traduz as strings com o PO Edit mas o custom post type courses não está marcado como traduzível no WPML ou no Polylang, os cursos não ganham versão em outro idioma. A documentação oficial do Tutor LMS deixa claro que a tradução do plugin é feita por três caminhos distintos, e cada nível de texto usa um caminho diferente.
Como identificar
- Os botões e rótulos do Tutor LMS, como ‘Enroll Now’, ‘Add to Cart’, ‘Course Content’ e ‘Start Learning’, continuam em inglês mesmo com o site definido em português e o WPML ou Polylang ativos.
- Os cursos criados no Tutor LMS não mostram a opção de adicionar tradução no editor do WPML, ou não aparecem na lista de conteúdo traduzível do Polylang.
- O seletor de idiomas troca a interface do WordPress, mas as lições e os tópicos do curso continuam exibindo o conteúdo no idioma original.
- Os modelos de e-mail do Tutor LMS (confirmação de matrícula, conclusão de curso) chegam ao aluno sempre no idioma padrão, ignorando o idioma da página onde ele se matriculou.
- Ao traduzir um curso pelo WPML, as lições associadas não são vinculadas à versão traduzida e o aluno cai no curso original em inglês.
Como prevenir
- Defina desde o início qual plugin cuida de cada nível: arquivo .po/.mo para a interface do Tutor LMS e WPML ou Polylang para os cursos e lições, sem misturar os dois papéis.
- Mantenha os arquivos de tradução em /wp-content/languages/plugins/, nunca dentro da pasta do plugin, para que as atualizações do Tutor LMS não apaguem a sua tradução.
- Sempre que criar um novo tipo de conteúdo no Tutor LMS, verifique se ele está marcado como traduzível no WPML ou no Polylang antes de publicar conteúdo nele.
- Use o PO Edit para gerar o par .po/.mo e nunca edite o tutor.pot diretamente, já que o WordPress só carrega o arquivo .mo compilado.
- Acompanhe a tradução oficial em translate.wordpress.org/projects/wp-plugins/tutor/ para reaproveitar strings já traduzidas pela comunidade e reduzir o trabalho manual.
Causa
- O custom post type 'courses' do Tutor LMS não está marcado como traduzível em WPML -> Configurações -> Tipos de Conteúdo de Posts (ou no painel Idiomas do Polylang), então o WPML/Polylang não cria versões traduzidas dos cursos.
- Você espera que o WPML ou o Polylang traduzam os textos da interface (botões e rótulos), mas, segundo a doc oficial, essas strings vêm do arquivo tutor.pot e só são traduzidas por arquivo .po/.mo ou pela plataforma translate.wordpress.org, não pelos plugins multilíngues.
- O arquivo de tradução do Tutor LMS está com nome ou local errado: o par tutor-pt_BR.po e tutor-pt_BR.mo precisa ficar em /wp-content/languages/plugins/, e não dentro de /wp-content/plugins/tutor/languages/, que é sobrescrito a cada atualização do plugin.
- Você editou o tutor.pot diretamente em vez de gerar um .po/.mo a partir dele, então o WordPress não carrega a tradução, pois ele só lê arquivos .mo compilados.
- O addon WPML Multilingual CMS do Tutor LMS não está ativado em Tutor LMS -> Addons, fazendo o WPML não reconhecer a estrutura de cursos, tópicos e lições para tradução conjunta.
- As lições e tópicos foram traduzidos isoladamente, mas não foram reassociados ao curso traduzido, então o WPML/Polylang exibe a versão original do conteúdo filho.
Como resolver
- Separe o que é interface do que é conteúdo: Antes de mexer em qualquer plugin, entenda que botões e rótulos do Tutor LMS são strings de interface (vêm do arquivo de idioma do plugin) e cursos, lições e questionários são conteúdo (traduzidos por WPML ou Polylang). Cada um tem um caminho diferente e tratar tudo no WPML é a causa mais comum de tradução incompleta.
Interface (botões, e-mails): arquivo .po/.mo do Tutor LMS Conteúdo (cursos, lições, quizzes): WPML ou Polylang - Traduza as strings da interface com arquivo .po/.mo: Para colocar os botões e rótulos em português, gere um par de arquivos de idioma a partir do template tutor.pot usando o PO Edit, conforme a documentação oficial. Salve os arquivos com o nome correto e na pasta segura, que não é apagada nas atualizações do plugin.
Abra /wp-content/plugins/tutor/languages/tutor.pot no PO Edit (poedit.net) Traduza as strings e gere tutor-pt_BR.po e tutor-pt_BR.mo Envie os dois arquivos para /wp-content/languages/plugins/ - Marque o curso como tipo de conteúdo traduzível: Para que WPML ou Polylang traduzam os cursos, o custom post type precisa estar habilitado para tradução. Sem isso, o editor de tradução simplesmente não oferece a opção de versão em outro idioma para os cursos.
WPML: WPML -> Configurações -> Tradução de Tipos de Conteúdo -> marque 'Cursos' como Traduzível Polylang: Idiomas -> Configurações -> Custom post types -> habilite 'courses' - Ative o addon WPML Multilingual CMS do Tutor LMS: Se você usa o WPML, ative o addon oficial do Tutor LMS para que o WPML reconheça a relação entre curso, tópicos e lições e traduza a estrutura de forma conjunta, evitando que a lição traduzida fique órfã do curso original.
Painel WP -> Tutor LMS -> Addons Ative o addon 'WPML Multilingual CMS' - Traduza cursos, tópicos e lições e revise as associações: Crie a versão traduzida do curso e de cada lição pelo editor de tradução do WPML ou pela coluna de idiomas do Polylang. Depois, abra o curso traduzido e confirme que ele aponta para as lições traduzidas, e não para o conteúdo original.
WPML: WPML -> Tradução -> traduza o curso e as lições associadas Polylang: edite cada curso/lição e use a coluna do idioma de destino com o sinal + Abra o curso traduzido e confirme que tópicos e lições são as versões no idioma correto
<?php
// Registra o custom post type de cursos do Tutor LMS como traduzivel no Polylang.
// Use no functions.php do tema filho quando o post type nao aparece no painel do Polylang.
add_filter( 'pll_get_post_types', 'full_tutor_lms_polylang_cpt', 10, 2 );
function full_tutor_lms_polylang_cpt( $post_types, $is_settings ) {
if ( $is_settings ) {
// Garante que o post type 'courses' apareca nas configuracoes do Polylang.
$post_types['courses'] = 'courses';
} else {
// Torna os cursos efetivamente traduziveis.
$post_types['courses'] = 'courses';
}
return $post_types;
}














