Documentação

Como traduzir/internacionalizar um plugin do WordPress (i18n)

Written by Eduardo Santos · 1 min read >

O manual oficial de tradução pode ser acessado aqui: http://codex.wordpress.org/I18n_for_WordPress_Developers

Se o plugin não está internacionalizado, é muito provável que ele ainda não tenha um domínio cadastrado. Os plugins devem possuir um domínio no WordPress, que normalmente é o nome do plugin. Será necessário então alterar todas as chamadas da função echo no PHP, que pode ter vários formatos. Ex.:


echo "teste"


_e("Teste")


__("Teste")

Cada uma delas tem um função, e não é o objetivo desse tutorial explicá-las. Veja no link do codex a explicação. Para não ter que alterar manualmente os arquivos, criei uma expressão regular que adiciona o domínio ao arquivo dentro do editor VI.

Abra o arquivo .php que deseja alterar e digite o comando abaixo:


:%s/_e(\"\([^)]*\)\")/_e(\"\1\", "meuplugin")/gc

Esse comando vai substituir todas as chamadas _e(“Teste”) pela string com domínio: _e(“Teste”, “meuplugin”).

Agora precisamos extrair as mensagens dos arquivos. Vá para o diretório do plugin e execute o gettext para extrair as strings:


cd wp-content/plugins/meuplugin
xgettext -p languages/  -L PHP -a arquivo.php arquivo2.php

Esse arquivo é um .pot vazio. Vamos criar os outros dois necessários para a tradução:


mv languages/message.po languages/meuplugin.pot
cp languages/meuplugin.pot languages/meuplugin-pt_BR.po

Edite o arquivo .po traduzindo as strings para o seu idioma. Depois compile no gettext:


msgfmt -o languages/meuplugin-pt_BR.mo meuplugin-pt_BR.po

Finalmente, é necessário carregar o domínio de tradução no plugin. Adicione a linha abaixo no começo do arquivo .php que carrega o plugin. Normalmente o nome do arquivo é meuplugin.php


// Add i18n
load_plugin_textdomain('meuplugin', false, basename( dirname( __FILE__ ) ) . '/languages');

Pronto. sua tradução deve estar funcionado

Written by Eduardo Santos
Desenvolvedor Open Source por vocação, Mestre em Computação Aplicada pela Universidade de Brasília (UnB), professor universitário e cientista de dados (data scientist). Profile

Leave a Reply

%d bloggers like this: