WPML

captura de tela do atahualpaVou mostrar como usar o Atahualpa, da Bytes For All, para criar sites WordPress multilíngues usando o WPML.

Um tema para um site WordPress multilíngue precisa ter todas as strings envolvidas em chamadas gettext, mas isso não é suficiente. Usar gettext no tema permite que ele seja exibido em um idioma (único) diferente daquele com o qual foi originalmente construído.

Para funcionar de forma multilíngue, o tema precisa permitir que os visitantes escolham seu idioma de exibição e entregar o conteúdo correto por idioma.

Uma versão multilíngue para o Atahualpa


Vamos começar pelo fim. Aqui está um site de demonstração executando uma versão modificada do Atahualpa e aqui está o tema modificado que você pode baixar e usar.

O que mudamos para tornar o Atahualpa multilíngue

1. Adicionar wpml-integration.php ao diretório do tema


O wpml-integration.php é encontrado no diretório do WPML em docs/theme-integration. Ele inclui uma coleção de funções que ajudam a tornar os temas multilíngues.

Todas essas funções são projetadas para fazer com que os temas usem o WPML se ele estiver ativo ou o ignorem se estiver ausente. Isso significa que o tema funcionará de forma multilíngue se o WPML estiver disponível, ou normalmente (idioma único) caso contrário.

Adicionado ao functions.php:

include dirname(__FILE__) . '/wpml-integration.php';

Esta instrução carrega o wpml-integration.php e o torna disponível para todos os arquivos no tema.

2. Adicionar seletores de idiomas


Os seletores de idiomas tornam possível que os visitantes escolham o idioma no qual o site é exibido. Muitas vezes, é uma boa ideia adicionar vários tipos de seletores de idiomas. Os visitantes examinam o site rapidamente e procuram por dicas visuais de conteúdos em seus idiomas. Pessoas diferentes olham para lugares diferentes, então adicionar diferentes tipos de seletores de idiomas a diferentes partes da página ajudará os visitantes a encontrarem seu idioma.

Adicionamos o seletor de idiomas suspenso do WPML à barra lateral adicionando-o ao header.php:

<?php wpml_languages_selector() ?>
seletor_de_idiomas_suspenso_do_atahualpa
Seletor de idiomas suspenso

Também adicionamos uma lista horizontal de idiomas ao rodapé do site. Muitos usuários primeiro rolam até o final para ver o que há lá (e qual o tamanho das páginas), então é um bom lugar para informar que as páginas estão disponíveis em outros idiomas. Adicionamos o seguinte código ao footer.php:

<?php wpml_languages_list() ?>
Seletor de idiomas horizontal no rodapé
Seletor de idiomas horizontal no rodapé

Por fim, adicionamos um seletor de idiomas no final de cada post. Isso adiciona uma frase a cada post, informando em quais outros idiomas ele está disponível. Adicionado o seguinte ao index.php (que inclui uma versão personalizada do loop de exibição do WordPress):

<?php if(is_singular()) wpml_content_languages(); ?>
Lista de idiomas de tradução
Lista de idiomas de tradução

Quando os visitantes clicam em ‘Home’, eles esperam chegar à página inicial sem mudar de idioma. Como cada idioma tem uma ‘home page’ com um URL diferente, um único valor para todos não funcionará.

Normalmente, os temas do WordPress calculam o endereço para a página ‘Home’ com base no valor ‘Blog URL’ definido na página de administração. O WPML criou uma função que calcula o endereço correto da página inicial de acordo com o idioma de exibição.

Substituímos get_option('home’) por wpml_get_home_url(). Além disso, a função get_option('home’) retorna a localização do site sem uma barra no final (/), então os temas a adicionam manualmente. A função do WPML inclui esta barra (há uma longa história por trás disso).

Para fazer essa alteração, tivemos que editar dois arquivos. Modificamos functions/bfa_get_options.php e alteramos:

$bfa_ata['get_option_home'] = get_option('home');

para
$bfa_ata['get_option_home'] = wpml_get_home_url();

Também editamos functions/bfa_header_config.php e removemos a barra no final do link da página inicial:
'<a href="' . $bfa_ata['get_option_home'] . '">' . $bfa_ata['bloginfo_name'] . '</a>'

4. Realmente avançado – traduzir textos que os usuários inserem na tela de administração do tema


O Atahualpa permite controlar alguns textos através da tela de administração. Isso é ótimo, pois permite gerenciar o site sem editar arquivos PHP. O WPML também pode traduzir essas strings usando seu mecanismo de Tradução de Strings.

Para fazer isso, o tema precisa informar ao WPML quais strings precisam ser traduzidas e, em seguida, exibir a tradução, se ela existir.

Quando os usuários vão para a tela de administração do tema, atualizam os textos e clicam em Salvar, a função bfa_ata_add_admin do functions/bfa_ata_add_admin.php é executada. Adicionamos a seguinte seção a ela (começando na linha 11):

global $wpml_translatable_strings;

 foreach($wpml_translatable_strings as $wpml_str ){

   if(isset($_REQUEST['bfa_ata_'.$wpml_str]) && trim($_REQUEST['bfa_ata_'.$wpml_str])){

    wpml_register_string('atahualpa theme', $wpml_str, stripslashes($_REQUEST['bfa_ata_'.$wpml_str]));

  }

 }

O que isso faz é percorrer uma lista de strings definidas na variável global $wpml_translatable_strings. Isso registra cada string na lista de tradução de strings do WPML.

O primeiro argumento é o contexto para as strings. Qualquer nome serviria, mas você deve selecionar um nome que descreva as strings. O segundo argumento é o nome para a string (não é traduzido). O último argumento é o valor da string – é traduzido.

Para exibir as traduções (se elas existirem), adicionamos a função wpml_t ao functions/bfa_get_options.php (começando na linha 204):

global $wpml_translatable_strings;

foreach($bfa_ata as $k=>$v){

   if(in_array($k, $wpml_translatable_strings) || $__first){

    $bfa_ata[$k] = wpml_t('atahualpa theme', $k, $v);     

  }

}

Este código é executado quando o site é exibido aos visitantes. Ele percorrerá a lista de strings, verificará se foi registrada para tradução (in_array) e, se sim, obterá a tradução. A função wpml_t retornará a string traduzida no idioma atual, se a tradução existir, ou apenas retornará a string original se não houver tradução.

Tornar outros temas do WordPress multilíngues


Já fizemos um trabalho semelhante no iNove e no Arras e estamos planejando converter mais temas para multilíngues.

Nossa intenção é fornecer temas multilíngues prontos para usar e ajudar você a criar seus próprios temas prontos para multilíngue. Usando as técnicas que descrevemos aqui, você pode criar temas que funcionarão de forma multilíngue quando o WPML estiver disponível ou em um único idioma sem o WPML.

Se você está criando temas e precisa de ajuda para torná-los multilíngues, sinta-se à vontade para abrir novos tópicos no fórum.

Você também pode ganhar dinheiro (renda passiva de verdade) adicionando suporte multilíngue aos seus temas. Falaremos sobre como incluir IDs de afiliados em temas no próximo post.

Achou isso útil? Compartilhe este artigo: