Plugin – WPML

Questo plugin (con i suoi addon) è un plugin a pagamento che permette la gestione delle lingue in wp.

I pacchetti da installare sono sostanzialmente:

  • WPML Multilingual CMS (il plugin vero e proprio)
  • WPML String Translation (per tradurre le stringhe immesse lato codice)
  • WPML Translation Management (permette la ricerca di tali stringhe nei temi e nei plugin)
  • WPML Sticky Links
  • WPML CMS Nav (per gestire i menù)
  • WPML Media (per la gestione delle immagini)

Vi sono poi altri pacchetti che si possono installare nel caso si utilizzino plugin come WooCommerce ed altri.

Lato sviluppo l’unica cosa necessaria da fare è, se scriviamo delle stringhe che devono poter essere tradotte, utilizzare questa sintassi:

__("Stringa da stampare a video nella lingua predefnita del sito","gruppo_stringhe");
_e("Stringa da stampare a video nella lingua predefnita del sito","gruppo_stringhe");
//__ serve in pratica se usiamo echo"<div>".__("ciao","gruppo_stringhe")."</div>";
//_e serve a stampare direttamente la stringa

"gruppo_stringhe" è un nome a nostra discrezione che daremo a tutte le stringhe da ni definite, in modo da averle raggruppate nel backend di wp nel menù di wpml. Di solito di usa il nome del progetto/sito che si sta facendo.

Una volta che si è scritto tutto il codice, oppure ogni volta che dobbiamo inserire/modificare una stringa, per renderla traducibile dobbiamo andare nel menù di WPML, nel sottomenù "Localizzazione del tema e dei plugin" e fare la scansione (del tema o del/dei plugin).

In seguito, nel sottomenù "Traduzione stringhe" potremo cercare e tradurre tutte le stringhe inserite. Ad ogni nuova scansione, le stringhe che non verranno trovate saranno cancellate (nel caso ad esempio si modificasse una stringa, dopo la modifica dovremo fare la scansione e cercare la nuova stringa per tradurla)

Per le altre opzioni (lingue, bandierine ecc) i menù che propone WPML sono molto semplici ed intuitivi.

Si può anche implementare un proprio menù, creandone il codice dall'inizio alla fine, ed aggiungerlo poi ad un eventuale menù scelto da noi.

Documentazione completa : https://wpml.org/documentation/getting-started-guide/language-setup/custom-language-switcher/

Vediamo come :

add_filter('wp_nav_menu_items', 'new_nav_menu_items', 10, 2);
function new_nav_menu_items($items, $args) {
    $all_locations = array( //array dei menù ai quali aggiungere le voci delle lingue
        'menu_custom' // menù creato nella lezione dei menù
        'primary' // menù principale, sempre definito cosi' in wp
    );
    if (function_exists('icl_get_languages') && in_array($args->theme_location, $all_locations)) {
        $languages = icl_get_languages('skip_missing=0'); // tutte le lingue. 
        if(!empty($languages)){
			$items = $items . '<li>
									<a href="#" onclick="return false">';											
            foreach($languages as $l){
                if($l['active']){
					$items = $items .'<img src="'.$l['country_flag_url'].'" alt="'.$l['language_code'].'" title="'.$l['native_name'].'" width="18" height="12">'.$l['native_name'].'</a><ul style="display: none; transition-property: all; transition-duration: 0s; transition-timing-function: ease;">';
                }
                else{
					$items = $items .'<li><a href="'.$l['url'].'"><img src="'.$l['country_flag_url'].'" alt="'.$l['language_code'].'" title="'.$l['native_name'].'" width="18" height="12">'.$l['native_name'].'</a><span></span></li>'; 
                }
            }
            $items = $items . '</ul><span></span></li>';  
        }
    } 
    return $items;
}

 

ESERCIZI

  1. Installare wpml.
  2. Sotto il titolo della pagina delle news, stampare "Ultime news" preparandolo per essere gestito multilingua.
  3. In wpml aggiungere la lingua inglese e settare l'italiano come lingua principale
  4. Fare lo scan del tema e dei plugin per aggiornare le stringhe traducibili (https://wpml.org/it/documentazione/guida-introduttiva/localizzazione-del-tema-e-dei-plug-in/)
  5. Andare su String translation, cercare e tradurre in inglese "Ultime news"
  6. Aggiungere le bandierine al menù principale tramite le opzioni di wpml, aggiungere la home inglese, la pagina news inglese e controllare che il testo sia tradotto. Una volta controllato che le bandierine compaiono, togliere l'opzione di visualizzazione delle stesse dal menù
  7. Aggiungere nel footer, tramite codice, un menù delle lingue personalizzato. Sempre tramite codice aggiungere le lingue anche al menù principale/custom in base a quello che si sta utilizzando