Skip to content

WordPress: uno shortcode per gestire le traduzioni di WPML

Torna agli articoli

WordPress e multilingua non sono mai “andati a braccetto”  diversamente ad esempio di Drupal. Questo però non significa che il CMS più utilizzato al mondo (WordPress) non abbia la possibilità di trasformare il proprio sito in versione multilingua. Vediamo come fare.

WordPress Multilingua con WPML

Per trasformare WordPress in versione multilingua ci sono tanti modi, quasi tutti plugin. Tra questi il più diffuso e famoso è indubbiamente WPML. Viene utilizzato praticamente da tutta la community di WordPress, soprattutto quando si tratta di temi acquistati.

Offre varie funzionalità e permette di gestire appunto i contenuti di WordPress (o di Woocommerce) in versione multilingua. Ha un costo che varia da una trentina di euro a circa 200 euro in base alle funzionalità e hai siti al quale è possibile associarlo. Se hai acquistato un tema per WordPress, che dichiara l’integrazione con WPML, il consiglio è di utilizzare appunto WPML per non dover impazzire.

Ci sono anche tante alternative gratuite che sono comunque valide.
Il sito di WPML spiega bene quali sono le differenze tra lui (WPML) e i suoi concorrenti gratuiti: differenze tra WPML, Polylang e altri plugin gratuiti.

In alcuni casi però l’ecosistema di WPML richiede maggiori possibilità di personalizzazione. Vediamo un’esempio.

Shortcode per gestire le traduzioni di WPML

Potrebbe essere necessario avere un pò più di personalizzazione per le stringhe di traduzione del tuo sito. Ad esempio per i testi inseriti nei widget, non facilmente traducibili.
Per farlo è sufficiente aggiungere questo Shortcode nel file functions.php del tuo tema WordPress.

/**
 * Translate Shortcode
 *
 * @param [type] $attrs
 * @param [type] $content
 * @return void
 */

function translate_shortcode_function($attrs, $content=null) {
    extract( shortcode_atts( array(
      'lang' => 'it',
    ), $attrs ) );
    $my_current_lang = apply_filters( 'wpml_current_language', NULL );
    if ( ICL_LANGUAGE_CODE==$lang ) return $content;
}
add_shortcode('translate', 'translate_shortcode_function');
Come funzionerà? Basterà inserire nel tuo widget lo shortcode specificando la lingua della tua traduzione e la traduzione stessa. Stessa cosa per le altre lingue. Vediamo un esempio:
[translate lang="it"]Spedizioni gratuita a partire da 200 €[/translate][translate lang="en"]Free shipping from 200,00 €[/translate]
In questo modo se il sistema rileva la lingua Italiana (it) mostrerà il testo “Spedizione gratuita a partire da 200 €” se invece la lingua selezionata da WPML è l’inglese (en) mostrerà “Free shipping from 200,00 €”.
E se vogliamo tradurlo anche in francese? Semplice aggiungiamo un altro shortcode:
[translate lang="it"]Spedizioni gratuita a partire da 200 €[/translate][translate lang="en"]Free shipping from 200,00 €[/translate][translate lang="fr"]Livraison gratuite à partir de 200 €[/translate]

Semplice no?

Ma come il codice non funziona? Controlla di aver attivato gli shortcode nei Widget di WordPress.

Preventivo Gratuito