JJ
Internacionalização de Menu
Fechado
Olá a todos. Estou iniciando o uso do Adianti. Alguém já realizou a tradução do menu do template III. No index.php coloquei o seguinte códiog:
switch ($lang)
{
case 'en':
$menu_string = AdiantiMenuBuilder::parse('menu.xml', $theme);
$content = str_replace('{MENU}', $menu_string, $content);
break;
case 'pt':
$menu_string = AdiantiMenuBuilder::parse('menu_pt.xml', $theme);
$content = str_replace('{MENU}', $menu_string, $content);
break;
default:
$menu_string = AdiantiMenuBuilder::parse('menu.xml', $theme);
$content = str_replace('{MENU}', $menu_string, $content);
break;
}
Mas como podem notar, não funcionou.
switch ($lang)
{
case 'en':
$menu_string = AdiantiMenuBuilder::parse('menu.xml', $theme);
$content = str_replace('{MENU}', $menu_string, $content);
break;
case 'pt':
$menu_string = AdiantiMenuBuilder::parse('menu_pt.xml', $theme);
$content = str_replace('{MENU}', $menu_string, $content);
break;
default:
$menu_string = AdiantiMenuBuilder::parse('menu.xml', $theme);
$content = str_replace('{MENU}', $menu_string, $content);
break;
}
Mas como podem notar, não funcionou.
Resolvi:
Solução:
[1] - Ter dois arquivos xml, um com o menu em português e outro em inglês.
[2] - Edite o arquivo index.php
No index.php:
if ( TSession::getValue('logged') )
{
$content = file_get_contents("app/templates/{$theme}/layout.html");
switch ($lang)
{
case "en":
$menu_string = AdiantiMenuBuilder::parse('menu_pt.xml', $theme, $lang);
break;
case "pt":
$menu_string = AdiantiMenuBuilder::parse('menu_pt.xml', $theme,$lang);
break;
default:
$menu_string = AdiantiMenuBuilder::parse('menu_pt.xml', $theme,$lang);
break;
}
$content = str_replace('{MENU}', $menu_string, $content);
}
[3] - Edite o arquivo /app/lib/menu/AdiantiMenuBuilder.php
linha 4 - adicionei $lang : public static function parse($file, $theme, $lang)
case 'theme3':
ob_start();
$callback = array('SystemPermission', 'checkPermission');
switch ($lang)
{
case "en":
$xml = new SimpleXMLElement(file_get_contents('menu.xml'));
break;
case "pt":
$xml = new SimpleXMLElement(file_get_contents('menu_pt.xml'));
break;
default:
$xml = new SimpleXMLElement(file_get_contents('menu.xml'));
break;
}
$menu = new TMenu($xml, $callback, 1, 'treeview-menu', 'treeview', '');
$menu->class = 'sidebar-menu';
$menu->id = 'side-menu';
$menu->show();
$menu_string = ob_get_clean();
return $menu_string;
break;
Funcionou :)
Tem uma solução mais simples, que é usar esta notação:
menuitem label='_t{Programs}'
Assim usa a tradução default da aplicação (ver TApplicationTranslator).