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.

Deixe uma resposta

Twitter

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 504 outros assinantes

Alguns direitos reservados

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