O String Translation do WPML deixa você traduzir textos em seu tema e plugins.

No entanto, para que essas traduções apareçam no site, há algumas condições:

  • Os textos precisam estar em chamadas GetText.
  • O argumento text domain precisa ser inserido.

Todos os textos que estão no código PHP e não estão em chamadas GetText com um text domain não serão traduzidos pelo WPML.

Exemplos

Texto estático sem chamada GetText

<h2>Links</h2>

Problema: A palavra ‘Links’ não está em uma chamada GetText. Por isso, não pode ser traduzida.

Solução: Colocá-la em uma chamada GetText:

<h2><?php _e('Links','theme-text-domain'); ?></h2>

Colocamos ‘Links’ em uma chamada gettext _e() (echo para tradução). Agora o WPML pode traduzi-lo.

Texto em função sem usar GetText

by <?php echo(the_author('', false)); ?>

Problema: A frase não é traduzível.

Solução: Essa frase inclui um texto estático e um texto dinâmico. Toda ela precisa ser envolvida por uma chamada GetText e usar argumentos.

<?php printf( __( 'by %s', 'theme-text-domain' ), the_author('', false) ); ?>

O texto que o tradutor irá receber é ‘by %s’. Isso é bom porque permite ao tradutor inverter a ordem das palavras, o que é exigido em alguns idiomas.

Note que nesse caso usamos a chamada GetText __(). Essa chamada é similar a _e(), mas não escreve a saída (como faz o echo). A chamada printf gera a saída.

Está faltando o argumento text domain

<?php _e('Roadmap') ?>

Problema: O argumento text domain não foi incluído na chamada GetText.

Solução: Adicionar o parâmetro text domain.

<?php _e('Roadmap','theme-text-domain') ?>

Um text domain diz ao GetText (e ao WPML) a que esse texto pertence. É uma string que só tem significado para você. Você pode escolher a string que quiser, mas seja consistente. O valor de text domain irá agrupar strings relacionadas.

Obviamente, ‘theme-text-domain’ não é um nome bom e único. Por exemplo, se seu tema tem o nome ‘star-geeks’, esse seria um valor mais adequado para o text domain.