Author: Andreia.Bellini
Date: 2010-02-25 03:00:40 +0100 (Thu, 25 Feb 2010)
New Revision: 28263

Modified:
   
doc/branches/1.4/more-with-symfony/pt/05-Custom-Widgets-and-Validators.markdown
   doc/branches/1.4/more-with-symfony/pt/08-Advanced-Doctrine-Usage.markdown
Log:
corrections: chapter 05 and 08

Modified: 
doc/branches/1.4/more-with-symfony/pt/05-Custom-Widgets-and-Validators.markdown
===================================================================
--- 
doc/branches/1.4/more-with-symfony/pt/05-Custom-Widgets-and-Validators.markdown 
    2010-02-25 01:46:16 UTC (rev 28262)
+++ 
doc/branches/1.4/more-with-symfony/pt/05-Custom-Widgets-and-Validators.markdown 
    2010-02-25 02:00:40 UTC (rev 28263)
@@ -1,11 +1,11 @@
-Widgets e Validators Personalizados
-===================================
+Widgets e Validadores Personalizados
+====================================
 
-* por Thomas Rabaix *
+*por Thomas Rabaix*
 
-Este capítulo explica como criar um widget e validadores personalizados para 
uso
+Este capítulo explica como criar *widgets* e validadores personalizados para 
uso
 no framework de formulário. Ele irá explicar os detalhes internos de 
`sfWidgetForm` e
-`sfValidator`, bem como a forma de construir tanto um widget simples quanto um 
complexo.
+`sfValidator`, bem como a forma de construir tanto um *widget* simples quanto 
um complexo.
 
 Por Dentro do Widget e Validator
 ------------------------------
@@ -28,15 +28,15 @@
    Embora não seja uma boa prática para substituir o construtor, o método 
`configure()`
    pode ser facilmente substituído.
 
-* `render()`: saídas de HTML para o widget. O método tem uma primeiro 
argumento obrigatório,
+* `render()`: saídas de HTML para o widget. O método tem um primeiro argumento 
obrigatório,
    o nome do elemento HTML, e um segundo argumento opcional,
    o valor.
 
-> **NOTE**
-> Um objeto `sfWidgetForm` não sabe nada sobre o seu nome ou o seu valor.
-> O componente é responsável apenas pela prestação do widget. O nome e
-> o valor são geridos por um objeto `sfFormFieldSchema`, que é o link
-> entre os dados e os widgets.
+>**NOTE**
+>Um objeto `sfWidgetForm` não sabe nada sobre o seu nome ou o seu valor.
+>O componente é responsável apenas pela prestação do widget. O nome e
+>o valor são geridos por um objeto `sfFormFieldSchema`, que é o link
+>entre os dados e os widgets.
 
 ### Por Dentro do sfValidatorBase
 
@@ -44,15 +44,15 @@
 ~`sfValidatorBase::clean()`~ é o método mais importante desta classe
 pois ele verifica se o valor é válido, dependendo das opções fornecidas.
 
-Internamente, o método `clean()` realiza várias acções diferentes:
+Internamente, o método `clean()` realiza várias ações diferentes:
 
 * Retira os espaços no início e no final do valor de entrada para valores 
string (se especificado através da opção `trim`)
 * Verifica se o valor é vazio
-* Chama o método `doclean()` do validador.
+* Chama o método `doClean()` do validador.
 
 O método `doClean()` é o método que implementa a lógica principal de validação.
-Não é boa prática para sobrescrever o método `clean()`. Em vez disso,
-sempre execute qualquer lógica personalizada através do método `doClean()`.
+Não é uma boa prática sobrescrever o método `clean()`. Em vez disso,
+customize a lógica do método `doClean()`.
 
 O validador também pode ser usado como um componente independente para 
verificar a integridade de entrada.
 Por exemplo, a validador sfValidatorEmail irá verificar se o e-mail é válido:
@@ -69,29 +69,29 @@
       $this->forward404();
     }
 
