Primeiro problema com o WordPress
Ao começar a postar (e navegar) no blog, percebi um problema: mesmo estando com o pacote de idioma do WordPress em Português Brasileliro (pt_BR), ainda assim, alguns textos continuavam em inglês, como: “Read the rest of this entry »”…
Então, eu fui pesquisar…
A primeira coisa que procurei foi algum plugin para o WordPress, que me permitisse alterar os arquivos de idioma sem ter muito trabalho (mais ou menos inspirado no recurso que o Magento tem de “Inline Translation”). Encontrei o Codestyling Localization que me ajudou a dar uma olhada nos arquivos de tradução do WordPress…
Adorei o plugin, muito útil, bem intuitivo, faz até um scan pra varrer os arquivos do WP procurando por strings “traduzíveis” e gerar um arquivo que servirá de base pra sua tradução. Tudo automaticamente. Se não fosse alguns probleminhas processando arquivos muito grandes à procura de string traduzíveis, ele seria 100%. Depois de muito procurar nos arquivos disponíveis percebi que todos os que seriam importantes estão traduzidos, inclusive o “Read the rest of this entry »”!
Então porque a droga da traduçã não está aparecendo?
Fui pesquisar um pouquinho mais e achei uma página no WP Codex falando um pouco sobre o sistema do WP de i18n. Lendo um pouco descobri o que já desconfiava: o WP realmente usa a biblioteca gettext e suas ferramentas para dar a infra-estrutura para a internacionalização. Lendo um pouco mais descobri ainda que se pode separar a tradução por grupos, o que eles chamam de domínios, e que eles de fato o fazem no desenvolvimento oficial do WP. Assim sendo descobri que o tema padrão do WP (onde as coisas aparecem traduzidas) usa um domínio chamado ‘kubrick’.
Um pouco mais adiante na mesma página, há informações de como escolher e carregar um domínio para o seu arquivo. Então percebi que o tema que estou usando no blog não carregava nenhum domínio. Atá aí tudo bem, pois – pelo que entendo – nesse caso ele deveria carregar as strings traduzidas dentro do domínio padrão (o geral do WP). Mas por via das dúvidas, coloquei nele o mesmo domínio do tema padrão (‘kubrick’) pra ver o que dava…
Pela próprio gerenciador do WP editei o tema (Design > Editor de Temas > Funções do Tema (functions.php) ) e adicionei a linha
load_theme_textdomain('kubrick');
Pra minha surpresa, não aconteceu nada de diferente… Então fui dar mais uma olhada no texto do Codex e foi então que eu lí:
The additional rule states that you must add your domain as an argument to every __, _e, _c and __ngettext call, otherwise your translations won’t work.
Foi então que eu me dei conta de que não estava traduzindo, porque o tema havia sido feito errado!
Eles não pensaram (ou apenas não sabiam) sobre os recursos de localização do WP (isso que dá deixar designers se aventurarem como programadores).
Próximo passo: revisar todo o tema e corrigir isso!