# Como corrigir a tradução do Tutor LMS com WPML ou Polylang no WordPress

A tradução do Tutor LMS com WPML ou Polylang não funciona quando você confunde os dois níveis de texto do plugin: os textos da interface (botões, rótulos, e-mails) vêm dos arquivos .po/.mo do Tutor, enquanto os cursos e lições que você criou só são traduzidos por WPML ou Polylang com o conteúdo registrado para tradução.

## 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.

**Antes de começar:** Antes de enviar arquivos de idioma por FTP ou alterar a configuração de tipos de conteúdo do WPML ou do Polylang em produção, faça um backup do site (arquivos e banco de dados) ou teste primeiro em um ambiente de staging, porque mudanças de idioma em custom post types podem reorganizar URLs e associações de conteúdo existentes.

## 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.

Erros relacionados

- [Como corrigir WPML com tradução que não aparece](https://full.services/wp-fixer/corrigir-wpml-traducao-nao-aparece/)
- [Como corrigir Polylang com redirecionamento em loop](https://full.services/wp-fixer/corrigir-polylang-redirect-loop/)
- [Como corrigir bandeira de idioma que não aparece (WPML/Polylang)](https://full.services/wp-fixer/corrigir-bandeira-idioma-nao-aparece-wordpress/)

## 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

1. 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
```

2. 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/
```

3. 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'
```

4. 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'
```

5. 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
```


## Código

```php
<?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;
}
```

## Perguntas frequentes

### Por que os botões do Tutor LMS continuam em inglês mesmo com WPML ativo

Porque os botões e rótulos são strings da interface do plugin e vêm do arquivo de idioma tutor.po/.mo, não do WPML. Segundo a documentação oficial, essas strings se traduzem por arquivo .po/.mo gerado no PO Edit ou pela plataforma translate.wordpress.org, e o WPML cuida apenas dos cursos e lições que você cria.

### O Tutor LMS é compatível com WPML e Polylang

Sim. O Tutor LMS é translation-ready e oferece um addon oficial WPML Multilingual CMS para sites multilíngues. O Polylang também funciona desde que o custom post type de cursos esteja habilitado para tradução. A interface do plugin, no entanto, é traduzida por arquivo de idioma, e não por esses plugins.

### Onde devo colocar o arquivo de tradução do Tutor LMS

Coloque o par tutor-pt_BR.po e tutor-pt_BR.mo em /wp-content/languages/plugins/. A documentação recomenda essa pasta porque ela não é apagada nas atualizações do plugin, ao contrário de /wp-content/plugins/tutor/languages/, que é sobrescrita.

### Por que meu curso não aparece para traduzir no WPML ou Polylang

Porque o custom post type de cursos provavelmente não está marcado como traduzível. No WPML, habilite o tipo Cursos em Tradução de Tipos de Conteúdo; no Polylang, ative o post type courses em Idiomas, Configurações, Custom post types. Sem isso, o editor de tradução não oferece a opção.

### Preciso do addon WPML do Tutor LMS para traduzir os cursos

Para uma tradução conjunta de curso, tópicos e lições com o WPML, sim, é recomendado ativar o addon WPML Multilingual CMS em Tutor LMS, Addons. Ele faz o WPML reconhecer a estrutura do curso e evita que a lição traduzida fique desvinculada do curso original.

### Posso editar o arquivo tutor.pot diretamente para traduzir

Não. O arquivo .pot é apenas um template de origem. Você deve abri-lo no PO Edit, traduzir e gerar um par .po/.mo no idioma desejado. O WordPress só carrega o arquivo .mo compilado, então editar o .pot sozinho não tem efeito na interface.

### As lições traduzidas ficam soltas do curso, como resolver

Isso acontece quando a lição é traduzida sem reassociar ao curso traduzido. Abra o curso na versão de destino e confirme que tópicos e lições apontam para as versões no idioma correto. O addon WPML do Tutor LMS ajuda a manter essa estrutura amarrada durante a tradução.

### Existe tradução pronta do Tutor LMS em português

Sim. A documentação oficial indica a plataforma translate.wordpress.org/projects/wp-plugins/tutor/, onde traduções da comunidade ficam disponíveis e baixam automaticamente ao atingir 90 por cento de progresso. Você pode reaproveitar essas strings em vez de traduzir tudo do zero.

**Fonte:** [Tutor LMS Documentation — Translating Tutor LMS](https://docs.themeum.com/tutor-lms/tutorials/how-to-translate-tutor-lms/)