-> **NOTE**
-> Quando um formulário está vinculado aos valores de solicitação, o objeto 
`sfForm` mantém
-> referências aos valores originais (dirty, "sujos") e os valores validados 
(clean, "limpos").
-> Os valores originais são usados quando o formulário é redesenhado, enquanto 
-> os valores "cleaned" são utilizados pela aplicação (por exemplo, para salvar 
o objeto).
+>**NOTE**
+>Quando um formulário está vinculado aos valores de solicitação, o objeto 
`sfForm` mantém
+>referências aos valores originais (*dirty*, "sujos") e os valores validados 
(*clean*, "limpos").
+>Os valores originais são usados quando o formulário é redesenhado, enquanto 
+>os valores *cleaned* são utilizados pela aplicação (por exemplo, para salvar 
o objeto).
 
 ### O atributo `options`
 
-Tanto o `sfWidgetForm` e `sfValidatorBase` objetos têm uma variedade de opções:
-algumas são opcionais, enquanto outras são obrigatórias. Estas opções são 
definidas
+Tanto o objeto `sfWidgetForm` quanto o `sfValidatorBase` têm uma variedade de 
opções:
+algumas opcionais, outras obrigatórias. Estas opções são definidas
 dentro do método `configure()` de cada classe através de:
 
 * `AddOption($name, $value)`: define uma opção com um nome e um valor padrão
 * `AddRequiredOption($name)`: define uma opção obrigatória
 
 Estes dois métodos são muito convenientes pois garantem que os valores de 
dependência
-são corretamente passados para o validador ou o widget.
+são passados corretamente para o validador ou o widget.
 
-Construir um Widget e Validator Simples
+Construindo um Widget e Validator Simples
 --------------------------------------
 
 Esta seção irá explicar como criar um widget simples. Este elemento particular
-será chamado de "Trilean widget". O widget exibirá uma caixa de seleção com 
três opções:
+será chamado de "Trilean" widget. O widget exibirá uma caixa de seleção com 
três opções:
 `Não`, `Sim` e `Nulo`.
 
     [php]
@@ -120,14 +120,14 @@
             $attributes ['selected'] = 'selected';
           }
 
-          $options [] = $this->renderContentTag (
+          $options [] = $this->renderContentTag(
             'option',
             self::escapeOnce($option),
             $attributes
           );
         }
 
