Aprenda a usar as funções do gettext para tornar os textos em temas e plugins traduzíveis no WPML.
Para garantir que os textos em temas e plugins sejam traduzíveis e apareçam corretamente no seu site, você precisa atender a duas condições:
- Envolver os textos em uma função gettext
- Incluir um argumento de domínio de texto
Noções básicas do gettext
Considere a seguinte string, “Thank you!”, que pertence ao domínio “my-plugin-domain”:
__( 'Thank you!', 'my-plugin-domain' );
Para exibir a string no navegador, use a função _e():
_e( 'Thank you!', 'my-plugin-domain' );
Ao usar HTML, coloque-o dentro de tags HTML:
<h2><?php _e( 'Thank you!', 'my-plugin-domain' ); ?></h2>
Se você tiver um link separado do texto ao redor, use a função esc_html_e():
<a href="http://wpml.org/" ><?php esc_html_e( 'Translated with WPML', 'my-domain' ); ?></a>
Melhores práticas do gettext
1. Nunca envolva uma variável ou constante em uma função gettext
Isso fará com que as strings não possam ser escaneadas e, portanto, não sejam traduzíveis.
Incorreto
<?php
if ( $morning ) {
define( 'GREETING', 'Good morning' );
} else {
define( 'GREETING', 'Good afternoon' );
}
_e( GREETING, 'my-domain' );
?>
Correto
<?php
if ( $morning ) {
_e( 'Good morning', 'my-domain' );
} else {
_e( 'Good afternoon', 'my-domain' );
}
?>
2. Faça o escape da saída por segurança
Se uma string for renderizada imediatamente na saída, use funções de escape, como esc_html_ e esc_attr_, para proteger contra ataques XSS.
echo '<div>' . esc_html__( 'Back to homepage', 'my-domain' ) . '</div>';
3. Adicione comentários para os tradutores
Isso ajuda os tradutores a entender o contexto em que os textos ou variáveis aparecem.
/* translators: %1$s is status label (e.g. "active" and %2$s is quantity of bits/s (e.g. 12 Gbit/s) */ printf( esc_html__( 'State of your network is %1$s. Maximum download speed is %2$s.', 'my-plugin-domain' ), $state, $speed );
Recursos adicionais
Para saber mais sobre o gettext, consulte o Codex do WordPress oficial.