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.
0 commenti