-        return $ this-> renderContentTag (
+        return $this->renderContentTag(
           'select',
           "\n". implode ("\n", $options). "\n",
           array_merge(array('name' => $name), $attributes
@@ -135,10 +135,10 @@
       }
     }
 
-O método `configure()` define a lista de valores de opção através da opção 
`choices`.
+O método `configure()` define a lista de valores da opção através da opção 
`choices`.
 Este array pode ser redefinido (ou seja, para alterar o rótulo associado a 
cada valor).
 Não há limite para o número de opções que um widget pode definir. 
-A classe Widget base, no entanto, declara algumas opções padrão, que funcionam 
de-facto
+A classe base widget, no entanto, declara algumas opções padrões, que 
funcionam *de-facto*
 como opções reservadas:
 
 * `id_format`: o formato de id, o padrão é '%s'
@@ -208,7 +208,7 @@
 `null` como um valor válido, o método deve voltar sempre `falso`.
 
 **NOTE**
-> Se `isEmpty()` retorna true, o método `doClean()` método nunca será chamado.
+>Se `isEmpty()` retorna true, o método `doClean()` método nunca será chamado.
 
 Embora este widget seja bastante simples, ele apresenta algumas 
características de base importantes
 que serão necessárias mais adiante. A próxima seção irá criar um widget mais
@@ -219,7 +219,7 @@
 
 Nesta seção, vamos construir um widget complexo. Novos métodos serão
 introduzidos e o widget terá alguma interação JavaScript também.
-O widget será chamado de "GMAW": "Google Map Address Widget".
+O widget será chamado de "GMAW": "*Google Map Address Widget*".
 
 O que queremos alcançar? O widget deve fornecer uma maneira fácil para o
 usuário final para adicionar um endereço. Ao utilizar um campo de texto e com 
os 
@@ -354,7 +354,7 @@
           $value['longitude'] = isset($value['longitude']) ? 
$value['longitude'] : ''; $ value [ 'longitude']:'';
           $value['latitude'] = isset($value['latitude']) ? $value['latitude'] 
: ''; $ value [ 'latitude']:'';
 
-          / / Define o widget address
+          // Define o widget address
           $address = new sfWidgetFormInputText(array(), 
$this->getOption('address.options'));
           $template_vars['{input.search}'] = 
$address->render($name.'[address]', $value['address']);
 
@@ -363,7 +363,7 @@
           $template_vars['{input.longitude}'] = 
$hidden->render($name.'[longitude]', $value['longitude']);
           $template_vars['{input.latitude}'] = 
$hidden->render($name.'[latitude]', $value['latitude']);
 
-          / / Mesclarmodelos e variáveis
+          // Mescla modelos e variáveis
           return strtr(
             
$this->getOption('template.html').$this->getOption('template.javascript'),
             $template_vars
@@ -387,7 +387,7 @@
 para o bloco de JavaScript (através da variável `template.js`), pelo qual o 
JavaScript pode
 tratar adequadamente os diferentes elementos.
 
-O método `rende ()` também instancia dois widgets internos: um widget 
`sfWidgetFormInputText`, 
+O método `render()` também instancia dois widgets internos: um widget 
`sfWidgetFormInputText`, 
 que é usado para processar o campo `address` e um widget 
`sfWidgetFormInputHidden`, 
 que é usado para processar os campos ocultos.
 
@@ -432,7 +432,7 @@
 O objeto JavaScript tem alguns métodos interessantes:
 
 * `init()`: o método em que todas as variáveis são inicializadas e eventos
-   inputs
+   para diferentes inputs
 
 * `lookupCallback()`: um método *estático* usado pelo método de geocoder
    pesquisar o endereço fornecido pelo usuário
@@ -443,7 +443,7 @@
 O código JavaScript final pode ser visto no Apêndice A.
 
 Por favor, consulte a documentação do Google map para obter mais detalhes 
sobre a funcionalidade
-do Google Maps [API](http://code.google.com/apis/maps/).
+do Google maps [API](http://code.google.com/apis/maps/).
 
 ### Validador `sfValidatorGMapAddress`
 
@@ -452,7 +452,7 @@
 o valor não pode ser `null`. Assim, `sfValidatorGMapAddress` só precisa validar
 os diferentes valores: `latitude`, `longitude` e `address`. A variável 
`$value` 
 deve ser um array, mas como não se deve confiar na entrada do usuário, o 
validador 
-verifica a presença de todas as chaves para que os validadores internos passam 
valores válidos.
+verifica a presença de todas as chaves para que os validadores internos passam
 valores válidos.
 
     [php]
@@ -460,7 +460,7 @@
     {
       protected function doClean($value)
       {
-        if (! if (!is_array($value))
+        if (! if(!is_array($value))
         {
           throw new sfValidatorError($this, 'invalid');
         }
@@ -488,14 +488,14 @@
 >**NOTE**
 >Um validador sempre lança uma `excepção` `sfValidatorError` quando um valor 
 >não é
 >válido. Por isso, a validação é cercada por um bloco `try/catch`.
->Neste validador, o validador re-lança uma nova excepção `invalid`, que
+>Neste validador, a validação re-lança uma nova excepção `invalid`, que
 >equivale a um erro de validação `invalid` no validador 
 >`sfValidatorGMapAddress`.
 
 ### Testando
 
-Por que o teste é importante? O validador é a cola entre a entrada do usuário
-e a aplicação. Se o validador é falho, a aplicação é vulnerável.
+Por que o teste é importante? O validador é a ponte entre a entrada do usuário
+e a aplicação. Se o validador é falho, a aplicação esta vulnerável.
 Felizmente, o symfony vem com o `lime` que é uma biblioteca de testes 
 muito fácil de usar.
 
@@ -541,11 +541,11 @@
 de cada validador. Este teste reproduz este comportamento instanciando
 o validador `sfValidatorGMapAddress` diretamente e testa diferentes valores.
 
-Reflexões Finais
+Considerações Finais
 --------------
 
-O erro mais comum durante a criação de um widget é ser focar excessivamente em
+O erro mais comum durante a criação de um *widget* é ser focar excessivamente 
em
 como as informações serão armazenadas no banco de dados. O framework 
formulário é
 simplesmente um contêiner de dados e um framework de validação. Portanto, um 
widget deve
 gerenciar somente a sua informação relacionada. Se os dados forem válidos, em 
seguida, os diferentes
-valores limpos poderão então ser utilizada pelo model ou no controller.
\ No newline at end of file
+valores limpos poderão então ser utilizados no modelo ou no controlador.
\ No newline at end of file

Modified: 
doc/branches/1.4/more-with-symfony/pt/08-Advanced-Doctrine-Usage.markdown
===================================================================
--- doc/branches/1.4/more-with-symfony/pt/08-Advanced-Doctrine-Usage.markdown   
2010-02-25 01:46:16 UTC (rev 28262)
+++ doc/branches/1.4/more-with-symfony/pt/08-Advanced-Doctrine-Usage.markdown   
2010-02-25 02:00:40 UTC (rev 28263)
@@ -1,21 +1,21 @@
-Uso Avançado do Doctrine 
-========================
+Uso Avançado do Doctrine
+=======================
 
-* Por Jonathan H. Wage *
+*Por Jonathan H. Wage*
 
-Criando um comportamento para Doctrine
---------------------------------------
+Criando um Comportamento no Doctrine
+---------------------------
 
-Nesta seção vamos demonstrar como você pode escrever um comportamento usando 
Doctrine 1.2.
+Nesta seção vamos demonstrar como você pode escrever um comportamento 
(*behavior*) usando Doctrine 1.2.
 Iremos criar um exemplo que lhe permitirá manter facilmente um contador em 
cache dos relacionamentos
-de modo que você não terá que consultar a contagem a todo momento.
+de modo que você não terá que consultar o contador a todo momento.
 
 A funcionalidade é bastante simples. Para todos os relacionamentos que você 
deseja manter
 um contador, o comportamento irá adicionar uma coluna ao modelo para armazenar 
a contagem atual.
 
-### O Schema
+### O Esquema
 
-Aqui está o Schema que você irá utilizar para começar. Mais tarde vamos 
modificá-lo e adicionar a
+Aqui está o esquema (*schema*) que você irá utilizar para começar. Mais tarde 
vamos modificá-lo e adicionar a
 definição do `actAs` para o comportamento que estamos prestes a escrever:
 
     [yml]
@@ -39,13 +39,13 @@
           onDelete: CASCADE
           foreignAlias: Posts
 
-Agora podemos criar tudo para este schema:
+Agora podemos criar tudo para este esquema:
 
-    $ php symfony doctrine:build all
+    $ php symfony doctrine:build --all
 
 ### O Template
 
-Primeiro, precisamos escrever uma classe de template (modelo) 
`Doctrine_Template` filha que será
+Primeiro, precisamos escrever uma classe filha de `Doctrine_Template` que será
 responsável por adicionar as colunas ao modelo que irá armazenar a contagem.
 
 Você pode simplesmente colocá-lo em qualquer diretório `lib/` do projeto que o 
symfony
@@ -79,11 +79,11 @@
 Quando a informação de mapeamento de um modelo é instanciada, quaisquer 
comportamentos ligados
 terão os métodos `setTableDefinition()` e `setUp()` invocados. Da mesma forma 
que você têm
 na classe `BasePost` em `lib/model/doctrine/base/BasePost.class.php`. Isto
-lhe permite adicionar coisas para qualquer modelo de modo plug n' play. Isto 
pode estar
-nas colunas, relacionamentos, ouvintes de eventos, etc
+lhe permite adicionar coisas para qualquer modelo de modo *plug n' play*. Isto 
pode ser
+nas colunas, relacionamentos, ouvintes de eventos (*event listeners*), etc.
 
 Agora que você entende um pouco sobre o que está acontecendo, vamos fazer o
-comportamento `CountCache` realmente fazer alguma coisa:
+comportamento `CountCache` fazer alguma coisa de fato:
 
     [php]
     class CountCache extends Doctrine_Template
@@ -105,16 +105,16 @@
           // Adiciona a coluna ao modelo relacionado
           $columnName = $this->_options['relations'][$relation]['columnName'];
           $relatedTable = $this->_table->getRelation($relation)->getTable();
-          $ this-> _OPTIONS [ 'Relações'] [$ relation] [ 'className'] = $ 
RelatedTable-> GetOption ( 'nome');
+          $this->_options['relations'][$relation]['className'] = 
$relatedTable->getOption('name');
           $relatedTable->setColumn($columnName, 'integer', null, 
array('default' => 0));
         }
       }
     
 
-O código acima irá agora adicionar colunas para manter a contagem do modelo 
relacionados.
+O código acima irá adicionar colunas para manter a contagem do modelo 
relacionado.
 Portanto, no nosso caso, estamos adicionando o comportamento ao modelo `Post` 
para o relacionamento 
-com `Thread` Nós queremos manter o número de posts qualquer instancia de 
`Thread`
-tem em uma coluna chamada `num_posts`. Então agora modifique o YAML schema 
para 
+com `Thread`. Nós queremos manter o número de posts que qualquer instância de 
`Thread`
+tem em uma coluna chamada `num_posts`. portanto modifique o esquema YAML para 
 definir as opções adicionais para o comportamento:
 
     [yml]
@@ -129,14 +129,14 @@
               foreignAlias: Posts
       # ...
 
-Agora, o modelo `Thread` tem uma coluna `num_posts`que irá manter-se atualizada
+Agora o modelo `Thread` possui uma coluna `num_posts`que irá manter-se 
atualizada
 com o número de posts que cada thread tem.
 
-### O Ouvinte de Eventos
+### O Ouvinte de Eventos (*Event Listener*)
 
-O próximo passo para a construção do comportamento é escrever um ouvinte de 
evento registrador 
+O próximo passo para a construção do comportamento é escrever um registrador 
de ouvintes de evento (*record event listener*)
 que será responsável por manter a contagem atualizada quando inserirmos novos 
registros,
-excluir um registro ou executar DQL de exclusão de registros em lote:
+excluirmos um registro ou executarmos DQL de exclusão de registros em lote:
 
     [php]
     class CountCache extends Doctrine_Template
@@ -151,9 +151,9 @@
       }
     }
 
-Antes de prosseguirmos, precisamos definir a `classe` CountCacheListener que
-extende `Doctrine_Record_Listener`. Ele aceita uma variedade de opções que são 
simplesmente
-transmitidos ao ouvinte a partir do modelo:
+Antes de prosseguirmos, precisamos definir a classe `CountCacheListener` que
+extende `Doctrine_Record_Listener`. Ela aceita uma variedade de opções que são 
simplesmente
+repassadas ao ouvinte a partir do modelo:
 
     [php]
     // lib/model/count_cache/CountCacheListener.class.php 
@@ -195,7 +195,7 @@
           $table
             ->createQuery()
             ->Update()
-            ->set($options['columnName'], $options['columnName'].' +1)
+            ->set($options['columnName'], $options['columnName'].' +1')
             ->where($relation['local'].' = ?', $invoker->$relation['foreign'])
             ->execute();
         }
@@ -203,15 +203,15 @@
     }
 
 O código acima irá incrementar a contagem em um para todas os relacionamentos 
configurados
-mediante a emissão de uma instrução DQL UPDATE quando um novo objeto como é 
inserido abaixo:
+mediante a emissão de uma instrução DQL UPDATE quando um novo objeto como é 
inserido, conforme o exemplo abaixo:
 
     [php]
     $post = new Post();
-    $ post-> thread_id = 1;
+    $post->thread_id = 1;
     $post->body = 'corpo da mensagem';
     $post->save();
 
-O `Thread` com o `id` `1` terá a coluna `num_posts` coluna incrementado em `1`.
+O `Thread` com o `id` `1` terá a coluna `num_posts` incrementada em `1`.
 
 Agora que o contador está sendo incrementado quando novos objetos são 
inseridos, nós
 precisamos manipular quando objetos são excluídos e diminuir o contador. 
Faremos isso
@@ -241,7 +241,7 @@
     }
 
 O método `postDelete()` acima é quase idêntico ao `postInsert`. A
-única diferença é que nós diminuiremos a coluna `num_posts` em 1 ao invés de
+única diferença é que nós diminuiremos a coluna `num_posts` em `1` ao invés de
 incrementá-lo. Ele manipularia o seguinte código se fôssemos remover o 
registro `$post`
 salvo previamente:
 
@@ -282,12 +282,12 @@
       }
     }
 
