Chegamos á última parte do tutorial de como criar um plugin multi language para traduzir conteúdos estáticos.
Agora em sua view ou layout para traduzir o texto você deve buscar o valor da lang, e o Zend_Translate que estão registrados com o Zend_Register
Para fazer isso veja o exemplo a baixo...
<!DOCTYPE html>
<html lang="<?= Zend_Registry::get('lang') ?>">
<head>
<meta charset="UTF-8">
<title>Plugin Multi Language ZEND Framework 1</title>
</head>
<body>
<?php $translate = Zend_Registry::get('Zend_Translate') ?>
<h1><?= $translate->_("Título da página"); ?></h1>
<h2><?= $translate->_("Subtítulo da página"); ?></h2>
<p><?= $translate->_("Texto de exemplo para mostrar o funcionamento do plugin de tradução"); ?></p>
<a href="#"><?= $translate->_("Leia mais"); ?></a>
</body>
</html>
Veja que dentro da tag html exibimos o valor do parâmetro lang com Zend_Registry::get('lang'), e depois colocamos na variável $translate o Zend_Translate, chamado com o Zend_Registry::get('Zend_Translate').
E ao invés de você escrever direto na tag por exemplo
<h1>Título da página</h1>
Você usará o tradutor do Zend
<h1><?= $translate->_("Título da página"); ?></h1>
Agora ao acessar a url com um valor de linguagem contendo en, es, pt_BR ou outra que você criar, como no exemplo a seguir...
www.site.com/en/module/controller/action
O Zend_Translate irá procurar dentro do arquivo Translate.php que está na pasta /data/locales/ na sua respectiva língua, um índice do array que contenha o valor "Título da página", e se achar ele retorna o seu valor que é a tradução para "Título da página", que no nosso caso será "Page title". O interessante é que se caso não seja encontrado um índice contendo exatamente o texto, será exibido o texto normal.
Bom agora vamos editar os arquivos que criamos em nossa primeira parte do tutorial, esses arquivos Translate.php de cada linguagem deverão conter em nosso exemplo o seguinte...
/data/locales/en/Translate.php
<?php
/**
* Traduções estáticas para a aplicação.
*
* @author Everson da Luz
* @return array Retorna um array contendo o texto original como índice e a tradução como valor
*/
return array(
'Título da página' => 'Page title',
'Subtítulo da página' => 'Page caption',
'Texto de exemplo para mostrar o funcionamento do plugin de tradução' => 'Sample text to show the functioning of the translation plugin',
'Leia mais' => 'Read more'
);
/data/locales/es/Translate.php
/**
* Traduções estáticas para a aplicação.
*
* @author Everson da Luz
* @return array Retorna um array contendo o texto original como índice e a tradução como valor
*/
return array(
'Título da página' => 'Título de la página',
'Subtítulo da página' => 'Página subtítulo',
'Texto de exemplo para mostrar o funcionamento do plugin de tradução' => 'Texto de ejemplo para mostrar el funcionamiento del Plugin de traducción',
'Leia mais' => 'Leer más'
);
/data/locales/pt_BR/Translate.php
/**
* Traduções estáticas para a aplicação.
*
* @author Everson da Luz
* @return array Retorna um array contendo o texto original como índice e a tradução como valor
*/
return array(
'Título da página' => 'Título da página',
'Subtítulo da página' => 'Sub título da página',
'Texto de exemplo para mostrar o funcionamento do plugin de tradução' => 'Texto de exemplo para mostrar o funcionamento do plugin de tradução',
'Leia mais' => 'Leia mais'
);
Com isso você consegue traduzir qualquer conteúdo estático, bastando adicionar no array de cada língua, o texto original e a tradução como valor.
A única coisa que você deve fazer é sempre passar em seus links para outras páginas o valor lang que você obtêm com o Zend_Registry::get('lang'), como por exemplo...
<a href="<?= Zend_Registry::get('lang') ?>/module/controller/action">Link</a>
É isso, qualquer dúvida deixe nos comentários. Veja as outras partes do tutorial nos links a baixo.
Plugin multi language Zend Framework 1 - Parte 1