Gettext no WordPress do zero

WordPress utiliza as funções __ e _e para tradução.

Este tutorial rápido explica como criar um novo arquivo POT para pt_BR.

cd /WORDPRESS_DIR/wp-content/themes/THE_THEME/
mkdir languages
touch languages/pt_BR.po
find . -iname "*.php" | xargs xgettext -j -o languages/pt_BR.po -k__ -k_e

Onde

  • -j OR --join-existing => Junta a mensagem com um arquivo existente.
  • -k[keywordspec] OR --keyword[=keywordspec] => Especifica keywordspec como keyword adicional para ser procurada.
  • -o file --output=file => Escreve a saída em arquivo específicado.

Altere as seguintes linhas de acordo:

"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-25 22:37-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Rafael Goulart <rafaelgou@gmail.com>\n"
"Language-Team: RGOU <rafaelgou@rgou.net>\n"
"Language: Brazilian Porguese \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

Não esqueça de alterar o charset para UTF-8.

Agora traduza o arquivo POT criado e enfim gere o arquivo MO:

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

Você pode adicionar mais traduções rodando o comando xgettext novamente para adicionar novas entrdas,
traduzindo e regereando o arquivo MO:

find . -iname "*.php" | xargs xgettext -j -o languages/pt_BR.po -k__ -k_e

… faça suas novas traduções e:

msgfmt languages/pt_BR.po -o languages/pt_BR.mo
  • Thank you for your informative article. Very difficult to find information specific on xgettext and its usage with WordPress custom gettext functions. With the addition of plural and context aware gettext functions like _x and _nx, esc_attr_e and a dozen others, the xgettext commands -k keyspec argument in your examples should be expanded to include all the various function calls which have strings to extract to the .po file which may appear in a users custom theme or plugin. To make this process simpler, a developer should check out the wordpress-i18n tools from wordpress svn repositority as it includes a script “makepot.php” which can be run which extract all the strings from the many WordPress custom gettext functions:

    http://i18n.svn.wordpress.org/tools/trunk/

    run makepot for a plugin like this:

    php makepot.php wp-plugin your-plugin-directory

    run makepot for a theme like this:

    php makepot.php wp-theme your-theme-directory