Como preparar uma tradução de plugins do WordPress?

16

Qual é a melhor maneira de criar um plugin pronto para tradução?

Ele não precisa ser traduzido desde o início, mas deve ser facilmente traduzível para que outros desenvolvedores de diferentes culturas participem do processo de localização do plugin.

    
por Nabil Kadimi 13.01.2013 / 00:03

1 resposta

35

1. Escreva com a localização em mente

Não use echo ou print() para produzir saída de texto. Em vez disso, use as funções do WordPress __() e _e() :

/** Not localization friendly */
echo "Welcome to my plugin";    
// OR
print("Welcome to my plugin");

/** Localization friendly */
_e('Welcome to my plugin', 'my-plugin');
// OR
$my_text = __('Welcome to my plugin', 'my-plugin');
echo $my_text;

_e() e __() fornecerão a tradução - no idioma atual - do texto fornecido como o primeiro parâmetro. _e() produzirá o texto, enquanto __() irá devolvê-lo.

O segundo parâmetro é o domínio de texto , você o usará para dizer ao WordPress que o texto fornecido como o primeiro parâmetro pertence a este plugin, você pode usar qualquer nome que quiser, mas eu prefiro use o mesmo nome que usei para o arquivo plugin do diretório, acho mais intuitivo.

Como gerar texto dinâmico como: "Olá < nome de usuário >"?

Com __() e sprintf() :

/** Get the username */
$username = 'Magictrick';

/** Not localization friendly */
echo "Hello $username";     

/** Localization friendly */
printf(__('Hello %s', 'my-plugin'), $username);
// OR 
$my_text = sprintf(__('Hello %s', 'my-plugin'), $username);
echo $my_text;

2. Prepare os arquivos .pot / .po / .mo

Definições

  • O arquivo .pot : é colocado à sua disposição pelo desenvolvedor do plugin e é usado como ponto de partida para criar novas traduções, o WordPress não o utiliza.
  • Um arquivo .po : é um arquivo de tradução que você ou outra pessoa iniciou e, talvez concluído, o WordPress não o utiliza.
  • Arquivo A.mo : é criado automaticamente pelo Poedit sempre que você salva um arquivo .po, tudo o que você pode fazer com esses arquivos é fazer o upload ou recarregá-los sempre que criar ou atualizar um arquivo .po. WordPress obtém traduções de arquivos .mo .

Abra Poedit e crie um novo catálogo (Arquivo ›Novo Catallog ...) com estas configurações:

  • Informações do projeto: use as informações do seu (ou de sua equipe), o idioma e o país devem corresponder ao idioma padrão do seu plug-in
  • Caminhos:
    • Caminho base: .
    • Caminhos: remova todos os & adicione .. , (nós iremos armazenar o arquivo de idioma em um subdiretório de plugin chamado languages)
  • Palavras-chave: remova todos os & adicione __ e _e

Salve o catálogo como /my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot e varrer os arquivos do seu plug-in para texto traduzível pressionando o botão Atualizar. Quando a atualização terminar, feche esse catálogo, não será necessário atualizar esse arquivo, a menos que você adicione novas strings traduzíveis (ou seja, incluídas em __() ou _e() ) ao seu plug-in.

Agora vamos criar a primeira tradução (eu usarei fr_FR):

Usando Podeit , crie um catálogo a partir de um arquivo POT   (Arquivo ›Novo catálogo do arquivo POT ...) :

  • Informações do projeto: use suas informações (ou de sua equipe), altere o idioma e o país , eu usarei o francês e a França
  • Caminhos: não altere
  • Palavras-chave: não chage

Salve o catálogo como /my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po . Traduza algumas ou todas as strings, salve o arquivo .po novamente, faça upload dos arquivos .po e .mo.

Observe que sempre que você salva um arquivo .po, um arquivo .mo é gerado com o mesmo nome, o nome do arquivo .po é crucial , é composto da concatenação do domínio de texto do plug-in (my-plugin) e a localidade do idioma (fr_FR), sempre nomeie seus arquivos .po para plugins como este: [textdomain] - [locale] .po , aqui estão alguns exemplos:

  • Italiano / Itália: wpcf7-it_IT.po
  • Português / Brasil: wpcf7-pt_BR.po
  • Árabe: wpcf7-ar.po ... Sim!

Sempre que o plug-in é atualizado com o novo texto, atualize o arquivo po, traduza novas strings e faça o upload novamente dos arquivos .po e .mo

3. Instrua o plug-in a carregar o texto traduzido para o idioma atual

Em algum lugar do seu plugin, você deve dizer ao WordPress para usar o seu arquivo .mo, você pode fazê-lo usando este código no começo do seu arquivo de plugin:

function my_plugin_init() {
  load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');

Substitua my-plugin pelo nome do seu plug-in no primeiro e no terceiro parâmetro da função load_plugin_textdomain .

4. Teste e solucione problemas

Algumas razões podem não funcionar:

  • As strings não são importadas para o arquivo .pot ou .po
    • → Configurações incorretas do catálogo (caminho, palavras-chave ou ambos)
  • O texto não está traduzido no site do WordPress
    • → arquivo .mo do idioma ausente ou com nome de arquivo incorreto
    • → Domínio de texto não usado (substitua _e('my text') por _e('my text', 'my-plugin') )
    • → Domínio de texto não carregado (use o exemplo acima com os parâmetros corretos, o WP não o avisará sobre erros)
por Nabil Kadimi 13.01.2013 / 00:03