Como traduzir os arrays de configuração do zend framework 2

No zend framework 2 (ZF2), os arrays php são o principal método de configuração do aplicativo. Às vezes, há strings que devem ser traduzidas para outros idiomas. No entanto, o tradutor ainda não está disponível no momento em que a configuração é mesclada, pois ela deve ser configurada primeiro.

ZF2 oferece o Zend Config Processor Translator para fazer o trabalho. No entanto, existem alguns problemas com isso:

  1. Você provavelmente não quer traduzir tudo em sua configuração, apenas strings específicas. Executar todos os valores de configuração por meio do tradutor pode ter efeitos colaterais indesejados.
  2. O armazenamento em cache das configurações mescladas do servidor em diferentes idiomas é outro problema para esta solução.
  3. A digitalização de código (por exemplo, com Poedit) não funciona.

Veja como você pode lidar com todos esses problemas: simplesmente use um tradutor vazio (nenhuma tradução especificada) em seu arquivo de configuração. Aqui eu traduzo a navegação do meu aplicativo

$translator = new ZendI18nTranslatorTranslator;
return array(
'navigation' => array(
'default' => array(
'admin' => array(
'label' => $translator->translate('Control Panel'),
'controller' => 'admin',
'action' => 'index',
'route' => 'survey/default',
),
),
),
);

O Poedit reconhecerá a função traduzir (”) se configurada corretamente e você poderá editar os arquivos de tradução. Ao exibir a string “traduzida”, certifique-se de passá-la pelo tradutor real com as traduções carregadas (arquivos gettext do Poedit). Aqui, eu exibo a 'Control Panel'string traduzida em meu script de visualização parcial da localização atual:

$label = $this->translate($page->label);
echo
(sprintf('<li>%s</li>', $label));