Se você está desenvolvendo o seu site em ZendFramework 2 e colocou corretamente o método $this->translator(“PALAVRA”) para todas as strings de sua view que desejavas que fossem traduzidas você deve estar se perguntando: como eu faço para que a página mude para o idioma?
Bom, primeiramente você já deve ter alterado os arquivos do idioma que quer que o site seja traduzido na pasta language de seu módulo (veja a estrutura abaixo para o módulo Paginas).
O que você precisa agora é que, dinamicamente, no arquivo module.config.php do seu módulo sejam alterados as informações de idioma. O arquivo de tradução que é pego está no atributo “locale” da minha array (veja o print abaixo). O valor para esse atributo por padrão é o “en_US”, mas eu já setei para “pt”. Sendo assim, por padrão a página será aberta usando o arquivo de tradução pt.po, contido na pasta “language“.
Digamos que você esteja em uma página em português e daí queira acessar a mesma página em inglês. Não há como alterar dinamicamente o arquivo module.config.php ao mudar o idioma. Porém, há uma solução muito simples e fácil.
A Solução
Imagino que seja no seu Controller que você receba as informações sobre o que está sendo acessado (quer o id do registro quer a slug) e o idioma desse conteúdo. O que você deve fazer é simplesmente usar o getServiceLocator e puxar o serviço de tradução, alterando o local. Faça o seguinte:
getServiceLocator()->get('translator');
$translator->setLocale("en"); //Ou coloque a variável da slug do idioma
//FIM DA ALTERAÇÃO DE IDIOMA
?>
Veja como eu fiz uma action de um controller com alteração de idioma:
Se não expliquei direito, pode perguntar. Espero ajudar.