-O código acima clona a instrução `DQL DELETE` e transformá-lo em um `SELECT` 
que
+O código acima clona a instrução `DQL DELETE` e transformá-a em em um `SELECT` 
que
 nos permite recuperar os `ID`s que serão excluídos, para que possamos 
atualizar o contador
 desses registros que foram excluídos.
 
-Agora, temos o seguinte cenário cuidando de que o contador será decrementado
-se tivéssemos de fazer o seguinte:
+Agora, temos o seguinte cenário tratado e os contadores serão decrementados
+se fizéssemos o seguinte:
 
     [php]
     Doctrine::getTable('Post')
@@ -306,7 +306,7 @@
       ->where('body LIKE ?', '%cool%')
       ->execute();
 
->**NOTA**
+>**NOTE**
 >Para que o método `preDqlDelete()` seja invocado você deve habilitar
 >um atributo. Os retornos DQL estão desligados por padrão devido a eles terem 
 >um custo
 >um pouco maior. Então se você quiser usá-los, você deve habilitá-los.
@@ -340,7 +340,7 @@
     $ php symfony doctrine:build --all --and-load
 
 Agora tudo está criado e a massa de dados está carregada, por isso vamos 
executar um teste para ver
-Se os contadores foram mantidas atualizados:
+se os contadores foram mantidas atualizados:
 
     $ php symfony doctrine:dql "FROM Thread t, t.Posts p"
     doctrine - executing: "FROM Thread t, t.Posts p" ()
