Plugin Multi Language Zend Framework 1 - Parte 3

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

Plugin multi language Zend Framework 1 - Parte 2

Plugin multi language Zend Framework 1 - Parte 3

Voltar para o topo