ZF2 :: Como traduzir uma label de um form (label form)

Olá pessoal!

Ao preparar o site que estou trabalhando para a tradução me deparei com um problema. Como traduzir a label de um form? Sim porque se eu quisesse traduzir qualquer coisa em uma view no ZendFramework2 é muito fácil. Basta apenas colocar $this->translate(“FRASE A TRADUZIR”) e o Poedit encontrará o termo que deve ser traduzido.

Há, porém, um problema. Se estou trabalhando com a construção de formulários através de uma classe específica de formulários tal como ContatoForm.php (ex.: Contato->Form->ContatoForm.php) e defino as labels da seguinte forma: $fm_nome->setLabel(“Nome*:”); não posso simplesmente fazer $fm_nome->setLabel($this->translate(“Nome*:”)); Se eu tentar fazer isso ocorrerá um erro.

Então, qual seria a solução? Por padrão, sem que haja o $this->translate(“STRING”), o Poedit não reconhece que trata-se de uma string para tradução. Procurei em tudo que é blog internacional e a maioria possuía soluções  um tanto que complexas. Foi então que resolvi investigar como funcionava o Poedit. E descobri uma solução simples!

A solução é configurar o Poedit para reconhecer que os conteúdos contidos no $objeto->setLabel(“NOME DA LABEL”). Assim, o Poedit recuperará os dados contidos em todos os ->setLabel e puxará para o arquivo de tradução. Então, como fazer a correta configuração?

Configurando o Poedit

1. Já no arquivo de tradução .po, clique no menu Catálogo->Propriedades;

Clique no menu Catálogo e escolha propriedades.
Clique no menu Catálogo e escolha propriedades.

2. Uma janela como a abaixo aparecerá. Escolha a aba “Palavras-chave do código” e em seguida clique no botão pontilhado para inserir uma nova palavra chave. Note que a palavra chave padrão é “translate“. Isso significa que qualquer método no seu código que seja pura e simplesmente “translate” é pego como base para traduzir a palavra que encontra-se dentro dele. É por isso que o $this->translate(“PALAVRA”) funciona!

Clique na Aba Palavras Chave do Código e após isso clique no botão de inserir palavra chave.
Clique na Aba Palavras Chave do Código e após isso clique no botão de inserir palavra chave.

3. Agora basta adicionar o método setLabel à lista de palavras-chave adicionais. Assim, ele irá varrer os arquivos do módulo onde encontra-se o arquivo de tradução procurando por algum método com o nome setLabel e utilizar o primeiro parâmetro passado como string a ser traduzida.

Adicione o método setLabel à lista de palavras-chave e clique em ok.
Adicione o método setLabel à lista de palavras-chave e clique em ok.

Agora basta atualizar o documento. Espero que tenha ajudado.

CategoriasSem categoria

1 comentário

Deixe um comentário

O seu endereço de e-mail não será publicado.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.