@@ -396,7 +396,7 @@
       ->where('body LIKE ?', '%legal%')
       ->execute();
 
-Agora nós excluimos todos as mensagens relatadas e o valor de `num_posts` 
deverá ser zero:
+Agora nós excluimos todas as mensagens relacionadas e o valor de `num_posts` 
deverá ser zero:
 
     $ php symfony doctrine:dql "FROM Thread t, t.Posts p"
     doctrine - executing: "FROM Thread t, t.Posts p" ()
@@ -405,22 +405,22 @@
     doctrine - num_posts: '0'
     doctrine - Posts: { }
 
-E é isso! Espero que este artigo seja útil tanto no sentido de que você aprenda
-algo sobre os comportamentos e os comportamentos em si também sejam úteis à 
você!
+E é isso! Espero que este artigo seja útil tanto no sentido de que você 
aprendeu
+algo sobre os comportamentos e que os comportamentos em si também sejam úteis 
à você!
 
 Usando o Cache de Resultados do Doctrine
 -----------------------------
 
 Em aplicações web de tráfego pesado é comum necessitar de um cache de 
informações
-para salvar recursos de CPU. Com a última versão do Doctrine 1.2 fizemos um 
monte de
+para poupar recursos de CPU. Com a última versão do Doctrine 1.2 fizemos um 
monte de
 melhorias no cache de conjunto de resultados que lhe dará muito mais controle 
