WPML

screenshot di AtahualpaTi mostrerò come usare Atahualpa, di Bytes For All, per creare siti WordPress multilingue usando WPML.

Un tema per un sito WordPress multilingue deve avere tutte le stringhe racchiuse nelle chiamate gettext, ma non è del tutto sufficiente. L'uso di gettext nel tema gli permette di essere visualizzato in una lingua (singola) diversa da quella con cui è stato originariamente creato.

Per funzionare in modalità multilingue, il tema deve permettere ai visitatori di scegliere la lingua di visualizzazione e fornire il contenuto corretto per ogni lingua.

Una versione multilingue per Atahualpa


Iniziamo dalla fine. Ecco un sito demo basato su una versione modificata di Atahualpa ed ecco il tema modificato che puoi scaricare e usare.

Cosa abbiamo cambiato per rendere Atahualpa multilingue

1. Aggiungere wpml-integration.php alla directory del tema


wpml-integration.php si trova nella directory di WPML sotto docs/theme-integration. Include una raccolta di funzioni che aiutano a trasformare i temi in multilingue.

Tutte queste funzioni sono progettate per fare in modo che i temi usino WPML se è attivo o lo ignorino se è assente. Ciò significa che il tema funzionerà in modalità multilingue se WPML è disponibile, o normalmente (in una sola lingua) in caso contrario.

Aggiunto a functions.php:

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

Questa istruzione carica wpml-integration.php e lo rende disponibile a tutti i file del tema.

2. Aggiungere i selettori di lingua


I selettori di lingua permettono ai visitatori di scegliere la lingua in cui viene visualizzato il sito. Spesso è una buona idea aggiungere diversi tipi di selettori di lingua. I visitatori esaminano il sito rapidamente e cercano suggerimenti visivi per i contenuti nelle loro lingue. Persone diverse guardano in posti diversi, quindi aggiungere vari tipi di selettori di lingua in diverse parti della pagina aiuterà i visitatori a trovare la loro lingua.

Abbiamo aggiunto il selettore di lingua a discesa di WPML alla sidebar aggiungendolo a header.php:

<?php wpml_languages_selector() ?>
selettore di lingua a discesa di Atahualpa
Selettore di lingua a discesa

Abbiamo anche aggiunto un elenco orizzontale di lingue nel footer del sito. Molti utenti scorrono prima fino in fondo per vedere cosa c'è (e quanto sono lunghe le pagine), quindi è un buon posto per comunicare che le pagine sono disponibili in altre lingue. Abbiamo aggiunto il seguente codice a footer.php:

<?php wpml_languages_list() ?>
Selettore di lingua orizzontale nel footer
Selettore di lingua orizzontale nel footer

Infine, abbiamo aggiunto un selettore di lingua alla fine di ogni articolo. Questo aggiunge una frase a ogni articolo, indicando in quali altre lingue è disponibile. Abbiamo aggiunto quanto segue a index.php (che include una versione personalizzata del loop di visualizzazione di WordPress):

<?php if(is_singular()) wpml_content_languages(); ?>
Elenco delle lingue di traduzione
Elenco delle lingue di traduzione

Quando i visitatori fanno clic su “Home”, si aspettano di arrivare alla home page senza cambiare lingua. Poiché ogni lingua ha una “home page” con un URL diverso, un singolo valore per tutte non funzionerà.

Normalmente, i temi di WordPress calcolano l'indirizzo per la pagina “Home” in base al valore “URL del blog” impostato nella pagina di amministrazione. WPML ha creato una funzione che calcola l'indirizzo corretto della home in base alla lingua di visualizzazione.

Abbiamo sostituito get_option('home’) con wpml_get_home_url(). Inoltre, la funzione get_option('home’) restituisce l'indirizzo del sito senza uno slash finale (/), quindi i temi lo aggiungono manualmente. La funzione di WPML include questo slash (c'è una lunga storia dietro a questo).

Per apportare questa modifica, abbiamo dovuto modificare due file. Abbiamo modificato functions/bfa_get_options.php e cambiato:

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

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

Inoltre, abbiamo modificato functions/bfa_header_config.php e rimosso lo slash finale dal link della home page:
'<a href="' . $bfa_ata['get_option_home'] . '">' . $bfa_ata['bloginfo_name'] . '</a>'

4. Molto avanzato: tradurre i testi che gli utenti inseriscono nella schermata di amministrazione del tema


Atahualpa permette di controllare alcuni testi attraverso la schermata di amministrazione. Questa è un'ottima cosa che permette di gestire il sito senza modificare i file PHP. Anche WPML può tradurre queste stringhe usando il suo meccanismo di Traduzione stringhe.

Per fare questo, il tema deve comunicare a WPML quali stringhe devono essere tradotte e poi mostrare la traduzione, se esiste.

Quando gli utenti vanno nella schermata di amministrazione del tema, aggiornano i testi e fanno clic su Salva, viene eseguita la funzione bfa_ata_add_admin da functions/bfa_ata_add_admin.php. Vi abbiamo aggiunto la seguente sezione (a partire dalla riga 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]));

  }

 }

Quello che fa è scorrere un elenco di stringhe definite nella variabile globale $wpml_translatable_strings. Registra ogni stringa nell'elenco di Traduzione stringhe di WPML.

Il primo argomento è il contesto per le stringhe. Qualsiasi nome andrebbe bene, ma dovresti scegliere un nome che descriva le stringhe. Il secondo argomento è il nome della stringa (non viene tradotto). L'ultimo argomento è il valore della stringa, che viene tradotto.

Per mostrare le traduzioni (se esistono), abbiamo aggiunto la funzione wpml_t a functions/bfa_get_options.php (a partire dalla riga 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);     

  }

}

Questo codice viene eseguito quando il sito viene mostrato ai visitatori. Scorrerà l'elenco delle stringhe, controllerà se è stata registrata per la traduzione (in_array) e, in tal caso, otterrà la traduzione. La funzione wpml_t restituirà la stringa tradotta nella lingua attuale, se esiste la traduzione, o semplicemente restituirà la stringa originale se non c'è traduzione.

Rendere multilingue altri temi WordPress


Abbiamo già fatto un lavoro simile su iNove e Arras e stiamo pianificando di convertire altri temi in multilingue.

La nostra intenzione è quella di fornire temi multilingue pronti all'uso e aiutarti a creare i tuoi temi Multilingual Ready (pronti per il multilingue). Usando le tecniche che abbiamo descritto qui, puoi creare temi che funzioneranno in modalità multilingue quando WPML è disponibile o in una singola lingua senza WPML.

Se stai creando temi e hai bisogno di aiuto per renderli multilingue, sentiti libero di aprire nuovi thread nel forum.

Puoi anche guadagnare (vero e proprio reddito passivo) aggiungendo il supporto multilingue ai tuoi temi. Parleremo dell'inclusione degli ID affiliato nei temi nel prossimo articolo.

L’hai trovato utile? Condividi questo articolo: