Como traduzir/internacionalizar um plugin do WordPress (i18n)

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

0saves


Se você gostou desse post, deixe um comentário ou inscreva-se no feed RSS para ter todas os posts enviados para o seu agregador preferido.

Author Description

Eduardo Santos

Mestre em Computação Aplicada pela Universidade de Brasília (UnB), Tecnologista na Agência Espacial Brasileira, professor do Uniceub e cientista de dados (data scientist).

No comments yet.

Leave a Reply

Twitter

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 504 other subscribers

Alguns direitos reservados

Licença Creative Commons
Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-NãoComercial 4.0 Internacional.