sobre
-a remoção de entradas no cache a partir dos controladore de cache. 
Anteriormente não era possível
+a remoção de entradas no cache a partir dos controladores de cache. 
Anteriormente não era possível
 especificar a chave de cache usado para armazenar a entrada no cache, então 
você não podia realmente
-identificar a entrada de cache a fim de excluí-lo.
+identificar a entrada de cache a fim de excluí-la.
 
 Nesta seção, mostraremos um exemplo simples de como você pode utilizar o 
cacheamento de conjunto de resultados
 para cachear todas as consultas relacionadas a seu usuário, bem como o uso de 
eventos para se certificar
-de que eles sejam devidamente apurados quando alguns dado for alterado.
+de que eles sejam devidamente limpos quando alguns dadoa forem alterados.
 
 ### Nosso Schema
 
@@ -460,7 +460,7 @@
     {
     }
 
-Mais tarde no artigo você vai precisar adicionar algum código para esta classe 
para fazer a anotação da mesma.
+Mais tarde, no artigo, você vai precisar adicionar algum código a esta classe 
para fazer a anotação da mesma.
 
 ### Configurando o Cache de Resultado
 
@@ -491,7 +491,7 @@
 
 ### Consultas de exemplo
 
-Agora imagine que em sua aplicação você tem um grande número de consultas 
realcioniona ao usuário
+Agora imagine que em sua aplicação você tem um grande número de consultas 
relacionadas ao usuário
 e quer apurá-los sempre que algum dado do usuário for alterado.
 
 Aqui está uma consulta simples que podemos usar para processar uma lista de 
usuários ordenados
@@ -507,21 +507,21 @@
     [php]
     $q->useResultCache(true, 3600, 'users_index');
 
->**NOTA**
+>**NOTE**
 >Observe o terceiro argumento. Esta é a chave que será usada para armazenar a 
 >entrada
 > cacheada para os resultados no controlador de cache. Isso nos permite 
 > identificar facilmente
 >esta consulta e excluí-la do controlador de cache.
 
