O caminho das pedras pra gerar traduções de temas do WordPress

Primeiro temos que reescrever tudo que escreve texto fixo na tela, usando as funções de internacionalização do WordPress. Então em vez de:

<h2>Notícias</h2>

Fazemos:

<h2><?php echo __( ‘Notícias’, ‘text-domain’ ); ?></h2>

Ou ainda:

<h2><?php _e( ‘Notícias’, ‘text-domain’ ); ?></h2>

“text-domain” é o “domínio” desse arquivo de tradução. No nosso caso, o nome do diretório do tema (“meu-tema”).

Se quisermos dar uma força para o tradutor, podemos usar as funções que fornecem “contexto”; tipassim:

<h2><?php echo _x( ‘Notícias’, ‘Título da tela de notícias’, ‘meu-tema’ ); ?></h2>

Ou ainda:

<h2><?php _ex( ‘Notícias’, ‘Título da tela de notícias’, ‘meu-tema’ ); ?></h2>

Existe mais um monte de funções prontas bem interessantes: pra já escapar atributos de tags, pra lidar com singular e plural, pra lidar com data…


Depois disso, temos que carregar este “domínio de texto” no nosso tema. Colocamos uma linha a mais no cabeçalho do style.css :

/*
Theme Name: Meu Tema
Theme URI: https://meutema.com.br
Author: Ederson Peka
Author URI: https://ederson.peka.nom.br
Text Domain: meu-tema
Version: 1.0
*/

E uma função num hook:

public static function load_my_theme_textdomain() {
    load_theme_textdomain( ‘meu-tema’, get_template_directory() . ‘/languages’ );
}
add_action( ‘after_setup_theme’, ‘load_my_theme_textdomain’ );


Aí temos que criar um diretório “languages” dentro do tema, e dentro dele vão os arquivos de tradução. Só agora começa a complicar, rsrs.

O primeiro arquivo que criamos é um “modelo de tradução”. A extensão é “.pot”. Este arquivo tem todas as strings que existem para serem traduzidas, e as linhas onde estariam as traduções ficam vazias. É o arquivo que a gente vai copiar pra criar cada tradução de cada idioma. Um pedacinho dele:

#: footer.php:42
msgctxt “Citação de Douglas Adams”
msgid “Resumindo: É um fato bem conhecido que todos que querem governar as outras pessoas são, por isso mesmo, os menos indicados para isso.”
msgstr “”

#: footer.php:934
msgctxt “Citação de Alvo Dumbledore”
msgid “Palavras são, na minha nada humilde opinião, nossa inesgotável fonte de magia. Capazes de formar grandes sofrimentos e também de remediá-los.”
msgstr “”

Chamei esse arquivo de “meu-tema.pot”. Você pode criar esse arquivo na mão, varrendo todas as strings utilizadas no tema (trabalho escravo), ou usar uma ferramenta que faz isso automagicamente. Eu usei o wp-cli, dentro do diretório do tema, assim:

/caminho/para/wp-cli.phar i18n make-pot . languages/meu-tema.pot –ignore-domain

Ele gerou um meu-tema.pot pra mim dentro da pasta languages. Aí eu copiei esse cara para languages/es_ES.po , abri no editor e comecei a traduzir:

#: footer.php:42
msgctxt “Citação de Douglas Adams”
msgid “Resumindo: É um fato bem conhecido que todos que querem governar as outras pessoas são, por isso mesmo, os menos indicados para isso.”
msgstr “Resumamos: es un hecho bien conocido que las personas que más deseos tienen de gobernar a la gente son, ipso facto, las menos adecuadas para ello.”

#: footer.php:934
msgctxt “Citação de Alvo Dumbledore”
msgid “Palavras são, na minha nada humilde opinião, nossa inesgotável fonte de magia. Capazes de formar grandes sofrimentos e também de remediá-los.”
msgstr “Las palabras son, en mi no tan humilde opinión, nuestra más inagotable fuente de magia, capaces de infringir daño y de remediarlo.”


Depois que o arquivo .po estiver pronto, temos que compilá-lo (Java feelings?) para um arquivo binário .mo. Eu usei um comando chamado msgfmt:

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

Esse comando vem num pacote chamado gettext (pode ser necessário um apt-get install gettext ).


Depois disso tudo, eu entrei no painel, em “Configurações”, e selecionei o idioma “Español”. Finalmente, as strings que eu traduzi apareceram em espanhol no site! Glória a Deux!


Problemão: toda vez que a gente gerar o arquivo modelo (.pot), e copiá-lo por cima do arquivo de tradução (.po), ele vai estar vazio e a gente vai ter que colocar as traduções tudinovo. Como resolver isso?

msgmerge languages/es_ES.po languages/meu-tema.pot > languages/es_ES.po

YouTube Player na linha de comando do Ubuntu Linux

No “Microsoft Ubuntu”, com o inacreditável youtube-dl é possível baixar vídeos do vocêtubo. Com o velho e fiel mplayer é possível tocar qualquer formato de vídeo conhecido (e os desconhecidos também, se bem que destes se sabe muito pouco). Juntei os dois no códigozinho abaixo, que eu salvei num arquivo youtube-play num diretório do meu PATH:

#!/bin/bash

function usage {
echo “USAGE: youtube-play [URL] [any other youtube-dl option]”
}

