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.
Para que qualquer conteúdo em module.config.php seja traduzido, você precisa fazer o seguinte:
- Antes do início do return array( …. instancie o objeto Translator:
array( 'routes' => array( .....
- 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
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.