-Agora, quando executarmos a consulta quirá irá consultar o banco de dados para 
buscar os resultados e armazená-
+Agora, quando executarmos a consulta que irá consultar o banco de dados para 
buscar os resultados e armazená-
 los no controlador de cache na chave chamada `users_index` e todas as 
requisições posteriores
 obterão as informações do controlador de cache em vez de pedir ao banco de 
dados:
 
     [php]
     $users = $q->execute();
 
->**NOTA**
+>**NOTE**
 >Isso não somente economiza o processamento no servidor de banco de dados, ele 
 >também ignora
-> o processo inteiro de hidratação que é como o Doctrine armazena os dados 
hidratado. Isso significa
+> o processo inteiro de hidratação que é como o Doctrine armazena os dados 
hidratados. Isso significa
 > que irá também aliviar um pouco o processamento do seu servidor web.
 
 Agora, se verificar no controlador de cache, você vai ver que existe uma 
entrada chamada
@@ -548,7 +548,7 @@
 Primeiro vamos apenas demonstrar a API crua do controlador de cache antes de 
implementá
 -lo em um evento.
 
->**Dica**
+>**TIP**
 > Para ter acesso à instância do controlador de cache de resultado você pode 
 > recuperá-lo a partir da
 > instância da classe `Doctrine_Manager`.
 >
@@ -581,7 +581,7 @@
 * `deleteBySuffix($suffix)`: Exclui as entradas de cache que combinem com o 
sufixo
    passado;
 
-* `deleteByRegex($regex)`: Exclui as entradas de cache que correspondam à
+* `deleteByRegularExpression($regex)`: Exclui as entradas de cache que 
correspondam à
    expressão regular passada;
 
 * `deleteAll()`: Exclui todas as entradas de cache.
@@ -610,11 +610,11 @@
     }
 
 Agora, se fôssemos atualizar um usuário ou inserir um novo ele iria limpar o 
cache para
-todas as consultas relarionadas ao usuário:
+todas as consultas relacionadas ao usuário:
 
     [php]
     $user = new User();
-    $user->username = 'jorge';
+    $user->username = 'jwage';
     user->password = 'mudeme';
     $user->save();
 
@@ -624,11 +624,11 @@
 Embora esse exemplo seja muito simples, ele demonstra muito bem como você pode
 usar esses recursos para implementar um cacheamento refinado em suas consultas 
Doctrine.
 
-Criando Hydratador Doctrine
+Criando Hidratador Doctrine
 ---------------------------
 
 Uma das principais características do Doctrine é a capacidade de transformar 
um objeto `Doctrine_Query`
-em várias estruturas de conjunto de resultado. Este é o trabalho dos 
hidratadores do
+em várias estruturas de conjunto de resultados. Este é o trabalho dos 
hidratadores do
 Doctrine e até a versão 1.2, o hidratadores eram todos codificados rigidamente 
e não
 eram abertos aos desenvolvedores para serem personalizados. Agora que isto 
mudou, é possível
 escrever um hidratador personalizado e criar qualquer estrutura de dados que 
for desejado
@@ -657,11 +657,11 @@
     # data/fixtures/data.yml
     User:
       user1:
-        username: jorge
+        username: jwage
         password: mudeme
         is_active: 1
       user2:
-        username: jorjao
+        username: jonwage
         password: mudeme
         is_active: 0
 
@@ -669,7 +669,7 @@
 
     $ php symfony doctrine:build --all --and-load
 
-### Escrevendo o Hydratador
+### Escrevendo o Hidratador
 
 Para escrever um hidratador tudo o que precisamos fazer é escrever uma nova 
classe que se estende `Doctrine_Hydrator_Abstract`
 e devemos implementar um método `hydrateResultSet($stmt)`. Ele recebe a 
instância do `PDOStatement`
@@ -751,9 +751,9 @@
 
     Array
     (
-        [jorge] => 1
-        [jorjao] => 0
+        [jwage] => 1
+        [jonwage] => 0
     )
 
 Bem, é isso! Simplesmente lindo não? Espero que isso seja útil a você e como 
resultado
-a comunidade terá alguns novos e impressivos hidratadores contribuídos.
\ No newline at end of file
+a comunidade terá contribuições de alguns novos e expressivos hidratadores.
\ No newline at end of file

-- 
You received this message because you are subscribed to the Google Groups 
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/symfony-svn?hl=en.

Reply via email to