+2

Zend Framework - Mensagens de erro em Portugues no ZendForm

criado por Camila Balboni em 03/02/2011 9:22am
Zend Framework é um conjunto de classes criado pela Zend para facilitar a criação de sites PHP oferendo um formato pré determinado, por exemplo você faz formulários onde as mensagens de validação já estão prontas. O problema é que isso ás vezes engessa o código e o torna inflexível para quem não conhece o formato direito. Por isso a idéia desse e dos próximos artigos é oferecer soluções simples para quem está começando agora a trabalhar com Zend Framework.

A idéia é ter um Array com a variável que os componentes do ZendForm usam internamente e a mensagem em português, depois criar um componente de ZendTranslate e informá-lo no init da sua classe que estende o ZendForm. Parece fácil, nao. Vamos aos arquivos:

Primeiro precisamos criar um arquivo com o array em portugues, eu criei o meu dentro de application/i18n/pt-br.php . Dentro dele vai o conteúdo abaixo:

//application/i18n/pt-br.php 

$portugues = array();
$portugues['isEmpty']= 'Este campo não pode ser vazio';

// Email
$portugues['emailAddressInvalid'] = 'não é um email válido no formato nome@servidor';

//Captcha
$portugues['missingValue'] = 'Valor incorreto. Digite novamente.';
$portugues['badCaptcha'] = 'Valor incorreto. Digite novamente.';
$portugues['missingID'] = 'Está faltando valores. Digite novamente.';




Existem outras mensagens mas infelizmente eu não achei nenhuma documentação. Se alguém achar por favor avise.

Agora falta configurar os outros arquivos:


bootstrap.php (aquele arquivo inicial..):

//Registrando o Zend Translate 
include_once APPLICATION_PATH . '/i18n/pt-br.php';
$translate = new Zend_Translate('array', $portugues, 'pt_BR');
Zend_Registry::set('translate', $translate );


Agora coloque o código abaixo no init do seu formulário:


$translate = Zend_Registry::get('translate');
$this->setTranslator($translate);




E pronto!

A solução eu encontrei no blog do Adler Meldrado (Obrigada ;-)) e em um fórum que usava um tal de de.php (eu acho que é alemão..), eu só adaptei o local dos Registry e do Array de idiomas.

Comentários:

Mostrando 1 - 3 de 3 comentários
Luiz Henrique disse:
Mto bom estava procurando com isso será mto util
22/11/2011 8:39am (~3 meses atrás)

bem interessante =D

Procurei muito por isso. Se não me engano no http://www.devmedia.com.br/ tinha algo a respeito também mas entendi melhor aqui.

Obrigada =D
13/10/2011 1:11pm (~4 meses atrás)

Parabéns pelo artigo Camila, achei muito bem escrito. :-)

Com relação as demais chaves do array para tradução, tem uma contribuição do usuário Matias Rezende no "iMasters Code" que possui acredito que todas as chaves, dá uma olhada:

http://code.imasters.com.br/index.php?/topic/25-traducao-das-mensagens-de-validacao/

Um abraço!

31/03/2011 2:05am (~10 meses atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)