Call to undefined function i18n_menu_translated_tree() – come risolvere

Drupal

Tags :

Categoria : Drupal

Quando si affronta il problema dell’internazionalizzazione di un sito in Drupal 7 e si abilita il modulo i18n, che aggiunge le funzionalità multilingue, può capitare di imbattersi in un fastidioso errore, che compare non appena abilitato il modulo suddetto.
L’errore è il seguente:

 Fatal error: Call to undefined function i18n_menu_translated_tree()
 in nomedominio.xxx\sites\all\themes\nometema\templates\page.tpl.php on line xx 

Il problema è causato da una errata codifica all’interno del tema, che richiama una funzione non esistente.
La soluzione consiste nella semplice sostituzione di una stringa all’interno del codice, nel file page.tpl.php che è quello che restistuisce l’errore.
Occorre trovare la seguente porzione di codice:

<div class="menu-navigation-container">
        <?php 
        if (module_exists('i18n')) {
          $main_menu_tree = i18n_menu_translated_tree(variable_get('menu_main_links_source', 'main-menu'));
        } else {
          $main_menu_tree = menu_tree(variable_get('menu_main_links_source', 'main-menu'));
        }
        print drupal_render($main_menu_tree);
        ?>
      </div>

e sostituirla con:

<div class="menu-navigation-container">
        <?php 
        if (module_exists('i18n_menu')) {
          $main_menu_tree = i18n_menu_translated_tree(variable_get('menu_main_links_source', 'main-menu'));
        } else {
          $main_menu_tree = menu_tree(variable_get('menu_main_links_source', 'main-menu'));
        }
        print drupal_render($main_menu_tree);
        ?>
      </div>

Salvare il file, ricaricarlo sul server, ed il problema è risolto. Come si può notare l’errore è dovuto alla chiamata nella funzione module_exists, che richiama ‘i18n‘ invece di ‘i18n_menu‘, probabilmente per una mancata manutenzione del tema in uso, che non ha recepito gli aggiornamenti avvenuti nel modulo internazionalization.


Lascia un commento

.

.