ZF2: Navigation Menu com Tradução

Menu do site em inglês com os menus: Home, Events, Who we are, Portfolio and Contact

Se você está fazendo seu site em múltiplos idiomas e usando o Navigation Menu para fazer o menu do seu site, mais cedo ou mais tarde você vai se perguntar: como eu traduzo as labels e os títulos do menu dentro do arquivo de configuração (module.config.php)?

Partirei do pré-suposto de que você já construiu seu menu usando o Navigation Menu e que os dados desse menu estão no arquivo module.config.php e a estrutura dele estão em alguma partial/helper chamada menu.phtml.

Veja abaixo como ficou o menu de um site  em que estou trabalhando. Ele está disponível em português e inglês.

Menu do site em português, com os ítens: Home, Eventos, Quem Somos, Portólio e Contato
Menu do site em português
Menu do site em inglês com os menus: Home, Events, Who we are, Portfolio and Contact
Menu do site em inglês

Para que qualquer conteúdo em module.config.php seja traduzido, você precisa fazer o seguinte:

      1. Antes do início do return array( …. instancie o objeto Translator:
         array(
                'routes' => array( .....
        
      2. Ainda no module.config.php, na array navigation, onde você encontra as labels de seu menu, use o objeto instanciado e chame o método translate para traduzir a label. Veja abaixo um exemplo:
        'navigation'=>array(
        	'default'=>array(
        		array(
                          'label'=>$translator->translate('Home'),
        		  'route'=>'home',
        		  'params'=>array('lang'=>'pt')
        		),
        		array(
                          'label'=>$translator->translate('Eventos'),
                          'route'=>'eventos',
                          'params'=>array('lang'=>'pt'),
        		),
                        ...
        

Mas só fazer isso não adiantará. Embora o arquivo seja capturado pelo PoEdit e você consiga traduzi-lo, ao alterar o idioma do site os menus ainda ficarão no idioma original.  O que fazer então? A solução é bem simples.

Traduzir a partial/helper do menu

Na sua estrutura do menu (partial/helper), basta adicionar $this->translate() à impressão do título do menu. Veja o print abaixo para entender melhor.

Arquivo partials/menu.phtml

Menu Navigation

Basicamente, aonde havia $page->getLabel() coloquei $this->translate($page->getLabel()) e pronto. Agora seu menu deve funcionar com múltiplos idiomas.


Se gostou do post, se ele lhe ajudou de alguma forma, por favor, curta-o ou deixe um comentário. Dá um baita incentivo. Se tiver alguma dúvida, também estou à disposição.

 

CategoriasSem categoria

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.