if [ $# -eq 0 ]; then
usage
else
youtube-dl $@ -o – | mplayer -osdlevel 3 -vo xv –
fi

Assim ele já vai baixando e já vai tocando e é o bicho vindo, moleque.

(Tô usando isso pra adiar um pouco aquele momento mágico em que o navegador glutão engole toda sua memória RAM sem mastigar. Em vez de navegar pra URL do vídeo, abro logo no terminal e dou dois ENTER pra mostrar quem manda.)

Clone (tosco) do Responsinator (traduzido para o português)

Já viu o Responsinator? É um site pra você testar seu site em resoluções pequenas (de diversos dispositivos móveis) e descobrir que ele não funciona direito.

A ideia é basicamente simples, então fiz um clone beeem tosco, só pra rodar localmente e tal…

Vê lá: Responsinator Tabajara em Português

Tradução do Plugin “Social” do WordPress para Português

Instalei o plugin Social no WordPress de um amigo. Procurei arquivos de tradução dele para o português brasileiro e não encontrei, então fiz uma tradução tabajara “half-mouth” rapidinha.

Ponha os arquivos “.po” e “.mo” no diretório /wp-content/plugins/social/lang/ (na verdade, só o arquivo “.mo” é necessário; o arquivo “.po” é o “arquivo-fonte”, que você vai editar se quiser alterar a tradução, pra depois, a partir dele, gerar o arquivo “.mo”).

Além disso, fiz uma versãozinha vagabunda traduzida da imagem usada nos links de login. Eu não recomendo simplesmente substituir a imagem do plugin. No meu caso, como o tema era “meu”, preferi colocá-la no diretório images/ dentro do tema, e sobrescrever duas regrinhas do plugin no meu style.css; assim:

div#social .social-sign-in-links .social-twitter{
    background-image:url('images/social.png');
}

div#social .social-sign-in-links .social-facebook{
    background-image:url('images/social.png');
}

Baixaê: social-wordpress-plugin.pt_BR.zip


© Compostela: “Deixe o que puder; leve o que precisar.”

Script Perl pra remover o caractere unicode “byte order mark” (BOM)

Tivemos alguns scripts PHP aqui gerando erro no servidor de homologação por causa de caracteres unicode misteriosos no início do arquivo. Esta marca de ordem de byte é um treco no comecinho do arquivo que de alguma forma diz “em qual das diferentes representações Unicode o texto está codificado.” Só que o PHP não sabe o que é isso Continuar lendo

Convertendo vídeos pra celular no Ubuntu Linux com FFMPEG

Sofri um pouquinho até achar uma combinação de codecs que meu velho SonyEricsson Walkman Whatever conseguisse tocar. Aqui rolou assim:

ffmpeg -i ARQUIVOORIGINAL -s qcif -vcodec h263 -acodec libfaac -ac 1 -ar 44100 -r 25 -ab 128 -y ARQUIVOCONVERTIDO.3gp

Aquele -s qcif faz a mágica de já redimensionar pra 176×144 pixels. O -ar 44100 define a freqüência de sampling e o -ab 128 a taxa de bits do áudio: aqui tocou de boa, mas se você conseguir ter um dispositivo mobile mais limitado (defasado, antigo, velho, bichado, zoado) que meu celularzinho, talvez tenha que reduzir estes valores…

Atualizando: Peguei um ubuntu velho aqui dando o seguinte erro: ffmpeg: Unknown encoder 'libfaac'. Seguindo instruções num fórum, a magia negra abaixo fez o trabalho pra mim:

sudo wget http://www.medibuntu.org/sources.list.d/`lsb_release -cs`.list --output-document=/etc/apt/sources.list.d/medibuntu.list && sudo apt-get -q update && sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring && sudo apt-get -q update
sudo apt-get install ffmpeg libavcodec-extra-52

Meu ambiente de trabalho em 7 itens

O Elcio me convidou pra correntinha, então…

7 Coisas que Não Podem Faltar na Minha Máquina

  1. “Microsoft Ubuntu” – “Linux para seres humanos”, é o que dizem…
  2. Gedit – Eu domino os comandos mais importantes do VIm: “desfazer” e “sair”. Para outras tarefas, uso um editor em que eu consigo clicar. (Isso mesmo, clicar! Sou quase humano!)
  3. Opera, Google Chrome, Firefox/Firebug – Navegadores de verdade
  4. VirtualBox – Para o navegador de mentira
  5. FileZilla – Ainda chamam essas coisas de “clientes de FTP”, mesmo eu não me lembrando da última vez que usei (ou precisei usar) esse protocolo… Enfim…
  6. Emesene – Sou quase humano, lembra?! 😛
  7. Audacious, MPlayer, VLC, Audacity, Avidemux, LMMS, MuseScore, SoundConverter, Subtitle Editor, PiTiVi, EasyTag… – Não uso exatamente pra trabalhar, mas uso bastante.

DU-VI-DO algum desses caras ressuscitar seu blog (ou criar um) só pra dar continuidade à correntinha, mas estão convidados: @lelimat, @lornlab, @igorescobar, @wendelscardua e @rigonatti.

Banco de dados do WordPress sob controle de versão

Fiz um scriptzinho maroto pra manejar o dump de um banco de dados do WordPress. Ele serve pra exportar os dados do banco para um arquivo texto, substituindo a URL do site por uma string mágica; e também pra importar os dados do arquivo texto para o banco, desfazendo a substituição da URL. Continuar lendo