Para que um tema ou plugin possa ser traduzido, é necessário usar funções específicas para mostrar os textos.
Traduzir um texto
// retorna o texto (return)
$translated = __( $text, $domain );
// mostra o texto (echo)
_e( $text, $domain );
$text = o texto que será traduzido.
#domain = text domain, o identificado único referente ao tema ou plugin.
Exemplo:
// retornar texto
$translated = __( 'Contact', 'difluir' );
// mostrar o texto
echo $translated;
// mostrar texto direto
_e( 'Contact', 'difluir' );
Assim será mostrado o texto traduzido de acordo com o idioma.
Traduzir um texto com contexto
$translated = _x( $text, $context, $domain );
$text = o texto que será traduzido.
$context = o contexto do texto a ser traduzido.
#domain = text domain, o identificado único referente ao tema ou plugin.
Exemplo:
Imagine que você tem o assunto de um formulário de contato com o texto Contact, e também tem um link de menu com o texto Contact.
Necessariamente os 2 não precisam ser iguais ao ser traduzido para outro idioma.
Quem vai traduzir, precisa entender o contexto do texto, para então fazer a tradução.
// o assunto de um formulário de contato
$translated1 = _x( 'Contact', 'Default contact form subject', 'difluir' );
// o link para a página de contato
$translated2 = _x( 'Contact', 'Menu link to contact page', 'difluir' );
Retornará o texto traduzido de acordo com o idioma.
Com o tema ou plugin pronto é só fazer a tradução.
Por aqui costumamos fazer tudo em inglês nos temas e plugins, e então traduzir para o português.
Usamos o programa Poedit para fazer traduções.