Browse Source

A title contains tags delete DOC-ES

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@19955 44c647ce-9c0f-0410-b52a-842ac1e357ba
benjamin-gonzales 16 years ago
parent
commit
88a5c57434

+ 144 - 320
documentation/manual/es/module_specs/Zend_Acl.xml

@@ -4,202 +4,108 @@
 <sect1 id="zend.acl.introduction">
     <title>Introducción</title>
     <para>
-        <classname>Zend_Acl</classname>
-        provee la implementación de un sistema
-        simple y flexible de Listas de Control de Acceso
-        (
-        <acronym>ACL</acronym>
-        , por sus siglas en inglés) para la
-        administración de privilegios. En general, una aplicación
-        puede utilizar
-        las
-        <acronym>ACL</acronym>
-        para controlar el acceso a ciertos objetos
-        protegidos, que son requeridos por otros objetos.
-    </para>
-    <para>
-        Para los propósitos de esta documentación:
-     </para>
-        <itemizedlist>
-            <listitem>
-                <para>
-                    Un
-                    <emphasis>recurso</emphasis>
-                    es un objeto al cual el
-                    acceso esta controlado.
-                </para>
-            </listitem>
-            <listitem>
-                <para>
-                    Un
-                    <emphasis>rol</emphasis>
-                    es un objeto que puede
-                    solicitar acceso a un recurso.
-                </para>
-            </listitem>
-        </itemizedlist>
-        <para>
-        En términos generales,
-        <emphasis> Los roles solicitan
-            acceso a los recursos </emphasis>
-        . Por ejemplo, si una persona
-        solicita acceso a un automóvil, entonces la persona se
-        convierte en el
-        rol solicitante, y el automóvil en el recurso, puesto que el acceso al
-        automóvil puede no estar disponible a cualquiera.
-    </para>
-
-    <para>
-        A través de la especificación y uso de Listas de Control de Acceso
-        (
-        <acronym>ACL</acronym>
-        ), una aplicación puede controlar cómo los
-        objetos solicitantes (roles) han obtenido acceso a
-        objetos protegidos
-        (recursos).
-    </para>
+        <classname>Zend_Acl</classname> provee la implementación de un sistema
+        simple y flexible de Listas de Control de Acceso (
+            <acronym>ACL</acronym> , por sus siglas en inglés) para la
+        administración de privilegios. En general, una aplicación puede utilizar
+        las <acronym>ACL</acronym> para controlar el acceso a ciertos objetos
+        protegidos, que son requeridos por otros objetos. </para>
+    <para> Para los propósitos de esta documentación: </para>
+    <itemizedlist>
+        <listitem>
+            <para> Un <emphasis>recurso</emphasis> es un objeto al cual el
+                acceso esta controlado. </para>
+        </listitem>
+        <listitem>
+            <para> Un <emphasis>rol</emphasis> es un objeto que puede solicitar
+                acceso a un recurso. </para>
+        </listitem>
+    </itemizedlist>
+    <para> En términos generales, <emphasis> Los roles solicitan acceso a los
+            recursos </emphasis> . Por ejemplo, si una persona solicita acceso a
+        un automóvil, entonces la persona se convierte en el rol solicitante, y
+        el automóvil en el recurso, puesto que el acceso al automóvil puede no
+        estar disponible a cualquiera. </para>
+
+    <para> A través de la especificación y uso de Listas de Control de Acceso (
+            <acronym>ACL</acronym> ), una aplicación puede controlar cómo los
+        objetos solicitantes (roles) han obtenido acceso a objetos protegidos
+        (recursos). </para>
 
     <sect2 id="zend.acl.introduction.resources">
         <title>Acerca de los Recursos</title>
-        <para>
-            En
-            <classname>Zend_Acl</classname>
-            , crear un recurso es muy
-            sencillo.
-            <classname>Zend_Acl</classname>
-            proporciona el
-            <classname>Zend_Acl_Resource_Interface</classname>
-            para
+        <para> En <classname>Zend_Acl</classname> , crear un recurso es muy
+            sencillo. <classname>Zend_Acl</classname> proporciona el
+                <classname>Zend_Acl_Resource_Interface</classname> para
             facilitar a los desarrolladores la creación de recursos. Una clase
-            solo necesita
-            implementar su interfaz, la cual consiste en un método
-            único,
-            <methodname>getResourceId()</methodname>
-            , para que
-            <classname>Zend_Acl</classname>
-            considere el objeto como un
-            recurso. Adicionalmente,
-            <classname>Zend_Acl_Resource</classname>
-            es
-            proporcionado por
-            <classname>Zend_Acl</classname>
-            como un recurso
+            solo necesita implementar su interfaz, la cual consiste en un método
+            único, <methodname>getResourceId()</methodname> , para que
+                <classname>Zend_Acl</classname> considere el objeto como un
+            recurso. Adicionalmente, <classname>Zend_Acl_Resource</classname> es
+            proporcionado por <classname>Zend_Acl</classname> como un recurso
             básico de aplicación para que los desarrolladores puedan extenderla
-            hasta
-            donde lo deseen.
-        </para>
+            hasta donde lo deseen. </para>
         <para>
-            <classname>Zend_Acl</classname>
-            provee un estructura de árbol a la
-            cual pueden ser agregados múltiples recursos (o "Áreas
-            con Controles
+            <classname>Zend_Acl</classname> provee un estructura de árbol a la
+            cual pueden ser agregados múltiples recursos (o "Áreas con Controles
             de Acceso").Ya que los recursos son almacenados en esta estructura
-            de árbol,
-            estos pueden ser organizados desde lo general (hacia la
-            raíz del árbol) a lo específico
-            (hacia las ramas del árbol).
-            Consultas sobre un recurso específico buscarán
-            automáticamente, en
+            de árbol, estos pueden ser organizados desde lo general (hacia la
+            raíz del árbol) a lo específico (hacia las ramas del árbol).
+            Consultas sobre un recurso específico buscarán automáticamente, en
             la jerarquía del recurso, reglas asignadas a recursos anteriores a
             los que el recurso actual haga referencia, permitiendo la herencia
-            simple de reglas. Por
-            ejemplo, si una regla por defecto se aplica a
-            cada edificio en una ciudad, uno
-            simplemente podría asignar la regla
-            a la ciudad, en lugar de asignar la misma regla a
-            cada edificio.
+            simple de reglas. Por ejemplo, si una regla por defecto se aplica a
+            cada edificio en una ciudad, uno simplemente podría asignar la regla
+            a la ciudad, en lugar de asignar la misma regla a cada edificio.
             Algunos edificios pueden necesitar excepciones a la regla, sin
-            embargo, y
-            esto es fácil de hacer en
-            <classname>Zend_Acl</classname>
+            embargo, y esto es fácil de hacer en <classname>Zend_Acl</classname>
             asignando esta excepción a cada edificio que necesite una excepción
-            a la regla. Un
-            recurso sólo puede heredar de un recurso padre,
-            aunque este recurso padre puede tener a
-            la vez su propio recurso
-            padre, y así; sucesivamente.
-        </para>
+            a la regla. Un recurso sólo puede heredar de un recurso padre,
+            aunque este recurso padre puede tener a la vez su propio recurso
+            padre, y así; sucesivamente. </para>
         <para>
-            <classname>Zend_Acl</classname>
-            también soporta privilegios sobre
-            recursos (ejemplo. "crear","leer","actualizar",
-            "borrar"), y el
+            <classname>Zend_Acl</classname> también soporta privilegios sobre
+            recursos (ejemplo. "crear","leer","actualizar", "borrar"), y el
             desarrollador puede asignar reglas que afecten o a todos los
-            privilegios o
-            a privilegios específicos sobre un recurso.
-        </para>
+            privilegios o a privilegios específicos sobre un recurso. </para>
     </sect2>
 
     <sect2 id="zend.acl.introduction.roles">
         <title>Acerca de las Reglas</title>
-        <para>
-            Al igual que los recursos, la creación de un rol también es muy
-            simple.
-            <classname>Zend_Acl</classname>
-            proporciona
-            <classname>Zend_Acl_Role_Interface</classname>
-            para facilitar a
+        <para> Al igual que los recursos, la creación de un rol también es muy
+            simple. <classname>Zend_Acl</classname> proporciona
+                <classname>Zend_Acl_Role_Interface</classname> para facilitar a
             los desarrolladores la creación de roles. Una clase solo necesita la
             implementación de su interfaz, la cual consiste en un método único,
-            <methodname>getRoleId()</methodname>
-            , para que
-            <classname>Zend_Acl</classname>
-            considere que el objeto es un
-            Rol. Adicionalmente,
-            <classname>Zend_Acl_Role</classname>
-            está
-            incluido con
-            <classname>Zend_Acl</classname>
-            como una implementación
+                <methodname>getRoleId()</methodname> , para que
+                <classname>Zend_Acl</classname> considere que el objeto es un
+            Rol. Adicionalmente, <classname>Zend_Acl_Role</classname> está
+            incluido con <classname>Zend_Acl</classname> como una implementación
             principal del rol para que los desarrolladores la extiendan hasta
-            donde lo deseen.
-        </para>
-        <para>
-            En
-            <classname>Zend_Acl</classname>
-            , un Rol puede heredar de otro
-            o más roles. Esto es para soportar herencia de reglas
-            entre roles.
+            donde lo deseen. </para>
+        <para> En <classname>Zend_Acl</classname> , un Rol puede heredar de otro
+            o más roles. Esto es para soportar herencia de reglas entre roles.
             Por ejemplo, un Rol de usuario, como "sally", puede estar bajo uno o
-            más
-            roles padre, como "editor" y "administrador". El desarrollador
-            puede asignar reglas a
-            "editor" y "administrador" por separado, y
-            "sally" puede heredar tales reglas de ambos,
-            sin tener que asignar
-            reglas directamente a "sally".
-        </para>
-        <para>
-            Dado que la habilidad de herencia desde múltiples roles es muy
-            útil, múltiples herencias
-            también introduce cierto grado de
-            complejidad. El siguiente ejemplo ilustra la condición
-            de ambiguedad
-            y como
-            <classname>Zend_Acl</classname>
-            soluciona esto.
-        </para>
+            más roles padre, como "editor" y "administrador". El desarrollador
+            puede asignar reglas a "editor" y "administrador" por separado, y
+            "sally" puede heredar tales reglas de ambos, sin tener que asignar
+            reglas directamente a "sally". </para>
+        <para> Dado que la habilidad de herencia desde múltiples roles es muy
+            útil, múltiples herencias también introduce cierto grado de
+            complejidad. El siguiente ejemplo ilustra la condición de ambiguedad
+            y como <classname>Zend_Acl</classname> soluciona esto. </para>
         <example id="zend.acl.introduction.roles.example.multiple_inheritance">
             <title>Herencia Múlltiple entre Roles</title>
-            <para>
-                El siguiente código define tres roles principales -
-                "invitado", "miembro", y "admin"
-                - de los cuales otros roles
-                pueden heredar. Entonces, un rol identificado como
-                "unUsuario"
+            <para> El siguiente código define tres roles principales -
+                "invitado", "miembro", y "admin" - de los cuales otros roles
+                pueden heredar. Entonces, un rol identificado como "unUsuario"
                 es colocado y hereda de los otros tres roles. El orden en el
-                cual estos
-                roles aparecen en el array
-                <varname>$parents</varname>
-                es importante. Cuando es
-                necesario,
-                <classname>Zend_Acl</classname>
-                busca por reglas de
+                cual estos roles aparecen en el array
+                    <varname>$parents</varname> es importante. Cuando es
+                necesario, <classname>Zend_Acl</classname> busca por reglas de
                 acceso definidas no solo para el rol solicitado (aquí,
                 "unUsuario"), sino también sobre los roles heredados (aquí,
-                "invitado", "miembro", y
-                "admin"):
-            </para>
+                "invitado", "miembro", y "admin"): </para>
             <programlisting language="php"><![CDATA[
 require_once 'Zend/Acl.php';
 $acl = new Zend_Acl();
@@ -220,86 +126,47 @@ $acl->allow('miembro', 'unRecurso');
 
 echo $acl->isAllowed('unUsuario', 'unRecurso') ? 'permitido' : 'denegado';
 ]]></programlisting>
-            <para>
-                Ya que no hay reglas específicamente definidas para el rol
-                "unUsuario" y "unRecurso",
-                <classname>Zend_Acl</classname>
-                debe
+            <para> Ya que no hay reglas específicamente definidas para el rol
+                "unUsuario" y "unRecurso", <classname>Zend_Acl</classname> debe
                 buscar por reglas que puedan estar definidas para roles
-                "unUsuario" hereda.
-                Primero, el rol "admin" es visitado, y no
-                hay regla de acceso definida para éste.
-                Luego, el rol "miembro"
-                es visitado, y
-                <classname>Zend_Acl</classname>
-                encuentra que
+                "unUsuario" hereda. Primero, el rol "admin" es visitado, y no
+                hay regla de acceso definida para éste. Luego, el rol "miembro"
+                es visitado, y <classname>Zend_Acl</classname> encuentra que
                 aquí hay una regla especificando que "miembro" tiene permiso
-                para
-                acceder a "unRecurso".
-            </para>
-            <para>
-                Así,
-                <classname>Zend_Acl</classname>
-                va a seguir examinando
+                para acceder a "unRecurso". </para>
+            <para> Así, <classname>Zend_Acl</classname> va a seguir examinando
                 las reglas definidas para otros roles padre, sin embargo,
                 encontraría que "invitado" tiene el acceso denegado a
-                "unRecurso". Este hecho
-                introduce una ambigüedad debido a que
-                ahora "unUsuario" está tanto denegado como
-                permitido para
+                "unRecurso". Este hecho introduce una ambigüedad debido a que
+                ahora "unUsuario" está tanto denegado como permitido para
                 acceder a "unRecurso", por la razón de tener un conflicto de
-                reglas
-                heredadas de diferentes roles padre.
-            </para>
+                reglas heredadas de diferentes roles padre. </para>
             <para>
-                <classname>Zend_Acl</classname>
-                resuelve esta ambigüedad
-                completando la consulta cuando encuentra la primera regla
-                que es
+                <classname>Zend_Acl</classname> resuelve esta ambigüedad
+                completando la consulta cuando encuentra la primera regla que es
                 directamente aplicable a la consulta. En este caso, dado que el
-                rol "miembro"
-                es examinado antes que el rol "invitado", el
-                código de ejemplo mostraría "permitido".
-            </para>
+                rol "miembro" es examinado antes que el rol "invitado", el
+                código de ejemplo mostraría "permitido". </para>
         </example>
         <note>
             <para>Cuando se especifican múltiples padres para un Rol, se debe
-                tener en cuenta que el
-                último padre listado es el primero en ser
-                buscado por reglas aplicables para una
-                solicitud de
+                tener en cuenta que el último padre listado es el primero en ser
+                buscado por reglas aplicables para una solicitud de
                 autorización.</para>
         </note>
     </sect2>
 
     <sect2 id="zend.acl.introduction.creating">
-        <title>
-            Creando las Listas de Control de Acceso
-            (
-            <acronym>ACL</acronym>
-            )
-        </title>
+        <title> Creando las Listas de Control de Acceso (ACL) </title>
 
-        <para>
-            Una
-            <acronym>ACL</acronym>
-            puede representar cualquier grupo de
-            objetos físicos o virtuales que desee. Para
-            propósitos de
-            demostración, sin embargo, crearemos un
-            <acronym>ACL</acronym>
-            básico para un Sistema de Administración de Contenido
-            (
-            <acronym>CMS</acronym>
-            ) que mantendrá varias escalas de grupos
-            sobre una amplia variedad de áreas. Para crear
-            un nuevo objeto
-            <acronym>ACL</acronym>
-            , iniciamos la
-            <acronym>ACL</acronym>
-            sin
-            parámetros:
-        </para>
+        <para> Una <acronym>ACL</acronym> puede representar cualquier grupo de
+            objetos físicos o virtuales que desee. Para propósitos de
+            demostración, sin embargo, crearemos un <acronym>ACL</acronym>
+            básico para un Sistema de Administración de Contenido (
+                <acronym>CMS</acronym> ) que mantendrá varias escalas de grupos
+            sobre una amplia variedad de áreas. Para crear un nuevo objeto
+                <acronym>ACL</acronym> , iniciamos la <acronym>ACL</acronym> sin
+            parámetros: </para>
 
         <programlisting language="php"><![CDATA[
 require_once 'Zend/Acl.php';
@@ -308,48 +175,34 @@ $acl = new Zend_Acl();
 ]]></programlisting>
 
         <note>
-            <para>
-                Hasta que un desarrollador especifique una regla"permitido",
-                <classname>Zend_Acl</classname>
-                deniega el acceso a cada
-                privilegio sobre cada recurso para cada rol.
-            </para>
+            <para> Hasta que un desarrollador especifique una regla"permitido",
+                    <classname>Zend_Acl</classname> deniega el acceso a cada
+                privilegio sobre cada recurso para cada rol. </para>
         </note>
     </sect2>
 
     <sect2 id="zend.acl.introduction.role_registry">
         <title>Registrando Roles</title>
 
-        <para>
-            El Sistema de Administración de Contenido
-            (
-            <acronym>CMS</acronym>
-            ) casi siempre necesita una jerarquía de
-            permisos para determinar la capacidad de
-            identificación de sus
+        <para> El Sistema de Administración de Contenido (
+                <acronym>CMS</acronym> ) casi siempre necesita una jerarquía de
+            permisos para determinar la capacidad de identificación de sus
             usuarios. Puede haber un grupo de 'Invitados' para permitir acceso
             limitado para demostraciones, un grupo de 'Personal' para la mayoría
-            de usuarios del <acronym>CMS</acronym>
-            quienes realizan la mayor parte de operaciones
-            del día a día, un grupo 'Editores' para
-            las responsabilidades de
-            publicación, revisión, archivo y eliminación de contenido, y
-            finalmente un grupo 'Administradores' cuyas tareas pueden incluir
-            todas las de los otros
-            grupos y también el mantenimiento de la
-            información delicada, manejo de usuarios,
-            configuración de los datos
-            básicos y su respaldo/exportación. Este grupo de permisos
-            pueden ser
-            representados en un registro de roles, permitiendo a cada grupo
-            heredar los
-            privilegios de los grupos 'padre', al igual que
-            proporcionando distintos privilegios solo
-            para su grupo individual.
-            Los permisos pueden ser expresados como:
-        </para>
-
-        <table id="zend.acl.introduction.role_registry.table.example_cms_access_controls">
+            de usuarios del <acronym>CMS</acronym> quienes realizan la mayor
+            parte de operaciones del día a día, un grupo 'Editores' para las
+            responsabilidades de publicación, revisión, archivo y eliminación de
+            contenido, y finalmente un grupo 'Administradores' cuyas tareas
+            pueden incluir todas las de los otros grupos y también el
+            mantenimiento de la información delicada, manejo de usuarios,
+            configuración de los datos básicos y su respaldo/exportación. Este
+            grupo de permisos pueden ser representados en un registro de roles,
+            permitiendo a cada grupo heredar los privilegios de los grupos
+            'padre', al igual que proporcionando distintos privilegios solo para
+            su grupo individual. Los permisos pueden ser expresados como: </para>
+
+        <table
+            id="zend.acl.introduction.role_registry.table.example_cms_access_controls">
             <title>Controles de Acceso para un CMS de ejemplo</title>
             <tgroup cols="3">
                 <thead>
@@ -384,17 +237,11 @@ $acl = new Zend_Acl();
             </tgroup>
         </table>
 
-        <para>
-            Para este ejemplo, se usa
-            <classname>Zend_Acl_Role</classname>
-            ,
+        <para> Para este ejemplo, se usa <classname>Zend_Acl_Role</classname> ,
             pero cualquier objeto que implemente
-            <classname>Zend_Acl_Role_Interface</classname>
-            es admisible.
+                <classname>Zend_Acl_Role_Interface</classname> es admisible.
             Estos grupos pueden ser agregados al registro de roles de la
-            siguiente
-            manera:
-        </para>
+            siguiente manera: </para>
 
         <programlisting language="php"><![CDATA[
 require_once 'Zend/Acl.php';
@@ -427,36 +274,25 @@ $acl->addRole(new Zend_Acl_Role('administrador'));
     <sect2 id="zend.acl.introduction.defining">
         <title>Definiendo Controles de Acceso</title>
 
-        <para>
-            Ahora que la
-            <acronym>ACL</acronym>
-            contiene los roles
+        <para> Ahora que la <acronym>ACL</acronym> contiene los roles
             relevantes, se pueden establecer reglas que definan cómo los roles
             pueden acceder a los recursos. Tenga en cuenta que no definiremos
-            ningún recurso en
-            particular para este ejemplo, el cual está
-            simplificado para ilustrar que las reglas se
-            aplican a todos los
-            recursos.
-            <classname>Zend_Acl</classname>
-            proporciona una forma
+            ningún recurso en particular para este ejemplo, el cual está
+            simplificado para ilustrar que las reglas se aplican a todos los
+            recursos. <classname>Zend_Acl</classname> proporciona una forma
             práctica por la cual las reglas solo necesitan ser asignadas de lo
             general a lo especifico, minimizando el número de reglas necesarias,
-            porque los recursos
-            y roles heredan reglas que están definidas en
-            sus padres.
-        </para>
-
-                <note>
-            <para>In general, <classname>Zend_Acl</classname> obeys a given rule if and only if a more
-                specific rule does not apply.
-            </para>
+            porque los recursos y roles heredan reglas que están definidas en
+            sus padres. </para>
+
+        <note>
+            <para>In general, <classname>Zend_Acl</classname> obeys a given rule
+                if and only if a more specific rule does not apply. </para>
         </note>
 
-        <para>Consecuentemente, podemos definir un grupo razonablemente
-            complejo de reglas con un
-            mínimo de código. Para aplicar estos
-            permisos básicos como están definidos arriba:</para>
+        <para>Consecuentemente, podemos definir un grupo razonablemente complejo
+            de reglas con un mínimo de código. Para aplicar estos permisos
+            básicos como están definidos arriba:</para>
 
         <programlisting language="php"><![CDATA[
 require_once 'Zend/Acl.php';
@@ -490,32 +326,20 @@ $acl->allow('editor', null, array('publicar', 'archivar', 'eliminar'));
 $acl->allow('administrador');
 ]]></programlisting>
 
-        <para>
-            El valor
-            <constant>NULL</constant>
-            en las llamadas de
-            <methodname>allow()</methodname>
-            es usado para indicar que las
-            reglas de permiso se aplican a todos los recursos.
-        </para>
+        <para> El valor <constant>NULL</constant> en las llamadas de
+                <methodname>allow()</methodname> es usado para indicar que las
+            reglas de permiso se aplican a todos los recursos. </para>
 
     </sect2>
 
     <sect2 id="zend.acl.introduction.querying">
         <title>Consultando la ACL</title>
 
-        <para>
-            Ahora tenemos una
-            <acronym>ACL</acronym>
-            flexible que puede ser
-            usada para determinar qué solicitantes tienen permisos para
-            realizar
+        <para> Ahora tenemos una <acronym>ACL</acronym> flexible que puede ser
+            usada para determinar qué solicitantes tienen permisos para realizar
             funciones a través de la aplicación web. Ejecutar consultas es la
-            forma más
-            simple de usar el método
-            <methodname>isAllowed()</methodname>
-            :
-        </para>
+            forma más simple de usar el método
+                <methodname>isAllowed()</methodname> : </para>
 
         <programlisting language="php"><![CDATA[
 echo $acl->isAllowed('invitado', null, 'ver') ?

File diff suppressed because it is too large
+ 228 - 528
documentation/manual/es/module_specs/Zend_Amf-Server.xml


+ 177 - 358
documentation/manual/es/module_specs/Zend_Controller-Router.xml

@@ -6,56 +6,35 @@
     <sect2 id="zend.controller.router.introduction">
         <title>Introducción</title>
         <para>
-            <classname>Zend_Controller_Router_Rewrite</classname>
-            Es el router
+            <classname>Zend_Controller_Router_Rewrite</classname> Es el router
             standard del Framework. Routing es el proceso de tomar la parte
-            final de una
-            <acronym>URI</acronym>
-            (la parte de la
-            <acronym>URI</acronym>
-            que viene después de la
-            <acronym>URL</acronym>
-            base) y la descomposición en parámetros para determinar qué módulo,
-            qué controlador y
-            acción de ese controlador debe recibir la solicitud.
-            Estos valores del módulo,
-            controlador, acción y otros parámetros
-            están enpaquetados en un objeto
-            <classname>Zend_Controller_Request_Http</classname>
-            el cual es
-            procesado luego por
-            <classname>Zend_Controller_Dispatcher_Standard</classname>
-            .
-            El routing ocurre sólo una vez: cuando se recibió inicialmente la
-            solicitud y antes del
-            dispatch del primer controlador.
-        </para>
+            final de una <acronym>URI</acronym> (la parte de la
+                <acronym>URI</acronym> que viene después de la
+                <acronym>URL</acronym> base) y la descomposición en parámetros
+            para determinar qué módulo, qué controlador y acción de ese
+            controlador debe recibir la solicitud. Estos valores del módulo,
+            controlador, acción y otros parámetros están enpaquetados en un
+            objeto <classname>Zend_Controller_Request_Http</classname> el cual
+            es procesado luego por
+                <classname>Zend_Controller_Dispatcher_Standard</classname> . El
+            routing ocurre sólo una vez: cuando se recibió inicialmente la
+            solicitud y antes del dispatch del primer controlador. </para>
 
         <para>
-            <classname>Zend_Controller_Router_Rewrite</classname>
-            está diseñado
+            <classname>Zend_Controller_Router_Rewrite</classname> está diseñado
             para permitir que una funcionalidad tipo mod_rewrite se pueda usar
-            en
-            estructuras
-            <acronym>PHP</acronym>
-            puras. Se basa muy vagamente en el routing de
-            Ruby on Rails (RoR) y no requiere ningún
-            conocimiento previo de
-            reescritura de la
-            <acronym>URL</acronym>
-            del webserver. Está diseñado para trabajar
-            con solo una regla mod_rewrite de Apache (one
-            of):
-        </para>
+            en estructuras <acronym>PHP</acronym> puras. Se basa muy vagamente
+            en el routing de Ruby on Rails (RoR) y no requiere ningún
+            conocimiento previo de reescritura de la <acronym>URL</acronym> del
+            webserver. Está diseñado para trabajar con solo una regla
+            mod_rewrite de Apache (one of): </para>
 
         <programlisting language="php"><![CDATA[
 RewriteEngine on
 RewriteRule !\.(js|ico|gif|jpg|png|css|html)$ index.php
 ]]></programlisting>
 
-        <para>
-            o (preferido):
-       </para>
+        <para> o (preferido): </para>
 
         <programlisting language="php"><![CDATA[
 RewriteEngine On
@@ -66,14 +45,11 @@ RewriteRule ^.*$ - [NC,L]
 RewriteRule ^.*$ index.php [NC,L]
 ]]></programlisting>
 
-        <para>
-            El router rewrite también puede utilizarse con el
-            <acronym>IIS</acronym>
-            webserver (versions &lt;= 7.0) si
-            <ulink url="http://www.isapirewrite.com">Isapi_Rewrite</ulink>
-            se ha instalado como una extensión Isapi con la siguiente
-            regla de reescribir:
-        </para>
+        <para> El router rewrite también puede utilizarse con el
+                <acronym>IIS</acronym> webserver (versions &lt;= 7.0) si
+                <ulink url="http://www.isapirewrite.com">Isapi_Rewrite</ulink>
+            se ha instalado como una extensión Isapi con la siguiente regla de
+            reescribir: </para>
 
         <programlisting language="php"><![CDATA[
 RewriteRule ^[\w/\%]*(?:\.(?!(?:js|ico|gif|jpg|png|css|html)$)[\w\%]*$)? /index.php [I]
@@ -81,25 +57,17 @@ RewriteRule ^[\w/\%]*(?:\.(?!(?:js|ico|gif|jpg|png|css|html)$)[\w\%]*$)? /index.
 
         <note>
             <title>IIS Isapi_Rewrite</title>
-            <para>
-                Cuando se usa
-                <acronym>IIS</acronym>
-                ,
-                <varname>$_SERVER['REQUEST_URI']</varname>
-                puede
-                no existir, o establecerlo como un string vacío. En este caso,
-                <classname>Zend_Controller_Request_Http</classname>
+            <para> Cuando se usa <acronym>IIS</acronym> ,
+                    <varname>$_SERVER['REQUEST_URI']</varname> puede no existir,
+                o establecerlo como un string vacío. En este caso,
+                    <classname>Zend_Controller_Request_Http</classname>
                 intentará usar el valor de
-                <varname>$_SERVER['HTTP_X_REWRITE_URL']</varname>
-                establecido por la extensión Isapi_Rewrite.
-            </para>
+                    <varname>$_SERVER['HTTP_X_REWRITE_URL']</varname>
+                establecido por la extensión Isapi_Rewrite. </para>
         </note>
 
-        <para>
-            IIS 7.0 introduce un módulo nativo de reescribir la URL, y puede ser
-            configurado como
-            sigue:
-       </para>
+        <para> IIS 7.0 introduce un módulo nativo de reescribir la URL, y puede
+            ser configurado como sigue: </para>
 
         <programlisting language="xml"><![CDATA[
 <?xml version="1.0" encoding="UTF-8"?>
@@ -144,14 +112,10 @@ url.rewrite-once = (
     <sect2 id="zend.controller.router.usage">
         <title>Usando un Router</title>
 
-        <para>
-            Para utilizar adecuadamente el router de reescritura debe
-            instanciarlo, agregar algunas
-            rutas definidas por el usuario y
-            luego inyectarlo en el controlador. El siguiente código
-            ilustra el
-            procedimiento:
-       </para>
+        <para> Para utilizar adecuadamente el router de reescritura debe
+            instanciarlo, agregar algunas rutas definidas por el usuario y luego
+            inyectarlo en el controlador. El siguiente código ilustra el
+            procedimiento: </para>
 
         <programlisting language="php"><![CDATA[
 // Crear un router
@@ -169,183 +133,130 @@ $router->addRoute(
     <sect2 id="zend.controller.router.basic">
         <title>Operación Básica del Rewrite Router</title>
 
-        <para>
-            El corazón del RewriteRouter es la definición de la rutas definidas
-            por el usuario. Las
-            rutas se agregan llamando al método addRoute
-            de RewriteRouter y pasándole una nueva
-            instancia de una clase que
-            implementó a
-            <classname>Zend_Controller_Router_Route_Interface</classname>
-            . Eg.:
-        </para>
+        <para> El corazón del RewriteRouter es la definición de la rutas
+            definidas por el usuario. Las rutas se agregan llamando al método
+            addRoute de RewriteRouter y pasándole una nueva instancia de una
+            clase que implementó a
+                <classname>Zend_Controller_Router_Route_Interface</classname> .
+            Eg.: </para>
 
         <programlisting language="php"><![CDATA[
 $router->addRoute('user',
                   new Zend_Controller_Router_Route('user/:username'));
 ]]></programlisting>
 
-        <para>
-            El Rewrite Router viene con seis tipos básicos de rutas (uno de los
-            cuales es
-            especial):
-       </para>
+        <para> El Rewrite Router viene con seis tipos básicos de rutas (uno de
+            los cuales es especial): </para>
 
         <itemizedlist mark="opencircle">
             <listitem>
                 <para>
-                    <link linkend="zend.controller.router.routes.standard">Zend_Controller_Router_Route</link>
+                    <link linkend="zend.controller.router.routes.standard"
+                        >Zend_Controller_Router_Route</link>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <link linkend="zend.controller.router.routes.static">Zend_Controller_Router_Route_Static</link>
+                    <link linkend="zend.controller.router.routes.static"
+                        >Zend_Controller_Router_Route_Static</link>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <link linkend="zend.controller.router.routes.regex">Zend_Controller_Router_Route_Regex</link>
+                    <link linkend="zend.controller.router.routes.regex"
+                        >Zend_Controller_Router_Route_Regex</link>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <link linkend="zend.controller.router.routes.hostname">Zend_Controller_Router_Route_Hostname</link>
+                    <link linkend="zend.controller.router.routes.hostname"
+                        >Zend_Controller_Router_Route_Hostname</link>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <link linkend="zend.controller.router.routes.chain">Zend_Controller_Router_Route_Chain</link>
+                    <link linkend="zend.controller.router.routes.chain"
+                        >Zend_Controller_Router_Route_Chain</link>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <link linkend="zend.controller.router.default-routes">Zend_Controller_Router_Rewrite</link>
-                    *
-                </para>
+                    <link linkend="zend.controller.router.default-routes"
+                        >Zend_Controller_Router_Rewrite</link> * </para>
             </listitem>
         </itemizedlist>
 
-        <para>
-            Las rutas pueden ser utilizadas numerosas veces para crear una cadena
-            o un esquema de
-            aplicación de ruteo definido por el usuario.
-            Puede usar cualquier número de rutas en
-            cualquier configuración,
-            con la excepción de la ruta del Módulo, la cual debe ser
-            utilizada
-            una vez y probablemente como la ruta más genérica (es decir,
-            por defecto). Cada
-            ruta se describe en mayor detalle más adelante.
-       </para>
+        <para> Las rutas pueden ser utilizadas numerosas veces para crear una
+            cadena o un esquema de aplicación de ruteo definido por el usuario.
+            Puede usar cualquier número de rutas en cualquier configuración, con
+            la excepción de la ruta del Módulo, la cual debe ser utilizada una
+            vez y probablemente como la ruta más genérica (es decir, por
+            defecto). Cada ruta se describe en mayor detalle más adelante. </para>
 
-        <para>
-            El primer parámetro a addRoute es el nombre de la ruta.
-            Se utiliza como un manejador para
-            sacar las rutas del router
-            (por ejemplo, con fines de generación de
-            <acronym>URL</acronym>
-            ).
-            El segundo parámetro es la ruta misma.
-        </para>
+        <para> El primer parámetro a addRoute es el nombre de la ruta. Se
+            utiliza como un manejador para sacar las rutas del router (por
+            ejemplo, con fines de generación de <acronym>URL</acronym> ). El
+            segundo parámetro es la ruta misma. </para>
 
         <note>
-            <para>
-                El uso más común del nombre de ruta es por medio del
-                ayudante de
-                <acronym>URL</acronym>
-                <classname>Zend_View</classname>
-                :
-            </para>
+            <para> El uso más común del nombre de ruta es por medio del ayudante
+                de <acronym>URL</acronym>
+                <classname>Zend_View</classname> : </para>
 
             <programlisting language="php"><![CDATA[
 <a href=
 "<?php echo $this->url(array('username' => 'martel'), 'user') ?>">Martel</a>
 ]]></programlisting>
 
-            <para>
-                Que resultaría en la href:
-                <filename>user/martel</filename>
-                .
+            <para> Que resultaría en la href: <filename>user/martel</filename> .
             </para>
         </note>
 
-        <para>
-            El routing es un simple proceso de iteración a través de todas las
-            rutas provistas y la
-            equiparación de sus definiciones con la petición
-            actual de
-            <acronym>URI</acronym>
-            . Cuando se encuentra una concordancia, se devuelven
-            valores de variables desde la
-            instancia Route y se inyecta en el
-            objeto
-            <classname>Zend_Controller_Request</classname>
-            para su posterior utilización en el dispatcher así también como en
-            los controladores
-            creados por el usuario. En caso de no encontrar
-            ninguna concordancia, se comprobará la
-            siguiente ruta en la cadena.
-        </para>
-
-        <para>
-            Si necesita determinar en qué ruta se encontró una concordancia,
-            puede usar el método
-            <methodname>getCurrentRouteName()</methodname>
-            , que devolverá
-            el identificador usado cuando registró la ruta con el router.
-            Si quiere el
-            objeto de la ruta actual, puede usar
-            <methodname>getCurrentRoute()</methodname>
-            .
-        </para>
+        <para> El routing es un simple proceso de iteración a través de todas
+            las rutas provistas y la equiparación de sus definiciones con la
+            petición actual de <acronym>URI</acronym> . Cuando se encuentra una
+            concordancia, se devuelven valores de variables desde la instancia
+            Route y se inyecta en el objeto
+                <classname>Zend_Controller_Request</classname> para su posterior
+            utilización en el dispatcher así también como en los controladores
+            creados por el usuario. En caso de no encontrar ninguna
+            concordancia, se comprobará la siguiente ruta en la cadena. </para>
+
+        <para> Si necesita determinar en qué ruta se encontró una concordancia,
+            puede usar el método <methodname>getCurrentRouteName()</methodname>
+            , que devolverá el identificador usado cuando registró la ruta con
+            el router. Si quiere el objeto de la ruta actual, puede usar
+                <methodname>getCurrentRoute()</methodname> . </para>
 
         <note>
             <title>Matching Inverso</title>
-            <para>
-                Las rutas están equiparadas en orden inverso para asegurarse
-                que las rutas más
-                genéricas se definan primero.
-           </para>
+            <para> Las rutas están equiparadas en orden inverso para asegurarse
+                que las rutas más genéricas se definan primero. </para>
         </note>
 
         <note>
             <title>Valores Retornados</title>
-            <para>
-                Los valores retornados del routing provienen de parámetros
-                <acronym>URL</acronym>
-                o de rutas definidas por defecto por el usuario.
-                Estas variables son accesibles
-                posteriormente a través de los métodos
-                <methodname>Zend_Controller_Request::getParam()</methodname>
-                o
-                <methodname>Zend_Controller_Action::_getParam()</methodname>
-                .
+            <para> Los valores retornados del routing provienen de parámetros
+                    <acronym>URL</acronym> o de rutas definidas por defecto por
+                el usuario. Estas variables son accesibles posteriormente a
+                través de los métodos
+                    <methodname>Zend_Controller_Request::getParam()</methodname>
+                o <methodname>Zend_Controller_Action::_getParam()</methodname> .
             </para>
         </note>
 
-        <para>
-            Hay tres variables que pueden utilizarse en las rutas - 'module',
-            'controller' y
-            'action'. Estas variables especiales son utilizados por
-            <classname>Zend_Controller_Dispatcher</classname>
-            para encontrar un
-            controlador y una acción para hacer el dispatch.
-        </para>
+        <para> Hay tres variables que pueden utilizarse en las rutas - 'module',
+            'controller' y 'action'. Estas variables especiales son utilizados
+            por <classname>Zend_Controller_Dispatcher</classname> para encontrar
+            un controlador y una acción para hacer el dispatch. </para>
 
         <note>
             <title>Variables Especiales</title>
-            <para>
-                Los nombres de estas variables especiales pueden ser diferentes
-                si elige alterar los
-                valores por defecto en
-                <classname>Zend_Controller_Request_Http</classname>
-                mediante los
-                métodos
-                <methodname>setControllerKey()</methodname>
-                y
-                <methodname>setActionKey()</methodname>
-                .
-            </para>
+            <para> Los nombres de estas variables especiales pueden ser
+                diferentes si elige alterar los valores por defecto en
+                    <classname>Zend_Controller_Request_Http</classname> mediante
+                los métodos <methodname>setControllerKey()</methodname> y
+                    <methodname>setActionKey()</methodname> . </para>
         </note>
 
     </sect2>
@@ -354,31 +265,18 @@ $router->addRoute('user',
         <title>Routes por Defecto</title>
 
         <para>
-            <classname>Zend_Controller_Router_Rewrite</classname>
-            viene
+            <classname>Zend_Controller_Router_Rewrite</classname> viene
             preconfigurado con una ruta por defecto, que se comparará con
-            <acronym>URI</acronym>
-            s
-            en la forma de
-            <filename>controller/action</filename>
-            .
-            Además, se puede especificar un nombre de módulo como primer
-            elemento del path,
-            permitiendo
-            <acronym>URI</acronym>
-            s de la forma
-            <filename>module/controller/action</filename>
-            . Por último, también coincidrá
-            con cualquier parámetro adicional agregado a la
-            <acronym>URI</acronym>
-            por defecto -
-            <filename>controller/action/var1/value1/var2/value2</filename>
-            .
-        </para>
+                <acronym>URI</acronym> s en la forma de
+                <filename>controller/action</filename> . Además, se puede
+            especificar un nombre de módulo como primer elemento del path,
+            permitiendo <acronym>URI</acronym> s de la forma
+                <filename>module/controller/action</filename> . Por último,
+            también coincidrá con cualquier parámetro adicional agregado a la
+                <acronym>URI</acronym> por defecto -
+                <filename>controller/action/var1/value1/var2/value2</filename> . </para>
 
-        <para>
-            Algunos ejemplos de cómo están equiparadas las rutas:
-       </para>
+        <para> Algunos ejemplos de cómo están equiparadas las rutas: </para>
 
         <programlisting language="php"><![CDATA[
 // Asumiendo lo siguiente:
@@ -418,13 +316,10 @@ http://example/blog/archive/list/sort/alpha/date/desc
     date       == desc
 ]]></programlisting>
 
-        <para>
-            La ruta por defecto es simplemente un objeto
-            <classname>Zend_Controller_Router_Route_Module</classname>
+        <para> La ruta por defecto es simplemente un objeto
+                <classname>Zend_Controller_Router_Route_Module</classname>
             almacenado bajo el nombre de (index) por 'default' en RewriteRouter.
-            Está generado más o
-            menos así:
-        </para>
+            Está generado más o menos así: </para>
 
         <programlisting language="php"><![CDATA[
 $compat = new Zend_Controller_Router_Route_Module(array(),
@@ -433,16 +328,10 @@ $compat = new Zend_Controller_Router_Route_Module(array(),
 $this->addRoute('default', $compat);
 ]]></programlisting>
 
-        <para>
-            Si no quiere esta ruta en particular en su esquema por defecto de
-            routing, podrá anularla
-            creando su propia ruta por 'defecto'
-            (es decir, almacenar bajo el nombre de 'default') o
-            eliminarla por
-            completo usando
-            <methodname>removeDefaultRoutes()</methodname>
-            :
-        </para>
+        <para> Si no quiere esta ruta en particular en su esquema por defecto de
+            routing, podrá anularla creando su propia ruta por 'defecto' (es
+            decir, almacenar bajo el nombre de 'default') o eliminarla por
+            completo usando <methodname>removeDefaultRoutes()</methodname> : </para>
 
         <programlisting language="php"><![CDATA[
 // Eliminar cualquier ruta por defecto
@@ -454,35 +343,20 @@ $router->removeDefaultRoutes();
     <sect2 id="zend.controller.router.rewritebase">
         <title>URL Base y Subdirectorios</title>
 
-        <para>
-            El router rewrite puede ser utilizado en subdirectorios (por
+        <para> El router rewrite puede ser utilizado en subdirectorios (por
             ejemplo
-            <filename>http://domain.com/~user/application-root/</filename>
-            )
-            en cuyo caso la
-            <acronym>URL</acronym>
-            base de la aplicación
-            (
-            <filename>/user/application-root</filename>
-            ) debe ser detectada
+                <filename>http://domain.com/~user/application-root/</filename> )
+            en cuyo caso la <acronym>URL</acronym> base de la aplicación (
+                <filename>/user/application-root</filename> ) debe ser detectada
             automáticamente por
-            <classname>Zend_Controller_Request_Http</classname>
-            y usada en consecuencia.
-        </para>
+                <classname>Zend_Controller_Request_Http</classname> y usada en
+            consecuencia. </para>
 
-        <para>
-            Si la
-            <acronym>URL</acronym>
-            base se detecta incorrectamente se la puede anular con su
-            propio path de base usando
-            <classname>Zend_Controller_Request_Http</classname>
-            y llamando al
-            método
-            <methodname>setBaseUrl()</methodname>
-            (ver
-            <xref linkend="zend.controller.request.http.baseurl"/>
-            ):
-        </para>
+        <para> Si la <acronym>URL</acronym> base se detecta incorrectamente se
+            la puede anular con su propio path de base usando
+                <classname>Zend_Controller_Request_Http</classname> y llamando
+            al método <methodname>setBaseUrl()</methodname> (ver <xref
+                linkend="zend.controller.request.http.baseurl"/> ): </para>
 
         <programlisting language="php"><![CDATA[
 $request->setBaseUrl('/~user/application-root/');
@@ -493,18 +367,12 @@ $request->setBaseUrl('/~user/application-root/');
     <sect2 id="zend.controller.router.global.parameters">
         <title>Parámetros Globales</title>
 
-        <para>
-            Puede establecer los parámetros globales en un router que se
-            proporcionan automáticamente
-            a una ruta cuando se ensamblasn mediante
-            <methodname>setGlobalParam()</methodname>
-            . Si se establece un parámetro global
-            pero también se lo entrega directamente al método
-            de ensamblaje,
-            el parámetro del usuario sobreescribe al parámetro global.
-            Puede establecer
-            un parámetro global esta forma:
-        </para>
+        <para> Puede establecer los parámetros globales en un router que se
+            proporcionan automáticamente a una ruta cuando se ensamblasn
+            mediante <methodname>setGlobalParam()</methodname> . Si se establece
+            un parámetro global pero también se lo entrega directamente al
+            método de ensamblaje, el parámetro del usuario sobreescribe al
+            parámetro global. Puede establecer un parámetro global esta forma: </para>
 
         <programlisting language="php"><![CDATA[
 $router->setGlobalParam('lang', 'en');
@@ -521,30 +389,17 @@ $router->setGlobalParam('lang', 'en');
     </sect2>
 
     <sect2 id="zend.controller.router.add-config">
-        <title>
-            Usando
-            <classname>Zend_Config</classname>
-            con RewriteRouter
-        </title>
+        <title> Usando Zend_Config con RewriteRouter </title>
 
-        <para>
-            A veces es más conveniente para actualizar un archivo de
-            configuración con nuevas rutas
-            que modificar el código.
-            Esto es posible a través del método
-            <methodname>addConfig()</methodname>
-            .
+        <para> A veces es más conveniente para actualizar un archivo de
+            configuración con nuevas rutas que modificar el código. Esto es
+            posible a través del método <methodname>addConfig()</methodname> .
             Básicamente, se crea una configuración compatible con
-            <classname>Zend_Config</classname>
-            .
-            Y en su código lo lee y lo pasa a RewriteRouter.
-        </para>
+                <classname>Zend_Config</classname> . Y en su código lo lee y lo
+            pasa a RewriteRouter. </para>
 
-        <para>
-            Como ejemplo, considere el siguiente archivo
-            <acronym>INI</acronym>
-            :
-        </para>
+        <para> Como ejemplo, considere el siguiente archivo
+                <acronym>INI</acronym> : </para>
 
         <programlisting language="php"><![CDATA[
 [production]
@@ -567,13 +422,8 @@ routes.archive.map.1 = "year"
 ; O: routes.archive.map.year = 1
 ]]></programlisting>
 
-        <para>
-            Entonces el archivo
-            <acronym>INI</acronym>
-            puede ser leído por un objeto
-            <classname>Zend_Config</classname>
-            como sigue:
-        </para>
+        <para> Entonces el archivo <acronym>INI</acronym> puede ser leído por un
+            objeto <classname>Zend_Config</classname> como sigue: </para>
 
         <programlisting language="php"><![CDATA[
 $config = new Zend_Config_Ini('/path/to/config.ini', 'production');
@@ -581,58 +431,37 @@ $router = new Zend_Controller_Router_Rewrite();
 $router->addConfig($config, 'routes');
 ]]></programlisting>
 
-        <para>
-            En el ejemplo de arriba, le decimos el router que utilice la
-            sección 'routes' del archivo
-            <acronym>INI</acronym>
-            para utilizarlo en sus rutas.
-            Cada clave de primer nivel en esa sección será utilizada
-            para definir
-            un nombre de ruta; el ejemplo anterior define las rutas 'archive' y
-            'news'.
-            Entonces cada ruta requiere, como mínimo, una entrada a la
-            'ruta' y una o más entradas
-            por 'default'; opcionalmente puede
-            proporcionarse una o más 'reqs' (abreviación de
-            'required').
-            Dicho todo esto, estos corresponden a los tres argumentos que se le
-            suministran al objeto
-            <classname>Zend_Controller_Router_Route_Interface</classname>
-            .
-            Puede utilizarse una clave opcional 'type' para especificar el
-            tipo de clase de ruta a
-            utilizar en esa ruta en particular;
-            por defecto, usa
-            <classname>Zend_Controller_Router_Route</classname>
-            .
-            En el ejemplo de arriba, la ruta 'news' está definida para usar
-            <classname>Zend_Controller_Router_Route_Static</classname>
-            .
+        <para> En el ejemplo de arriba, le decimos el router que utilice la
+            sección 'routes' del archivo <acronym>INI</acronym> para utilizarlo
+            en sus rutas. Cada clave de primer nivel en esa sección será
+            utilizada para definir un nombre de ruta; el ejemplo anterior define
+            las rutas 'archive' y 'news'. Entonces cada ruta requiere, como
+            mínimo, una entrada a la 'ruta' y una o más entradas por 'default';
+            opcionalmente puede proporcionarse una o más 'reqs' (abreviación de
+            'required'). Dicho todo esto, estos corresponden a los tres
+            argumentos que se le suministran al objeto
+                <classname>Zend_Controller_Router_Route_Interface</classname> .
+            Puede utilizarse una clave opcional 'type' para especificar el tipo
+            de clase de ruta a utilizar en esa ruta en particular; por defecto,
+            usa <classname>Zend_Controller_Router_Route</classname> . En el
+            ejemplo de arriba, la ruta 'news' está definida para usar
+                <classname>Zend_Controller_Router_Route_Static</classname> .
         </para>
     </sect2>
 
     <sect2 id="zend.controller.router.subclassing">
         <title>Subclassing del Router</title>
 
-        <para>
-            El standard rewrite router debería proporcionarle más funcionalidad
-            si la necesita; más
-            a menudo, sólo necesitará crear un nuevo
-            tipo de ruta a fin de ofrecer funcionalidades
-            nuevas o modificadas
-            sobre las tutas provistas.
-       </para>
+        <para> El standard rewrite router debería proporcionarle más
+            funcionalidad si la necesita; más a menudo, sólo necesitará crear un
+            nuevo tipo de ruta a fin de ofrecer funcionalidades nuevas o
+            modificadas sobre las tutas provistas. </para>
 
-        <para>
-            Dicho esto, en algún momento puede encontrarse a si mismo deseando
-            usar un paradigma
-            diferente de routing. La intefaz
-            <classname>Zend_Controller_Router_Interface</classname>
-            proporciona
-            la información mínima necesaria para crear un router, y consiste en
-            un único
-            método.
-        </para>
+        <para> Dicho esto, en algún momento puede encontrarse a si mismo
+            deseando usar un paradigma diferente de routing. La intefaz
+                <classname>Zend_Controller_Router_Interface</classname>
+            proporciona la información mínima necesaria para crear un router, y
+            consiste en un único método. </para>
 
         <programlisting language="php"><![CDATA[
 interface Zend_Controller_Router_Interface
@@ -646,22 +475,12 @@ interface Zend_Controller_Router_Interface
 }
 ]]></programlisting>
 
-        <para>
-            El routing sólo ocurre una vez: cuando la petición es recibida por
-            primera vez en el
-            sistema. El propósito del router es determinar el
-            controlador, la acción, y los
-            parámetros opcionales sobre la base
-            del medio ambiente de la solicitud, y luego
-            ajustarlos en la solicitud.
-            El objeto solicitud se pasa entonces al dispatcher.
-            Si no es
-            posible trazar una ruta hacia un dispatch token,
-            el router no debe hacer nada con el
-            objeto solicitud.
-       </para>
+        <para> El routing sólo ocurre una vez: cuando la petición es recibida
+            por primera vez en el sistema. El propósito del router es determinar
+            el controlador, la acción, y los parámetros opcionales sobre la base
+            del medio ambiente de la solicitud, y luego ajustarlos en la
+            solicitud. El objeto solicitud se pasa entonces al dispatcher. Si no
+            es posible trazar una ruta hacia un dispatch token, el router no
+            debe hacer nada con el objeto solicitud. </para>
     </sect2>
 </sect1>
-    <!--
-vim:se ts=4 sw=4 et:
--->

+ 27 - 48
documentation/manual/es/module_specs/Zend_Db_Profiler-Firebug.xml

@@ -5,64 +5,45 @@
     <title>Perfilando con Firebug</title>
 
     <para>
-        <classname>Zend_Db_Profiler_Firebug</classname>
-        envía información de
-        perfilado a la
-        <ulink url="http://getfirebug.com/logging.html">Consola</ulink>
-        de
-        <ulink url="http://www.getfirebug.com/">Firebug</ulink>
-        .
-    </para>
-
-    <para>
-        Todos los datos son enviados a través del componente
-        <classname>Zend_Wildfire_Channel_HttpHeaders</classname>
-        que usa
-        cabeceras
-        <acronym>HTTP</acronym>
-        para asegurar que el contenido de la página no sea
-        alterado. Depurar peticiones
-        <acronym>AJAX</acronym>
-        que requieren
-        respuestas
-        <acronym>JSON</acronym>
-        y
-        <acronym>XML</acronym>
-        es perfectamente posible con
-        este enfoque.
-    </para>
+        <classname>Zend_Db_Profiler_Firebug</classname> envía información de
+        perfilado a la <ulink url="http://getfirebug.com/logging.html"
+            >Consola</ulink> de <ulink url="http://www.getfirebug.com/"
+            >Firebug</ulink> . </para>
+
+    <para> Todos los datos son enviados a través del componente
+            <classname>Zend_Wildfire_Channel_HttpHeaders</classname> que usa
+        cabeceras <acronym>HTTP</acronym> para asegurar que el contenido de la
+        página no sea alterado. Depurar peticiones <acronym>AJAX</acronym> que
+        requieren respuestas <acronym>JSON</acronym> y <acronym>XML</acronym> es
+        perfectamente posible con este enfoque. </para>
 
     <para>Requerimientos:</para>
 
     <itemizedlist>
         <listitem>
             <para>Navegador web Firefox idealmente versión 3, pero la versión 2
-                tambien está
-                soportada.</para>
+                tambien está soportada.</para>
         </listitem>
 
         <listitem>
-            <para>
-                Extensión Firebug para Firefox, la cual puede descargarse
-                desde
-                <ulink url="https://addons.mozilla.org/en-US/firefox/addon/1843">https://addons.
-                    mozilla
-                    .org/en-US/firefox/addon/1843</ulink>
-                .
-            </para>
+            <para> Extensión Firebug para Firefox, la cual puede descargarse
+                desde <ulink
+                    url="https://addons.mozilla.org/en-US/firefox/addon/1843"
+                    >https://addons. mozilla
+                    .org/en-US/firefox/addon/1843</ulink> . </para>
         </listitem>
 
         <listitem>
-            <para>
-                Extensión FirePHP para Firefox, la cual puede descargarse
-                desde
-                <ulink url="https://addons.mozilla.org/en-US/firefox/addon/6149">https://addons.mozilla.org/en-US/firefox/addon/6149</ulink>
-                .
-            </para>
+            <para> Extensión FirePHP para Firefox, la cual puede descargarse
+                desde <ulink
+                    url="https://addons.mozilla.org/en-US/firefox/addon/6149"
+                    >https://addons.mozilla.org/en-US/firefox/addon/6149</ulink>
+                . </para>
         </listitem>
     </itemizedlist>
 
-    <example id="zend.db.profiler.profilers.firebug.example.with_front_controller">
+    <example
+        id="zend.db.profiler.profilers.firebug.example.with_front_controller">
         <title>Perfilando DB con Zend_Controller_Front</title>
 
         <programlisting language="php"><![CDATA[
@@ -81,11 +62,9 @@ $db->setProfiler($profiler)
 ]]></programlisting>
     </example>
 
-    <example id="zend.db.profiler.profilers.firebug.example.without_front_controller">
-        <title>
-            Perfilar DB sin
-            <classname>Zend_Controller_Front</classname>
-        </title>
+    <example
+        id="zend.db.profiler.profilers.firebug.example.without_front_controller">
+        <title> Perfilar DB sin Zend_Controller_Front </title>
 
         <programlisting language="php"><![CDATA[
 $profiler = new Zend_Db_Profiler_Firebug('All DB Queries');

File diff suppressed because it is too large
+ 239 - 528
documentation/manual/es/module_specs/Zend_Db_Select.xml


+ 142 - 284
documentation/manual/es/module_specs/Zend_Db_Statement.xml

@@ -5,50 +5,30 @@
 
     <title>Zend_Db_Statement</title>
 
-    <para>
-        Además de algunos métodos convenientes tales como
-        <methodname>fetchAll()</methodname>
-        e
-        <methodname>insert()</methodname>
-        documentados en
-        <xref linkend="zend.db.adapter"/>
-        , puede usarse un objeto de declaración
-        para obtener más opciones al ejecutar consultas y
-        devolver conjuntos de
+    <para> Además de algunos métodos convenientes tales como
+            <methodname>fetchAll()</methodname> e
+            <methodname>insert()</methodname> documentados en <xref
+            linkend="zend.db.adapter"/> , puede usarse un objeto de declaración
+        para obtener más opciones al ejecutar consultas y devolver conjuntos de
         resultados. Esta sección describe cómo obtener una instancia de un
-        objeto de declaración y cómo usar sus métodos.
-    </para>
+        objeto de declaración y cómo usar sus métodos. </para>
 
     <para>
-        <classname>Zend_Db_Statement</classname>
-        está basado en el objeto PDOStatement en la extensión
-        <ulink url="http://www.php.net/pdo">PHP Data Objects</ulink>
-        .
-    </para>
+        <classname>Zend_Db_Statement</classname> está basado en el objeto
+        PDOStatement en la extensión <ulink url="http://www.php.net/pdo">PHP
+            Data Objects</ulink> . </para>
 
     <sect2 id="zend.db.statement.creating">
 
         <title>Creando una Declaración</title>
 
-        <para>
-            Típicamente, un objeto de declaración statement es devuelto por el
-            método
-            <methodname>query()</methodname>
-            de la clase de Adaptador de la base de
-            datos.
-            Este método es un modo general de preparar
-            una declaración
-            <acronym>SQL</acronym>
-            .
-            El primer parámetro es un string conteniendo la declaración
-            <acronym>SQL</acronym>
-            .
-            El segundo parámetro (opcional) es un array de valores para
-            vincular posiciones de
-            parámetros en el string
-            <acronym>SQL</acronym>
-            .
-        </para>
+        <para> Típicamente, un objeto de declaración statement es devuelto por
+            el método <methodname>query()</methodname> de la clase de Adaptador
+            de la base de datos. Este método es un modo general de preparar una
+            declaración <acronym>SQL</acronym> . El primer parámetro es un
+            string conteniendo la declaración <acronym>SQL</acronym> . El
+            segundo parámetro (opcional) es un array de valores para vincular
+            posiciones de parámetros en el string <acronym>SQL</acronym> . </para>
 
         <example id="zend.db.statement.creating.example1">
             <title>Crear un objeto de declaración SQL con query()</title>
@@ -60,32 +40,18 @@ $stmt = $db->query(
 ]]></programlisting>
         </example>
 
-        <para>
-            El objeto de declaración corresponde a una declaración
-            <acronym>SQL</acronym>
-            que ha
-            sido preparada y ejecutada una vez con valores vinculados
-            especificados.
-            Si la
-            declaración fue una consulta SELECT u otro tipo de declaración
-            que devuelve un conjunto
-            de resultados, ahora estará lista para
-            extraer resultados.
-        </para>
-
-        <para>
-            Puede crear una declaración con su constructor, pero éste es un
-            uso menos típico. No hay
-            un método factory para crear el objeto,
-            así que es necesario cargar una clase de
-            declaración específica y llamar a su constructor.
-            Pase el objeto Adaptador como el primer
-            parámetro, y un string
-            conteniendo la declaración
-            <acronym>SQL</acronym>
-            como el segundo parámetro.
-            La declaración es preparada pero no ejecutada.
-        </para>
+        <para> El objeto de declaración corresponde a una declaración
+                <acronym>SQL</acronym> que ha sido preparada y ejecutada una vez
+            con valores vinculados especificados. Si la declaración fue una
+            consulta SELECT u otro tipo de declaración que devuelve un conjunto
+            de resultados, ahora estará lista para extraer resultados. </para>
+
+        <para> Puede crear una declaración con su constructor, pero éste es un
+            uso menos típico. No hay un método factory para crear el objeto, así
+            que es necesario cargar una clase de declaración específica y llamar
+            a su constructor. Pase el objeto Adaptador como el primer parámetro,
+            y un string conteniendo la declaración <acronym>SQL</acronym> como
+            el segundo parámetro. La declaración es preparada pero no ejecutada. </para>
 
         <example id="zend.db.statement.creating.example2">
             <title>Usando un constructor de declaración SQL</title>
@@ -102,26 +68,16 @@ $stmt = new Zend_Db_Statement_Mysqli($db, $sql);
 
         <title>Ejecutando la declaración</title>
 
-        <para>
-            Necesita ejecutar un objeto de declaración si lo crea con el
-            constructor, o si desea
-            ejecutar la misma declaración varias veces.
-            Use el método
-            <methodname>execute()</methodname>
-            del mismo objeto de
+        <para> Necesita ejecutar un objeto de declaración si lo crea con el
+            constructor, o si desea ejecutar la misma declaración varias veces.
+            Use el método <methodname>execute()</methodname> del mismo objeto de
             declaración. El único parámetro es un array de valores a vincular a
-            posiciones de parámetros en la declaración.
-        </para>
+            posiciones de parámetros en la declaración. </para>
 
-        <para>
-            Si usa
-            <emphasis>parámetros posicionales</emphasis>
-            , o los que
+        <para> Si usa <emphasis>parámetros posicionales</emphasis> , o los que
             están marcados por un signo de interrogación (
-            <emphasis>?</emphasis>
-            ), pase
-            los valores de vinculación en un array plano.
-        </para>
+                <emphasis>?</emphasis> ), pase los valores de vinculación en un
+            array plano. </para>
 
         <example id="zend.db.statement.executing.example1">
             <title>Ejecutar una declaración con parámetros posicionales</title>
@@ -134,19 +90,11 @@ $stmt->execute(array('goofy', 'FIXED'));
 ]]></programlisting>
         </example>
 
-        <para>
-            Si usa
-            <emphasis>parámetros nombrados</emphasis>
-            , o los que son
+        <para> Si usa <emphasis>parámetros nombrados</emphasis> , o los que son
             indicados por un string identificador precedido por un caracter de
-            dos
-            puntos (
-            <emphasis>:</emphasis>
-            ), pase el valor en un array asociativo.
-            Las claves de este array deben coincidir con el
-            nombre de los
-            parámetros.
-        </para>
+            dos puntos ( <emphasis>:</emphasis> ), pase el valor en un array
+            asociativo. Las claves de este array deben coincidir con el nombre
+            de los parámetros. </para>
 
         <example id="zend.db.statement.executing.example2">
             <title>Ejecutando una declaración con parámetros nombrados</title>
@@ -160,117 +108,75 @@ $stmt->execute(array(':reporter' => 'goofy', ':status' => 'FIXED'));
 ]]></programlisting>
         </example>
 
-        <para>
-            Las declaraciones
-            <acronym>PDO</acronym>
-            soportan tanto parámetros posicionales como
-            parámetros nombrados, pero no ambos tipos en
-            la misma declaración
-            <acronym>SQL</acronym>
-            . Algunas clases
-            <classname>Zend_Db_Statement</classname>
-            para extensiones no-PDO
-            soportan solo un tipo de parámetro o el otro.
-        </para>
+        <para> Las declaraciones <acronym>PDO</acronym> soportan tanto
+            parámetros posicionales como parámetros nombrados, pero no ambos
+            tipos en la misma declaración <acronym>SQL</acronym> . Algunas
+            clases <classname>Zend_Db_Statement</classname> para extensiones
+            no-PDO soportan solo un tipo de parámetro o el otro. </para>
 
     </sect2>
 
     <sect2 id="zend.db.statement.fetching">
 
-        <title>
-            Extrayendo Resultados de una declaración
-            <methodname>SELECT</methodname>
+        <title> Extrayendo Resultados de una declaración
+                SELECT
         </title>
 
-        <para>
-            Puede llamar a métodos del objeto de declaración para obtener filas
-            desde declaraciones
-            <acronym>SQL</acronym>
-            que producen conjuntos de resultados.
-
-            SELECT, SHOW, DESCRIBE y EXPLAIN son ejemplos de
-            declaraciones que
-            producen un conjunto de resultados.
-            INSERT, UPDATE, and DELETE son
-            ejemplo de declaraciones que
-            no producen un conjunto de resultados.
-
-            Puede ejecutar las
-            últimas declaraciones de
-            <acronym>SQL</acronym>
-            usando
-            <classname>Zend_Db_Statement</classname>
-            , pero no puede llamar a los métodos que extraen
-            filas de resultados desde éste.
-        </para>
+        <para> Puede llamar a métodos del objeto de declaración para obtener
+            filas desde declaraciones <acronym>SQL</acronym> que producen
+            conjuntos de resultados. SELECT, SHOW, DESCRIBE y EXPLAIN son
+            ejemplos de declaraciones que producen un conjunto de resultados.
+            INSERT, UPDATE, and DELETE son ejemplo de declaraciones que no
+            producen un conjunto de resultados. Puede ejecutar las últimas
+            declaraciones de <acronym>SQL</acronym> usando
+                <classname>Zend_Db_Statement</classname> , pero no puede llamar
+            a los métodos que extraen filas de resultados desde éste. </para>
 
         <sect3 id="zend.db.statement.fetching.fetch">
 
-            <title>Extrayendo una Fila Simple desde un Conjunto de Resultados</title>
+            <title>Extrayendo una Fila Simple desde un Conjunto de
+                Resultados</title>
 
-            <para>
-                Para extraer una fila desde el conjunto de resultados,
-                use el método
-                <methodname>fetch()</methodname>
-                del objeto de declaración.
-                Los tres parámetros de este método son opcionales:
-            </para>
+            <para> Para extraer una fila desde el conjunto de resultados, use el
+                método <methodname>fetch()</methodname> del objeto de
+                declaración. Los tres parámetros de este método son opcionales: </para>
 
             <itemizedlist>
                 <listitem>
                     <para>
-                        <emphasis>Estilo de Extracción</emphasis>
-                        es el primer parámetro. Éste controla la estructura
-                        en la que será devuelta
-                        la fila.
-                        Vea
-                        <xref linkend="zend.db.adapter.select.fetch-mode"/>
-                        para la descripción de un valor válido los
-                        correspondientes formatos de
-                        datos.
-                    </para>
+                        <emphasis>Estilo de Extracción</emphasis> es el primer
+                        parámetro. Éste controla la estructura en la que será
+                        devuelta la fila. Vea <xref
+                            linkend="zend.db.adapter.select.fetch-mode"/> para
+                        la descripción de un valor válido los correspondientes
+                        formatos de datos. </para>
                 </listitem>
                 <listitem>
                     <para>
-                        <emphasis>Orientación del Cursor</emphasis>
-                        es el segundo parámetro. Por omisión es
-                        Zend_Db::FETCH_ORI_NEXT, lo cual
-                        simplemente significa
-                        que cada llamada a
-                        <methodname>fetch()</methodname>
-                        devuelve la
-                        siguiente fila del resultado, en el orden devuelto por
-                        el
-                        <acronym>RDBMS</acronym>
-                        .
-                    </para>
+                        <emphasis>Orientación del Cursor</emphasis> es el
+                        segundo parámetro. Por omisión es
+                        Zend_Db::FETCH_ORI_NEXT, lo cual simplemente significa
+                        que cada llamada a <methodname>fetch()</methodname>
+                        devuelve la siguiente fila del resultado, en el orden
+                        devuelto por el <acronym>RDBMS</acronym> . </para>
                 </listitem>
                 <listitem>
                     <para>
-                        <emphasis>Compensación</emphasis>
-                        es el
-                        tercer parámetro.
-                        Si la orientación del cursor es
-                        Zend_Db::FETCH_ORI_ABS,
-                        entonces el offset es el número ordinal
-                        de las filas
-                        que devolver.
-                        Si la orientación del cursor es Zend_Db::FETCH_ORI_REL,
-                        entonces el offset es relativo a la posición del
-                        cursor antes de que
-                        <methodname>fetch()</methodname>
-                        fuera llamado.
+                        <emphasis>Compensación</emphasis> es el tercer
+                        parámetro. Si la orientación del cursor es
+                        Zend_Db::FETCH_ORI_ABS, entonces el offset es el número
+                        ordinal de las filas que devolver. Si la orientación del
+                        cursor es Zend_Db::FETCH_ORI_REL, entonces el offset es
+                        relativo a la posición del cursor antes de que
+                            <methodname>fetch()</methodname> fuera llamado.
                     </para>
                 </listitem>
             </itemizedlist>
 
             <para>
-                <methodname>fetch()</methodname>
-                devuelve
-                <constant>FALSE</constant>
-                si todas las filas
-                del conjunto de resultados han sido extraídas.
-            </para>
+                <methodname>fetch()</methodname> devuelve
+                    <constant>FALSE</constant> si todas las filas del conjunto
+                de resultados han sido extraídas. </para>
 
             <example id="zend.db.statement.fetching.fetch.example">
                 <title>Usando fetch() en un bucle</title>
@@ -283,11 +189,9 @@ while ($row = $stmt->fetch()) {
 ]]></programlisting>
             </example>
 
-            <para>
-                Vea también
-                <ulink url="http://www.php.net/PDOStatement-fetch">PDOStatement::fetch()</ulink>
-                .
-            </para>
+            <para> Vea también <ulink
+                    url="http://www.php.net/PDOStatement-fetch"
+                    >PDOStatement::fetch()</ulink> . </para>
 
         </sect3>
 
@@ -295,23 +199,14 @@ while ($row = $stmt->fetch()) {
 
             <title>Extrayendo un Conjunto de Resultados completo</title>
 
-            <para>
-                Para extraer todas las filas de un resultado en un solo paso,
-                use el método
-                <methodname>fetchAll()</methodname>
-                . Esto es equivalente a
-                llamar al método
-                <methodname>fetch()</methodname>
-                en un bucle devolviendo
-                todas las filas en una array. El método
-                <methodname>fetchAll()</methodname>
-                acepta 2 parámetros. El primero es el estilo de extracción,
-                descrito anteriormente, y
-                el segundo indica el número de la
-                columa que devolver, cuando el estilo de extracción
-                es
-                Zend_Db::FETCH_COLUMN.
-            </para>
+            <para> Para extraer todas las filas de un resultado en un solo paso,
+                use el método <methodname>fetchAll()</methodname> . Esto es
+                equivalente a llamar al método <methodname>fetch()</methodname>
+                en un bucle devolviendo todas las filas en una array. El método
+                    <methodname>fetchAll()</methodname> acepta 2 parámetros. El
+                primero es el estilo de extracción, descrito anteriormente, y el
+                segundo indica el número de la columa que devolver, cuando el
+                estilo de extracción es Zend_Db::FETCH_COLUMN. </para>
 
             <example id="zend.db.statement.fetching.fetchall.example">
                 <title>Usando fetchAll()</title>
@@ -324,11 +219,9 @@ echo $rows[0]['bug_description'];
 ]]></programlisting>
             </example>
 
-            <para>
-                Vea también
-                <ulink url="http://www.php.net/PDOStatement-fetchAll">PDOStatement::fetchAll()</ulink>
-                .
-            </para>
+            <para> Vea también <ulink
+                    url="http://www.php.net/PDOStatement-fetchAll"
+                    >PDOStatement::fetchAll()</ulink> . </para>
 
         </sect3>
 
@@ -336,33 +229,21 @@ echo $rows[0]['bug_description'];
 
             <title>Cambiando el Modo de extracción</title>
 
-            <para>
-                Por defecto, el objeto de declaración devuelve filas de un
-                conjunto de resultados
-                como array asociativo, mapeando los
-                nombres de columnas a los valores de la columna.
-                Se puede especificar un formato diferente para que la clase de
-                declaración devuelva
-                las filas, tal como se puede con la clase
+            <para> Por defecto, el objeto de declaración devuelve filas de un
+                conjunto de resultados como array asociativo, mapeando los
+                nombres de columnas a los valores de la columna. Se puede
+                especificar un formato diferente para que la clase de
+                declaración devuelva las filas, tal como se puede con la clase
                 Adaptadora. Puede usar él método
-                <methodname>setFetchMode()</methodname>
-                para establecer el modo de extracción. Especifique el modo de
-                extracción usando las
-                constantes de la clase
-                Zend_Db: FETCH_ASSOC, FETCH_NUM, FETCH_BOTH,
-                FETCH_COLUMN, and
-                FETCH_OBJ.
-                Vea
-                <xref linkend="zend.db.adapter.select.fetch-mode"/>
-                para más información de estos modos.
-                Llamadas subsiguientes a los métodos de la
-                declaración
-                <methodname>fetch()</methodname>
-                o
-                <methodname>fetchAll()</methodname>
-                usan el modo de
-                extracción especificado.
-            </para>
+                    <methodname>setFetchMode()</methodname> para establecer el
+                modo de extracción. Especifique el modo de extracción usando las
+                constantes de la clase Zend_Db: FETCH_ASSOC, FETCH_NUM,
+                FETCH_BOTH, FETCH_COLUMN, and FETCH_OBJ. Vea <xref
+                    linkend="zend.db.adapter.select.fetch-mode"/> para más
+                información de estos modos. Llamadas subsiguientes a los métodos
+                de la declaración <methodname>fetch()</methodname> o
+                    <methodname>fetchAll()</methodname> usan el modo de
+                extracción especificado. </para>
 
             <example id="zend.db.statement.fetching.fetch-mode.example">
                 <title>Configurando un modo de extracción</title>
@@ -377,46 +258,32 @@ echo $rows[0][0];
 ]]></programlisting>
             </example>
 
-            <para>
-                Vea también
-                <ulink url="http://www.php.net/PDOStatement-setFetchMode">PDOStatement::setFetchMode()</ulink>
-                .
-            </para>
+            <para> Vea también <ulink
+                    url="http://www.php.net/PDOStatement-setFetchMode"
+                    >PDOStatement::setFetchMode()</ulink> . </para>
 
         </sect3>
 
         <sect3 id="zend.db.statement.fetching.fetchcolumn">
 
-            <title>Extrayendo una Única Columna desde un Conjunto de Resultados</title>
+            <title>Extrayendo una Única Columna desde un Conjunto de
+                Resultados</title>
 
-            <para>
-                Para devolver una única columna de la siguiente fila del
+            <para> Para devolver una única columna de la siguiente fila del
                 conjunto de resultados, use
-                <methodname>fetchColumn()</methodname>
-                . El
-                parámetro opcional es el índice de la columna (integer), y por
-                defecto es 0. Este
-                método devuelve un valor escalar, o
-                <constant>FALSE</constant>
-                si todas las filas del conjunto de resultados
-                han sido extraídas.
-            </para>
-
-            <para>
-                Note que este método opera diferente que el método
-                <methodname>fetchCol()</methodname>
-                de la clase Adaptadora.
-                El método
-                <methodname>fetchColumn()</methodname>
-                de una declaración devuelve
-                un único valor desde una fila.
-                El método
-                <methodname>fetchCol()</methodname>
-                de un adaptador devuelve un
-                array de valores, tomados desde la primera columa de
-                todas las
-                del conjunto de resultados.
-            </para>
+                    <methodname>fetchColumn()</methodname> . El parámetro
+                opcional es el índice de la columna (integer), y por defecto es
+                0. Este método devuelve un valor escalar, o
+                    <constant>FALSE</constant> si todas las filas del conjunto
+                de resultados han sido extraídas. </para>
+
+            <para> Note que este método opera diferente que el método
+                    <methodname>fetchCol()</methodname> de la clase Adaptadora.
+                El método <methodname>fetchColumn()</methodname> de una
+                declaración devuelve un único valor desde una fila. El método
+                    <methodname>fetchCol()</methodname> de un adaptador devuelve
+                un array de valores, tomados desde la primera columa de todas
+                las del conjunto de resultados. </para>
 
             <example id="zend.db.statement.fetching.fetchcolumn.example">
                 <title>Usando fetchColumn()</title>
@@ -427,11 +294,9 @@ $bug_status = $stmt->fetchColumn(2);
 ]]></programlisting>
             </example>
 
-            <para>
-                Vea también
-                <ulink url="http://www.php.net/PDOStatement-fetchColumn">PDOStatement::fetchColumn()</ulink>
-                .
-            </para>
+            <para> Vea también <ulink
+                    url="http://www.php.net/PDOStatement-fetchColumn"
+                    >PDOStatement::fetchColumn()</ulink> . </para>
 
         </sect3>
 
@@ -439,18 +304,13 @@ $bug_status = $stmt->fetchColumn(2);
 
             <title>Extrayendo una Fila como un Objeto</title>
 
-            <para>
-                Para extraer una fila desde un conjunto de resultados
-                estructurado como un Objeto,
-                use el método
-                <methodname>fetchObject()</methodname>
-                . Este método tiene 2 parámetros
-                opcionales. El primer parámetro es un string con el
-                nombre de
-                la clase del objeto que devolver; por defecto será 'stdClass'. El segundo
-                parámetro es un array de valores que será pasado al
-                constructor de la clase.
-            </para>
+            <para> Para extraer una fila desde un conjunto de resultados
+                estructurado como un Objeto, use el método
+                    <methodname>fetchObject()</methodname> . Este método tiene 2
+                parámetros opcionales. El primer parámetro es un string con el
+                nombre de la clase del objeto que devolver; por defecto será
+                'stdClass'. El segundo parámetro es un array de valores que será
+                pasado al constructor de la clase. </para>
 
             <example id="zend.db.statement.fetching.fetchobject.example">
                 <title>Usando fetchObject()</title>
@@ -463,11 +323,9 @@ echo $obj->bug_description;
 ]]></programlisting>
             </example>
 
-            <para>
-                Vea también
-                <ulink url="http://www.php.net/PDOStatement-fetchObject">PDOStatement::fetchObject()</ulink>
-                .
-            </para>
+            <para> Vea también <ulink
+                    url="http://www.php.net/PDOStatement-fetchObject"
+                    >PDOStatement::fetchObject()</ulink> . </para>
 
         </sect3>
 

+ 115 - 253
documentation/manual/es/module_specs/Zend_Dojo-Data.xml

@@ -4,35 +4,20 @@
 <sect1 id="zend.dojo.data">
     <title>Zend_Dojo_Data: Envolturas de dojo.data</title>
 
-    <para>
-        Dojo proporciona abstracciones de datos para los widgets de datos
-        habilitados a través de su
-        componente dojo.data. Este componente
-        proporciona la capacidad de adjuntar un datastore,
-        ofrecer algunos
+    <para> Dojo proporciona abstracciones de datos para los widgets de datos
+        habilitados a través de su componente dojo.data. Este componente
+        proporciona la capacidad de adjuntar un datastore, ofrecer algunos
         metadatos relativos al campo identidad, opcionalmente una etiqueta de
-        campo, y
-        una
-        <acronym>API</acronym>
-        para efectuar consultas,
+        campo, y una <acronym>API</acronym> para efectuar consultas,
         clasificación, recuperación de archivos y conjuntos de registros del
-        datastore.
-    </para>
+        datastore. </para>
 
-    <para>
-        dojo.data se utiliza a menudo con XmlHttpRequest para traer
-        dinámicamente datos desde el
-        servidor. El principal mecanismo para esto
-        es extender el QueryReadStore para que apunte a
-        una
-        <acronym>URL</acronym>
-        y especificar la
-        información a consultar. El lado del servidor después devuelve los datos
-        con
-        el siguiente formato
-        <acronym>JSON</acronym>
-        :
-    </para>
+    <para> dojo.data se utiliza a menudo con XmlHttpRequest para traer
+        dinámicamente datos desde el servidor. El principal mecanismo para esto
+        es extender el QueryReadStore para que apunte a una
+            <acronym>URL</acronym> y especificar la información a consultar. El
+        lado del servidor después devuelve los datos con el siguiente formato
+            <acronym>JSON</acronym> : </para>
 
     <programlisting language="javascript"><![CDATA[
 {
@@ -46,23 +31,17 @@
 ]]></programlisting>
 
     <para>
-        <classname>Zend_Dojo_Data</classname>
-        ofrece una interfaz simple para la
-        construcción de estas estructuras programáticamente,
-        interactuando con
-        ellos, y serializándolos a un array o a
-        <acronym>JSON</acronym>
-        .
-    </para>
+        <classname>Zend_Dojo_Data</classname> ofrece una interfaz simple para la
+        construcción de estas estructuras programáticamente, interactuando con
+        ellos, y serializándolos a un array o a <acronym>JSON</acronym> . </para>
 
     <sect2 id="zend.dojo.data.usage">
         <title>Uso de Zend_Dojo_Data</title>
 
         <para>En su forma más simple, dojo.data requiere que se proporcione el
-            nombre del campo
-            identificador en cada item, y un conjunto de items
-            (datos). Puede pasarlos tanto via el
-            constructor, o via mutators:</para>
+            nombre del campo identificador en cada item, y un conjunto de items
+            (datos). Puede pasarlos tanto via el constructor, o via
+            mutators:</para>
 
         <example id="zend.dojo.data.usage.constructor">
             <title>Inicialización de Zend_Dojo_Data via constructor</title>
@@ -82,19 +61,12 @@ $data->setIdentifier('id')
 ]]></programlisting>
         </example>
 
-        <para>
-            También puede añadir un solo item a la vez, o agregar items
-            utilizando
-            <methodname>addItem()</methodname>
-            y
-            <methodname>addItems()</methodname>
-            .
-        </para>
+        <para> También puede añadir un solo item a la vez, o agregar items
+            utilizando <methodname>addItem()</methodname> y
+                <methodname>addItems()</methodname> . </para>
 
         <example id="zend.dojo.data.usage.append">
-            <title>
-                Agregando datos a
-                <classname>Zend_Dojo_Data</classname>
+            <title> Agregando datos a Zend_Dojo_Data
             </title>
 
             <programlisting language="php"><![CDATA[
@@ -108,12 +80,9 @@ $data->addItems($someMoreItems);
         <note>
             <title>Siempre use un identificador!</title>
 
-            <para>
-                Cada datastore de dojo.data requiere que la columna
-                identificadora se proporcione
-                como metadatos, incluyendo
-                <classname>Zend_Dojo_Data</classname>
-                . De hecho, si intenta
+            <para> Cada datastore de dojo.data requiere que la columna
+                identificadora se proporcione como metadatos, incluyendo
+                    <classname>Zend_Dojo_Data</classname> . De hecho, si intenta
                 añadir items sin un identificador, se generará una excepción.
             </para>
         </note>
@@ -126,9 +95,8 @@ $data->addItems($someMoreItems);
             </listitem>
 
             <listitem>
-                <para>
-                    Objectos implementando un método
-                    <methodname>toArray()</methodname>
+                <para> Objectos implementando un método
+                        <methodname>toArray()</methodname>
                 </para>
             </listitem>
 
@@ -138,16 +106,11 @@ $data->addItems($someMoreItems);
             </listitem>
         </itemizedlist>
 
-        <para>
-            Puede adjuntar colecciones de los items anteriores via
-            <methodname>addItems()</methodname>
-            o
-            <methodname>setItems()</methodname>
-            (sobreescribe todos los
-            items previamente establecidos); cuando lo haga, puede pasar un
-            solo
-            argumento:
-        </para>
+        <para> Puede adjuntar colecciones de los items anteriores via
+                <methodname>addItems()</methodname> o
+                <methodname>setItems()</methodname> (sobreescribe todos los
+            items previamente establecidos); cuando lo haga, puede pasar un solo
+            argumento: </para>
 
         <itemizedlist>
             <listitem>
@@ -155,30 +118,19 @@ $data->addItems($someMoreItems);
             </listitem>
 
             <listitem>
-                <para>
-                    Objectos implementando la interfaz
-                    <methodname>Traversable</methodname>
-                    , que incluye las
-                    interfaces
-                    <methodname>Iterator</methodname>
-                    y
-                    <methodname>ArrayAccess</methodname>
-                    .
-                </para>
+                <para> Objectos implementando la interfaz
+                        <methodname>Traversable</methodname> , que incluye las
+                    interfaces <methodname>Iterator</methodname> y
+                        <methodname>ArrayAccess</methodname> . </para>
             </listitem>
         </itemizedlist>
 
-        <para>
-            Si quiere especificar un campo que actuará como una etiqueta para
-            el item, llame a
-            <methodname>setLabel()</methodname>
-            :
-        </para>
+        <para> Si quiere especificar un campo que actuará como una etiqueta para
+            el item, llame a <methodname>setLabel()</methodname> : </para>
 
         <example id="zend.dojo.data.usage.label">
-            <title>
-                Especificando la etiqueta de un campo en
-                <classname>Zend_Dojo_Data</classname>
+            <title> Especificando la etiqueta de un campo en
+                    Zend_Dojo_Data
             </title>
 
             <programlisting language="php"><![CDATA[
@@ -186,19 +138,13 @@ $data->setLabel('name');
 ]]></programlisting>
         </example>
 
-        <para>
-            Por último, también puede cargar un item
-            <classname>Zend_Dojo_Data</classname>
-            de un array
-            <acronym>JSON</acronym>
-            dojo.data, utilizando el método
-            <methodname>fromJson()</methodname>
-            .
-        </para>
+        <para> Por último, también puede cargar un item
+                <classname>Zend_Dojo_Data</classname> de un array
+                <acronym>JSON</acronym> dojo.data, utilizando el método
+                <methodname>fromJson()</methodname> . </para>
 
         <example id="zend.dojo.data.usage.populate">
-            <title>Alimentando Zend_Dojo_Data desde
-                JSON</title>
+            <title>Alimentando Zend_Dojo_Data desde JSON</title>
 
             <programlisting language="php"><![CDATA[
 $data->fromJson($json);
@@ -209,36 +155,23 @@ $data->fromJson($json);
     <sect2 id="zend.dojo.data.metadata">
         <title>Agregando metadatos a sus contenedores</title>
 
-        <para>
-            Algunos componentes de Dojo requieren metadatos adicionales junto
-            al conjunto de datos de
-            dojo.data. Como ejemplo,
-            <methodname>dojox.grid.Grid</methodname>
-            puede tirar datos
+        <para> Algunos componentes de Dojo requieren metadatos adicionales junto
+            al conjunto de datos de dojo.data. Como ejemplo,
+                <methodname>dojox.grid.Grid</methodname> puede tirar datos
             dinámicamente desde un
-            <methodname>dojox.data.QueryReadStore</methodname>
-            . Para que la
+                <methodname>dojox.data.QueryReadStore</methodname> . Para que la
             paginación funcione correctamente, cada conjunto de datos de regreso
-            debería contener una clave
-            <methodname>numRows</methodname>
-            con el
+            debería contener una clave <methodname>numRows</methodname> con el
             número total de filas que podrían ser devueltas por la consulta. Con
-            estos datos,
-            la plantilla sabe cuando seguir haciendo pequeños
-            pedidos de subconjuntos de datos al
-            servidor y cuando dejar de hacer
-            más peticiones (es decir, ha llegado a la última página
-            de datos).
+            estos datos, la plantilla sabe cuando seguir haciendo pequeños
+            pedidos de subconjuntos de datos al servidor y cuando dejar de hacer
+            más peticiones (es decir, ha llegado a la última página de datos).
             Esta técnica es útil para despachar grandes conjuntos de datos en
-            sus
-            plantillas sin cargar todo el conjunto de una sola vez.
-        </para>
+            sus plantillas sin cargar todo el conjunto de una sola vez. </para>
 
         <para>
-            <classname>Zend_Dojo_Data</classname>
-            permite asignar propiedades a
-            los metadatos como al objeto. Lo siguiente ilustra su uso:
-        </para>
+            <classname>Zend_Dojo_Data</classname> permite asignar propiedades a
+            los metadatos como al objeto. Lo siguiente ilustra su uso: </para>
 
         <programlisting language="php"><![CDATA[
 // Establece el "numRows" a 100
@@ -267,36 +200,23 @@ $data->clearMetadata();
     <sect2 id="zend.dojo.data.advanced">
         <title>Casos Avanzados de Uso</title>
 
-        <para>
-            Además de actuar como un contenedor de datos serializable,
-            <classname>Zend_Dojo_Data</classname>
-            también ofrece la
+        <para> Además de actuar como un contenedor de datos serializable,
+                <classname>Zend_Dojo_Data</classname> también ofrece la
             posibilidad de manipular y recorrer los datos en una variedad de
-            formas.
-        </para>
-
-        <para>
-            <classname>Zend_Dojo_Data</classname>
-            implementa las interfaces
-            <methodname>ArrayAccess</methodname>
-            ,
-            <methodname>Iterator</methodname>
-            , y
-            <methodname>Countable</methodname>
-            . Por lo tanto, puede usar la
-            recopilación de datos casi como si fuera un array.
-        </para>
+            formas. </para>
 
         <para>
-            Todos los items son referenciados por el identificador de campo.
-            Dado que los
-            identificadores deben ser únicos, puede usar los
-            valores de este campo para sacar los
-            registros individuales. Hay dos
+            <classname>Zend_Dojo_Data</classname> implementa las interfaces
+                <methodname>ArrayAccess</methodname> ,
+                <methodname>Iterator</methodname> , y
+                <methodname>Countable</methodname> . Por lo tanto, puede usar la
+            recopilación de datos casi como si fuera un array. </para>
+
+        <para> Todos los items son referenciados por el identificador de campo.
+            Dado que los identificadores deben ser únicos, puede usar los
+            valores de este campo para sacar los registros individuales. Hay dos
             maneras de hacer esto: con el método
-            <methodname>getItem()</methodname>
-            , o via notación de array.
-        </para>
+                <methodname>getItem()</methodname> , o via notación de array. </para>
 
         <programlisting language="php"><![CDATA[
 // Usando getItem():
@@ -307,8 +227,7 @@ $item = $data['foo'];
 ]]></programlisting>
 
         <para>Si conoce el identificador, puede utilizarlo para recuperar un
-            item, actualizarlo,
-            borrarlo, crearlo, o probarlo:</para>
+            item, actualizarlo, borrarlo, crearlo, o probarlo:</para>
 
         <programlisting language="php"><![CDATA[
 // Actualizar o crear un item:
@@ -323,8 +242,7 @@ if (isset($data[foo])) {
 ]]></programlisting>
 
         <para>También puede hacer un loop sobre todos los items. Internamente,
-            todos los items se
-            almacenan como arrays.</para>
+            todos los items se almacenan como arrays.</para>
 
         <programlisting language="php"><![CDATA[
 foreach ($data as $item) {
@@ -338,17 +256,10 @@ foreach ($data as $item) {
 echo count($data), " items encontrados!";
 ]]></programlisting>
 
-        <para>
-            Por último, como la clase implementa
-            <methodname>__toString()</methodname>
-            , también puede convertirlo
-            a
-            <acronym>JSON</acronym>
-            simplemente con "echo" de
-            <acronym>PHP</acronym>
-            o
-            convertirlo a string:
-        </para>
+        <para> Por último, como la clase implementa
+                <methodname>__toString()</methodname> , también puede
+            convertirlo a <acronym>JSON</acronym> simplemente con "echo" de
+                <acronym>PHP</acronym> o convertirlo a string: </para>
 
         <programlisting language="php"><![CDATA[
 echo $data; // echo como un string JSON
@@ -360,173 +271,124 @@ $json = (string) $data; // conversión a string == conversión a JSON
             <title>Métodos Disponibles</title>
 
             <para>Además de los métodos necesarios para aplicar las interfaces
-                enumeradas
-                anteriormente, están disponibles los siguientes
+                enumeradas anteriormente, están disponibles los siguientes
                 métodos.</para>
 
             <itemizedlist>
                 <listitem>
                     <para>
-                        <methodname>setItems($items)</methodname>
-                        : establece
+                        <methodname>setItems($items)</methodname> : establece
                         varios items a la vez, sobrescribiendo cualquier item
-                        que figurase
-                        anteriormente en el objeto.
-                        <varname>$items</varname>
-                        debe ser un array o
-                        un objeto
-                        <methodname>Traversable</methodname>
-                        .
-                    </para>
+                        que figurase anteriormente en el objeto.
+                            <varname>$items</varname> debe ser un array o un
+                        objeto <methodname>Traversable</methodname> . </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>setItem($item, $id = null)</methodname>
-                        :
+                        <methodname>setItem($item, $id = null)</methodname> :
                         establece un item individual, opcionalmente puede pasar
-                        un identificador
-                        explícito. Sobreescribe el item si ya
-                        existe en la colección. Los items
-                        válidos incluyen a
+                        un identificador explícito. Sobreescribe el item si ya
+                        existe en la colección. Los items válidos incluyen a
                         arrays asociativos, objetos implementando
-                        <methodname>toArray()</methodname>
-                        , o cualquier
-                        objeto con propiedades públicas.
-                    </para>
+                            <methodname>toArray()</methodname> , o cualquier
+                        objeto con propiedades públicas. </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>addItem($item, $id = null)</methodname>
-                        :
+                        <methodname>addItem($item, $id = null)</methodname> :
                         añade un item individual, opcionalmente puede pasar un
-                        identificador
-                        explícito. Generará una excepción si el
-                        item ya existe en la colección. Los
-                        items válidos
+                        identificador explícito. Generará una excepción si el
+                        item ya existe en la colección. Los items válidos
                         incluyen a arrays asociativos, objetos implementando
-                        <methodname>toArray()</methodname>
-                        , o cualquier
-                        objeto con propiedades públicas.
-                    </para>
+                            <methodname>toArray()</methodname> , o cualquier
+                        objeto con propiedades públicas. </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>addItems($items)</methodname>
-                        : agrega
+                        <methodname>addItems($items)</methodname> : agrega
                         múltiples items a la vez, añadiendolos a cualquiera de
-                        los items
-                        actuales. Generará una excepción si alguno de
-                        los nuevos items tiene un
-                        identificador concordante a un
+                        los items actuales. Generará una excepción si alguno de
+                        los nuevos items tiene un identificador concordante a un
                         identificador ya existente en la colección.
-                        <varname>$items</varname>
-                        debe ser un array o
-                        un objeto
-                        <methodname>Traversable</methodname>
-                        .
-                    </para>
+                            <varname>$items</varname> debe ser un array o un
+                        objeto <methodname>Traversable</methodname> . </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>getItems()</methodname>
-                        : recupera todos los
-                        items como un array de arrays.
-                    </para>
+                        <methodname>getItems()</methodname> : recupera todos los
+                        items como un array de arrays. </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>hasItem($id)</methodname>
-                        : determina si un
+                        <methodname>hasItem($id)</methodname> : determina si un
                         item con el identificador dado existe en la colección.
                     </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>getItem($id)</methodname>
-                        : recupera un item
+                        <methodname>getItem($id)</methodname> : recupera un item
                         con el identificador dado de la colección; el item
                         retornado será un array asociativo. Si ningún item
-                        coincide, se devolverá un
-                        valor null.
-                    </para>
+                        coincide, se devolverá un valor null. </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>removeItem($id)</methodname>
-                        : elimina de la
-                        colección un item con el identificador dado.
-                    </para>
+                        <methodname>removeItem($id)</methodname> : elimina de la
+                        colección un item con el identificador dado. </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>clearItems()</methodname>
-                        : elimina todos los
-                        items de la colección.
-                    </para>
+                        <methodname>clearItems()</methodname> : elimina todos
+                        los items de la colección. </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>setIdentifier($identifier)</methodname>
-                        :
+                        <methodname>setIdentifier($identifier)</methodname> :
                         establece el nombre del campo que representa el
-                        identificador único para
-                        cada item en la colección.
+                        identificador único para cada item en la colección.
                     </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>getIdentifier()</methodname>
-                        : recupera el
-                        nombre del campo identificador.
-                    </para>
+                        <methodname>getIdentifier()</methodname> : recupera el
+                        nombre del campo identificador. </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>setLabel($label)</methodname>
-                        : establece el
+                        <methodname>setLabel($label)</methodname> : establece el
                         nombre de un campo para ser utilizado como la etiqueta a
-                        mostrar para un item.
-                    </para>
+                        mostrar para un item. </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>getLabel()</methodname>
-                        : recupera la
-                        etiqueta del nombre del campo.
-                    </para>
+                        <methodname>getLabel()</methodname> : recupera la
+                        etiqueta del nombre del campo. </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>toArray()</methodname>
-                        : enviar el objeto a
+                        <methodname>toArray()</methodname> : enviar el objeto a
                         un array. Como mínimo, el array contendrá las claves
                         'identifier', 'items', y 'label' si una etiqueta de
-                        campo ha sido establecida
-                        en el objeto.
-                    </para>
+                        campo ha sido establecida en el objeto. </para>
                 </listitem>
 
                 <listitem>
                     <para>
-                        <methodname>toJson()</methodname>
-                        : enviar el objeto a
-                        una representación
-                        <acronym>JSON</acronym>
-                        .
-                    </para>
+                        <methodname>toJson()</methodname> : enviar el objeto a
+                        una representación <acronym>JSON</acronym> . </para>
                 </listitem>
             </itemizedlist>
         </sect3>

+ 106 - 214
documentation/manual/es/module_specs/Zend_Validate-WritingValidators.xml

@@ -6,108 +6,62 @@
     <title>Escribiendo Validadores</title>
 
     <para>
-        <classname>Zend_Validate</classname>
-        provee un conjunto de validadores que suelen necesitarse,
-        pero inevitablemente, los
-        desarrolladores quiere escribir sus propios
-        validadores personalizados para sus necesidades
-        particulares.
-        La tarea de escribir un validador personalizado se describe en esta sección.
-    </para>
+        <classname>Zend_Validate</classname> provee un conjunto de validadores
+        que suelen necesitarse, pero inevitablemente, los desarrolladores quiere
+        escribir sus propios validadores personalizados para sus necesidades
+        particulares. La tarea de escribir un validador personalizado se
+        describe en esta sección. </para>
 
     <para>
-        <classname>Zend_Validate_Interface</classname>
-        define tres métodos, isValid(),
-        getMessages(), y getErrors(), que pueden ser implementadas
-        por clases de usuario
-        a fin de crear objetos de validación personalizados.
-        Un objeto que
-        implementa una interfaz
-        <classname>Zend_Validate_Interface</classname>
-        puede añadirse a una cadena de validación con
-        <methodname>Zend_Validate::addValidator()</methodname>
-        .
-        Tales objetos también pueden ser usados con
-        <link linkend="zend.filter.input">
+        <classname>Zend_Validate_Interface</classname> define tres métodos,
+        isValid(), getMessages(), y getErrors(), que pueden ser implementadas
+        por clases de usuario a fin de crear objetos de validación
+        personalizados. Un objeto que implementa una interfaz
+            <classname>Zend_Validate_Interface</classname> puede añadirse a una
+        cadena de validación con
+            <methodname>Zend_Validate::addValidator()</methodname> . Tales
+        objetos también pueden ser usados con <link linkend="zend.filter.input">
             <classname>Zend_Filter_Input</classname>
-        </link>
-        .
-    </para>
+        </link> . </para>
 
-    <para>
-        De la descripción anterior de
-        <classname>Zend_Validate_Interface</classname>
-        , podrá inferir
-        que las clases de validación que proporciona Zend Framework devuelven un
+    <para> De la descripción anterior de
+            <classname>Zend_Validate_Interface</classname> , podrá inferir que
+        las clases de validación que proporciona Zend Framework devuelven un
         valor booleano para cuando un valor se valida satisfactoriamente o no.
-        También proporcionan
-        información sobre
-        <emphasis>por qué</emphasis>
-        un valor falló en la validación.
-        La disponibilidad de las razones para los fracasos de
-        validación puede ser
-        valiosa para una aplicación por diversos motivos, tales como
-        proporcionar
-        estadísticas para análisis de usabilidad.
-    </para>
-
-    <para>
-        La funcionalidad de los mensajes de validación básica de fallos están
-        implementados en
-        <classname>Zend_Validate_Abstract</classname>
-        .
-        A fin de incluir esta funcionalidad al crear una clase de validación,
-        simplemente extienda
-        <classname>Zend_Validate_Abstract</classname>
-        .
-        En la extensión de la clase deberá aplicar la lógica del método
-        <methodname>isValid()</methodname>
-        y definir las variables y plantillas de mensajes
-        que correspondan a los tipos de fallos de
-        validación que puedan suceder.
-        Si falla un valor en su test de validación, entonces
-        <methodname>isValid()</methodname>
-        deberá devolver
-        <constant>FALSE</constant>
-        .
-        Si el valor pasa su test de validación, entonces
-        <methodname>isValid()</methodname>
-        deberá devolver
-        <constant>TRUE</constant>
-        .
-    </para>
-
-    <para>
-        En general, el método
-        <methodname>isValid()</methodname>
-        no debería arrojar
-        excepciones, salvo que sea imposible determinar si el valor de entrada
-        es
-        válido o no.
-        Algunos ejemplos de casos razonables para lanzar una excepción podría ser
-        si un
-        archivo no puede abrirse, que un servidor
-        <acronym>LDAP</acronym>
-        no pudiera ser
-        contactado, o una conexión a una base de datos no estuviera disponible.
-        Estos
-        son casos en los que puede ser necesario determinar el éxito o
-        fracaso de la validación.
-    </para>
+        También proporcionan información sobre <emphasis>por qué</emphasis> un
+        valor falló en la validación. La disponibilidad de las razones para los
+        fracasos de validación puede ser valiosa para una aplicación por
+        diversos motivos, tales como proporcionar estadísticas para análisis de
+        usabilidad. </para>
+
+    <para> La funcionalidad de los mensajes de validación básica de fallos están
+        implementados en <classname>Zend_Validate_Abstract</classname> . A fin
+        de incluir esta funcionalidad al crear una clase de validación,
+        simplemente extienda <classname>Zend_Validate_Abstract</classname> . En
+        la extensión de la clase deberá aplicar la lógica del método
+            <methodname>isValid()</methodname> y definir las variables y
+        plantillas de mensajes que correspondan a los tipos de fallos de
+        validación que puedan suceder. Si falla un valor en su test de
+        validación, entonces <methodname>isValid()</methodname> deberá devolver
+            <constant>FALSE</constant> . Si el valor pasa su test de validación,
+        entonces <methodname>isValid()</methodname> deberá devolver
+            <constant>TRUE</constant> . </para>
+
+    <para> En general, el método <methodname>isValid()</methodname> no debería
+        arrojar excepciones, salvo que sea imposible determinar si el valor de
+        entrada es válido o no. Algunos ejemplos de casos razonables para lanzar
+        una excepción podría ser si un archivo no puede abrirse, que un servidor
+            <acronym>LDAP</acronym> no pudiera ser contactado, o una conexión a
+        una base de datos no estuviera disponible. Estos son casos en los que
+        puede ser necesario determinar el éxito o fracaso de la validación. </para>
 
     <example id="zend.validate.writing_validators.example.simple">
 
         <title>Crear una Clase de Validación sencilla</title>
 
-        <para>
-            El siguiente ejemplo demuestra cómo podría escribirse un sencillo
-            validador
-            personalizado.
-            En este caso las reglas de validación son simplemente que el valor
-            de
-            entrada debe ser de punto flotante.
-
-            <programlisting language="php"><![CDATA[
+        <para> El siguiente ejemplo demuestra cómo podría escribirse un sencillo
+            validador personalizado. En este caso las reglas de validación son
+            simplemente que el valor de entrada debe ser de punto flotante. <programlisting language="php"><![CDATA[
 class MyValid_Float extends Zend_Validate_Abstract
 {
     const FLOAT = 'float';
@@ -128,62 +82,46 @@ class MyValid_Float extends Zend_Validate_Abstract
         return true;
     }
 }
-]]></programlisting>
-
-            La clase define una plantilla para su único mensaje de fallo de
-            validación, que incluye
-            el mágico parámetro
-            <emphasis>%value%</emphasis>
-            .
-            La llamada a
-            <methodname>_setValue()</methodname>
-            prepara al objeto para insertar
-            automáticamente en el mensaje de fallo al valor probado,
-            si éste
-            falla en la validación.
-            La llamada a
-            <methodname>_error()</methodname>
-            sigue las pistas para establecer
-            una razón por el fracaso de la validación.
-            Dado que esta
-            clase sólo define un mensaje de fallo, no es necesario
-            darle a
-            <methodname>_error()</methodname>
-            el nombre de la plantilla del mensaje
-            de fallo.
-        </para>
+]]></programlisting> La clase define una plantilla para su único mensaje de
+            fallo de validación, que incluye el mágico parámetro
+                <emphasis>%value%</emphasis> . La llamada a
+                <methodname>_setValue()</methodname> prepara al objeto para
+            insertar automáticamente en el mensaje de fallo al valor probado, si
+            éste falla en la validación. La llamada a
+                <methodname>_error()</methodname> sigue las pistas para
+            establecer una razón por el fracaso de la validación. Dado que esta
+            clase sólo define un mensaje de fallo, no es necesario darle a
+                <methodname>_error()</methodname> el nombre de la plantilla del
+            mensaje de fallo. </para>
 
     </example>
 
     <example id="zend.validate.writing_validators.example.conditions.dependent">
 
-        <title>Escribiendo una Clase de Validación habiendo Condiciones Dependientes </title>
-        <para>
-            El siguiente ejemplo muestra un conjunto de reglas de validación
-            más complejo, donde es
-            necesario que el valor de entrada ser numérico
-            y dentro del límite de un rango de valores
-            mínimos y máximos.
-            Un valor de entrada podría fallar en la validación exactamente por una
-            de las siguientes razones:
-</para>
+        <title>Escribiendo una Clase de Validación habiendo Condiciones
+            Dependientes </title>
+        <para> El siguiente ejemplo muestra un conjunto de reglas de validación
+            más complejo, donde es necesario que el valor de entrada ser
+            numérico y dentro del límite de un rango de valores mínimos y
+            máximos. Un valor de entrada podría fallar en la validación
+            exactamente por una de las siguientes razones: </para>
 
         <itemizedlist>
             <listitem>
                 <para>El valor de entrada no es numérico.</para>
             </listitem>
             <listitem>
-                <para>El valor de entrada es menor que el valor mínimo permitido.</para>
+                <para>El valor de entrada es menor que el valor mínimo
+                    permitido.</para>
             </listitem>
             <listitem>
-                <para>El valor de entrada es mayor que el valor máximo permitido.</para>
+                <para>El valor de entrada es mayor que el valor máximo
+                    permitido.</para>
             </listitem>
         </itemizedlist>
 
-        <para>
-            Estas razones en el fallo de validación, son traducidas a las definiciones en la
-            clase:
-        </para>
+        <para> Estas razones en el fallo de validación, son traducidas a las
+            definiciones en la clase: </para>
 
         <programlisting language="php"><![CDATA[
 class MyValid_NumericBetween extends Zend_Validate_Abstract
@@ -230,64 +168,38 @@ class MyValid_NumericBetween extends Zend_Validate_Abstract
 }
 ]]></programlisting>
 
-        <para>
-            Las propiedades públicas
-            <varname>$minimum</varname>
-            y
-            <varname>$maximum</varname>
-            se han establecido para proporcionar los límites mínimo y máximo,
-            respectivamente, de un
-            valor a validar.
+        <para> Las propiedades públicas <varname>$minimum</varname> y
+                <varname>$maximum</varname> se han establecido para proporcionar
+            los límites mínimo y máximo, respectivamente, de un valor a validar.
             La clase también define dos variables de mensajes que corresponden a
-            las
-            propiedades públicas y permiten usar
-            <property>min</property>
-            y
-            <property>max</property>
-            en plantillas de mensajes como parámetros mágicos, al igual que con
-            <property>
-                value
-            </property>
-                .
-        </para>
-
-        <para>
-
-            Tenga en cuenta que si cualquiera de las comprobaciones de validación
-            falla en
-            <methodname>isValid()</methodname>
-            , ya está preparado un mensaje apropiado,
-            y el método inmediatamente devuelve
-            <constant>FALSE</constant>
-            .
-            Estas reglas de validación son por lo tanto secuencialmente dependientes.
-            Es decir, si
-            uno de los tests falla, no hay necesidad de poner a
-            prueba las posteriores reglas de
-            validación.
-            Sin embargo, esta necesidad no será el caso.
-            El siguiente ejemplo ilustra cómo
-            escribir una clase con reglas de
-            validación independientes, donde el objeto validación
-            puede devolver
+            las propiedades públicas y permiten usar <property>min</property> y
+                <property>max</property> en plantillas de mensajes como
+            parámetros mágicos, al igual que con <property> value </property> . </para>
+
+        <para> Tenga en cuenta que si cualquiera de las comprobaciones de
+            validación falla en <methodname>isValid()</methodname> , ya está
+            preparado un mensaje apropiado, y el método inmediatamente devuelve
+                <constant>FALSE</constant> . Estas reglas de validación son por
+            lo tanto secuencialmente dependientes. Es decir, si uno de los tests
+            falla, no hay necesidad de poner a prueba las posteriores reglas de
+            validación. Sin embargo, esta necesidad no será el caso. El
+            siguiente ejemplo ilustra cómo escribir una clase con reglas de
+            validación independientes, donde el objeto validación puede devolver
             múltiples razones por las cuales fracasó un intento de validación en
-            particular.
-        </para>
+            particular. </para>
 
     </example>
 
-    <example id="zend.validate.writing_validators.example.conditions.independent">
+    <example
+        id="zend.validate.writing_validators.example.conditions.independent">
 
-        <title>Validación con Condiciones Independientes, Múltiples Razones del Fracaso</title>
-        <para>
-            Considere escribir una clase de validación y control de
-            contraseñas - cuando es
-            necesario que un usuario elija una
-            contraseña que cumple determinados criterios para
-            ayudar a tener
-            cuentas de usuario seguras. Supongamos que la seguridad de la contraseña
-            aplica criterios que fuerzan a lo siguiente:
-</para>
+        <title>Validación con Condiciones Independientes, Múltiples Razones del
+            Fracaso</title>
+        <para> Considere escribir una clase de validación y control de
+            contraseñas - cuando es necesario que un usuario elija una
+            contraseña que cumple determinados criterios para ayudar a tener
+            cuentas de usuario seguras. Supongamos que la seguridad de la
+            contraseña aplica criterios que fuerzan a lo siguiente: </para>
 
         <itemizedlist>
             <listitem>
@@ -304,10 +216,7 @@ class MyValid_NumericBetween extends Zend_Validate_Abstract
             </listitem>
         </itemizedlist>
 
-        <para>
-            La siguiente clase implementa estos criterios de validación:
-
-            <programlisting language="php"><![CDATA[
+        <para> La siguiente clase implementa estos criterios de validación: <programlisting language="php"><![CDATA[
 class MyValid_PasswordStrength extends Zend_Validate_Abstract
 {
     const LENGTH = 'length';
@@ -351,34 +260,17 @@ class MyValid_PasswordStrength extends Zend_Validate_Abstract
         return $isValid;
     }
 }
-]]></programlisting>
-
-            Las cuatro pruebas de criterio en
-            <methodname>isValid()</methodname>
-            no devuelven
-            inmediatamente
-            <constant>FALSE</constant>
-            .
-            Esto permite a la clase de validación a proporcionar
-            <emphasis role="bold">todas</emphasis>
-            las razones por las que la contraseña de entrada no cumplió los requisitos
-            de validación.
-            Si, por ejemplo, un usuario ingresara el string "
-            <methodname>#$%</methodname>
-            "
-            como contraseña,
-            <methodname>isValid()</methodname>
-            causaría que los cuatro
+]]></programlisting> Las cuatro pruebas de criterio en
+                <methodname>isValid()</methodname> no devuelven inmediatamente
+                <constant>FALSE</constant> . Esto permite a la clase de
+            validación a proporcionar <emphasis role="bold">todas</emphasis> las
+            razones por las que la contraseña de entrada no cumplió los
+            requisitos de validación. Si, por ejemplo, un usuario ingresara el
+            string " <methodname>#$%</methodname> " como contraseña,
+                <methodname>isValid()</methodname> causaría que los cuatro
             mensajes de fracaso de validación sean devueltos por un llamado
-            posterior
-            a
-            <methodname>getMessages()</methodname>
-            .
-        </para>
+            posterior a <methodname>getMessages()</methodname> . </para>
 
     </example>
 
 </sect1>
-    <!--
-vim:se ts=4 sw=4 et:
--->

+ 159 - 316
documentation/manual/es/module_specs/Zend_Validate.xml

@@ -5,43 +5,28 @@
 
     <title>Introducción</title>
 
-    <para>
-        Cuando se necesita validar algún tipo de dato, el componente
-        <classname>Zend_Validate</classname>
-        ofrece un conjunto de validadores,
-        como así también un sencillo mecanismo de encadenado de
-        validaciones por el cual
-        múltiples validadores pueden aplicarse a un dato en un orden
-        definido por el usuario.
-    </para>
+    <para> Cuando se necesita validar algún tipo de dato, el componente
+            <classname>Zend_Validate</classname> ofrece un conjunto de
+        validadores, como así también un sencillo mecanismo de encadenado de
+        validaciones por el cual múltiples validadores pueden aplicarse a un
+        dato en un orden definido por el usuario. </para>
 
     <sect2 id="zend.validate.introduction.definition">
 
         <title>¿Qué es un validador?</title>
 
-        <para>
-            Un validador examina su entrada con respecto a algunos requerimientos
-            y produce un
-            resultado booleano si la entrada valida satisfactoriamente
-            con los requisitos. Si la
-            entrada no cumple los requisitos,
-            un validador también podrá proporcionar información
-            adicional
-            sobre que requisito(s) no son satisfechos.
-       </para>
+        <para> Un validador examina su entrada con respecto a algunos
+            requerimientos y produce un resultado booleano si la entrada valida
+            satisfactoriamente con los requisitos. Si la entrada no cumple los
+            requisitos, un validador también podrá proporcionar información
+            adicional sobre que requisito(s) no son satisfechos. </para>
 
-        <para>
-            Por ejemplo, una aplicación web podría requerir que un usuario ingrese
-            su nombre, de
-            entre seis y doce caracteres de longitud y
-            que sólo puede contener caracteres
-            alfanuméricos.
-            Se puede usar un validador para asegurar que los usuarios cumplan
-            estos
-            requisitos.
-            Si el nombre de usuario elegido no cumple con uno o ambos de los requisitos,
-            sería útil saber cuál de estos requisitos no se cumple.
-       </para>
+        <para> Por ejemplo, una aplicación web podría requerir que un usuario
+            ingrese su nombre, de entre seis y doce caracteres de longitud y que
+            sólo puede contener caracteres alfanuméricos. Se puede usar un
+            validador para asegurar que los usuarios cumplan estos requisitos.
+            Si el nombre de usuario elegido no cumple con uno o ambos de los
+            requisitos, sería útil saber cuál de estos requisitos no se cumple. </para>
 
     </sect2>
 
@@ -49,74 +34,41 @@
 
         <title>Uso básico de validadores</title>
 
-        <para>
-            Habiendo definido la validación de esta manera, Zend Framework nos proporciona el
-            fundamento
-            para
-            <classname>Zend_Validate_Interface</classname>
-            que define dos métodos,
-            <methodname>isValid()</methodname>
-            y
-            <methodname>getMessages()</methodname>
-            .
-            El método
-            <methodname>isValid()</methodname>
-            realiza la validación del valor,
-            devolviendo
-            <constant>TRUE</constant>
-            si y sólo si el valor pasa contra el criterio de
-            validación.
-        </para>
-
-        <para>
-            Si
-            <methodname>isValid()</methodname>
-            devuelve
-            <constant>FALSE</constant>
-            , la función
-            <methodname>getMessages()</methodname>
-            devuelve un array de mensajes explicando
-            el motivo(s) del fracaso de la validación. Las
-            claves del array son
-            strings cortos que identifican las razones por las cuales fracasó
-            la
-            validación, y los valores del array son los correspondientes mensajes
-            para ser leídos por
-            un ser humano.
-            Las claves y los valores son dependientes de la clase; cada clase de
-            validación
-            define su propio conjunto de mensajes de validación fallidas y las
-            claves
-            únicas que las identifican.
-            Cada clase tiene también una definición constante
-            que hace
-            corresponder a cada identificador con una causa del fallo
-            de validación.
-        </para>
+        <para> Habiendo definido la validación de esta manera, Zend Framework
+            nos proporciona el fundamento para
+                <classname>Zend_Validate_Interface</classname> que define dos
+            métodos, <methodname>isValid()</methodname> y
+                <methodname>getMessages()</methodname> . El método
+                <methodname>isValid()</methodname> realiza la validación del
+            valor, devolviendo <constant>TRUE</constant> si y sólo si el valor
+            pasa contra el criterio de validación. </para>
+
+        <para> Si <methodname>isValid()</methodname> devuelve
+                <constant>FALSE</constant> , la función
+                <methodname>getMessages()</methodname> devuelve un array de
+            mensajes explicando el motivo(s) del fracaso de la validación. Las
+            claves del array son strings cortos que identifican las razones por
+            las cuales fracasó la validación, y los valores del array son los
+            correspondientes mensajes para ser leídos por un ser humano. Las
+            claves y los valores son dependientes de la clase; cada clase de
+            validación define su propio conjunto de mensajes de validación
+            fallidas y las claves únicas que las identifican. Cada clase tiene
+            también una definición constante que hace corresponder a cada
+            identificador con una causa del fallo de validación. </para>
 
         <note>
-            <para>
-                El método
-                <methodname>getMessages()</methodname>
-                devuelve información del fracaso
-                de la validación sólo para la llamada más reciente a
-                <methodname>isValid()</methodname>
-                .
-                Cada llamada a
-                <methodname>isValid()</methodname>
-                borra los mensajes y errores
-                causados por una llamada anterior
-                <methodname>isValid()</methodname>
-                , porque es
-                probable que cada llamada a
-                <methodname>isValid()</methodname>
-                se refiera al valor de una entrada diferente.
-            </para>
+            <para> El método <methodname>getMessages()</methodname> devuelve
+                información del fracaso de la validación sólo para la llamada
+                más reciente a <methodname>isValid()</methodname> . Cada llamada
+                a <methodname>isValid()</methodname> borra los mensajes y
+                errores causados por una llamada anterior
+                    <methodname>isValid()</methodname> , porque es probable que
+                cada llamada a <methodname>isValid()</methodname> se refiera al
+                valor de una entrada diferente. </para>
         </note>
 
-        <para>
-            El siguiente ejemplo ilustra la validación de una dirección de e-mail:
-</para>
+        <para> El siguiente ejemplo ilustra la validación de una dirección de
+            e-mail: </para>
         <programlisting language="php"><![CDATA[
 $validator = new Zend_Validate_EmailAddress();
 
@@ -136,51 +88,31 @@ if ($validator->isValid($email)) {
 
         <title>Personalizar los mensajes</title>
 
-        <para>
-            Para validar las clases se proporciona un método
-            <methodname>setMessage()</methodname>
-            con el que se puede especificar el formato de un mensaje devuelto por
-            <methodname>getMessages()</methodname>
-            en caso de fallo de validación.
-            El primer argumento de este método es un string que contiene el mensaje
-            de error. Usted puede incluir tokens en este array que serán sustituidos
-            con datos relevantes al validador. El token
-            <emphasis>%value%</emphasis>
-            es aceptado
-            por todos los validadores, que es sustituido por el valor que pasó a
-            <methodname>isValid()</methodname>
-            . Cada clase de validación, puede dar apoyo a otros
-            tokens en base a cada caso. Por ejemplo,
-            <emphasis>%max%</emphasis>
-                es un token
-                apoyado por
-                <classname>Zend_Validate_LessThan</classname>
-                .
-                El método
-                <methodname>getMessageVariables()</methodname>
-                devuelve un array de tokens
-                variables aceptados por el validador.
-        </para>
-
-        <para>
-            El segundo argumento opcional es un string que identifica la plantilla
-            de mensajes que se
-            establecerá en caso del fracaso de la validación,
-            lo que es útil cuando una clase de
-            validación define más de una causa para
-            el fallo.
-            Si omite el segundo argumento,
-            <methodname>setMessage()</methodname>
-            asume que el
-            mensaje que especifique debe ser utilizado por la plantilla del
-            primer
-            mensaje que declaró en la clase de validación.
-            Muchas clases de validación sólo definen
-            una plantilla de mensaje de
-            error, así que no hay necesidad de especificar el cambio de
-            plantilla
-            de mensaje.
-        </para>
+        <para> Para validar las clases se proporciona un método
+                <methodname>setMessage()</methodname> con el que se puede
+            especificar el formato de un mensaje devuelto por
+                <methodname>getMessages()</methodname> en caso de fallo de
+            validación. El primer argumento de este método es un string que
+            contiene el mensaje de error. Usted puede incluir tokens en este
+            array que serán sustituidos con datos relevantes al validador. El
+            token <emphasis>%value%</emphasis> es aceptado por todos los
+            validadores, que es sustituido por el valor que pasó a
+                <methodname>isValid()</methodname> . Cada clase de validación,
+            puede dar apoyo a otros tokens en base a cada caso. Por ejemplo,
+                <emphasis>%max%</emphasis> es un token apoyado por
+                <classname>Zend_Validate_LessThan</classname> . El método
+                <methodname>getMessageVariables()</methodname> devuelve un array
+            de tokens variables aceptados por el validador. </para>
+
+        <para> El segundo argumento opcional es un string que identifica la
+            plantilla de mensajes que se establecerá en caso del fracaso de la
+            validación, lo que es útil cuando una clase de validación define más
+            de una causa para el fallo. Si omite el segundo argumento,
+                <methodname>setMessage()</methodname> asume que el mensaje que
+            especifique debe ser utilizado por la plantilla del primer mensaje
+            que declaró en la clase de validación. Muchas clases de validación
+            sólo definen una plantilla de mensaje de error, así que no hay
+            necesidad de especificar el cambio de plantilla de mensaje. </para>
 
         <para>
             <programlisting language="php"><![CDATA[
@@ -200,12 +132,9 @@ if (!$validator->isValid('word')) {
 ]]></programlisting>
         </para>
 
-        <para>
-            Puede establecer varios mensajes usando el método
-            <methodname>setMessages()</methodname>
-            .
-            Su argumento es un array que contiene pares de clave/mensaje.
-        </para>
+        <para> Puede establecer varios mensajes usando el método
+                <methodname>setMessages()</methodname> . Su argumento es un
+            array que contiene pares de clave/mensaje. </para>
 
         <programlisting language="php"><![CDATA[
 $validator = new Zend_Validate_StringLength(array('min' => 8, 'max' => 12));
@@ -218,24 +147,15 @@ $validator->setMessages( array(
 ));
 ]]></programlisting>
 
-        <para>
-            Incluso, si su aplicación requiere una mayor flexibilidad para informar
-            los fallos de
-            validación, puede acceder a las propiedades por el
-            mismo nombre, tal como los tokens de
-            mensajes apoyados por una determinada
-            clase de validación.
-            La propiedad
-            <methodname>value</methodname>
-            siempre está disponible en un validador;
-            es el valor que especificó en el argumento de
-            <methodname>isValid()</methodname>
-            .
-            En cada clase de validación se puede dar apoyo a otras propiedades
-            basándose en el
-            esquema de caso por caso.
-
-            <programlisting language="php"><![CDATA[
+        <para> Incluso, si su aplicación requiere una mayor flexibilidad para
+            informar los fallos de validación, puede acceder a las propiedades
+            por el mismo nombre, tal como los tokens de mensajes apoyados por
+            una determinada clase de validación. La propiedad
+                <methodname>value</methodname> siempre está disponible en un
+            validador; es el valor que especificó en el argumento de
+                <methodname>isValid()</methodname> . En cada clase de validación
+            se puede dar apoyo a otras propiedades basándose en el esquema de
+            caso por caso. <programlisting language="php"><![CDATA[
 $validator = new Zend_Validate_StringLength(8, 12);
 
 if (!validator->isValid('word')) {
@@ -254,97 +174,56 @@ if (!validator->isValid('word')) {
 
     <sect2 id="zend.validate.introduction.static">
 
-        <title>
-            Utilizando el método estático
-            <methodname>is()</methodname>
+        <title> Utilizando el método estático is()
         </title>
 
-        <para>
-            Si es inconveniente cargar una clase de validación y crear una
-            instancia del validador,
-            puede usar el método estático
-            <methodname>Zend_Validate::is()</methodname>
-            como un estilo alternativo de invocación.
-            El primer argumento de este método es el valor
-            de una entrada de datos
-            que usted pasaría al método
-            <methodname>isValid()</methodname>
-            .
-            El segundo argumento es un string, que corresponde al nombre base
-            de la clase de
-            validación, relativo al nombre de espacio
-            <classname>Zend_Validate</classname>
-            .
-            El método
-            <methodname>is()</methodname>
-            carga automáticamente la clase, crea una
-            instancia y aplica el método
-            <methodname>isValid()</methodname>
-            a la entrada de datos.
-
-            <programlisting language="php"><![CDATA[
+        <para> Si es inconveniente cargar una clase de validación y crear una
+            instancia del validador, puede usar el método estático
+                <methodname>Zend_Validate::is()</methodname> como un estilo
+            alternativo de invocación. El primer argumento de este método es el
+            valor de una entrada de datos que usted pasaría al método
+                <methodname>isValid()</methodname> . El segundo argumento es un
+            string, que corresponde al nombre base de la clase de validación,
+            relativo al nombre de espacio <classname>Zend_Validate</classname> .
+            El método <methodname>is()</methodname> carga automáticamente la
+            clase, crea una instancia y aplica el método
+                <methodname>isValid()</methodname> a la entrada de datos. <programlisting language="php"><![CDATA[
 if (Zend_Validate::is($email, 'EmailAddress')) {
     // Si, el email parece ser válido
 }
 ]]></programlisting>
-
         </para>
 
-        <para>
-            Si el validador lo necesita, también puede pasar un array de constructores de
-            argumentos.
-
-            <programlisting language="php"><![CDATA[
+        <para> Si el validador lo necesita, también puede pasar un array de
+            constructores de argumentos. <programlisting language="php"><![CDATA[
 if (Zend_Validate::is($value, 'Between', array('min' => 1, 'max' => 12))) {
     // Si, $value está entre 1 y 12
 }
 ]]></programlisting>
-
-        </para>
-
-        <para>
-            El método
-            <methodname>is()</methodname>
-            devuelve un valor booleano, lo mismo que
-            el método
-            <methodname>isValid()</methodname>
-            . Cuando se utiliza el método estático
-            <methodname>is()</methodname>
-            , no están disponibles los mensajes de fracaso de
-            validación.
-        </para>
-
-        <para>
-            El uso estático puede ser conveniente para invocar un validador ad-hoc
-            (hecho
-            especialmente), pero si tiene la necesidad de ejecutar el validador para múltiples
-            entradas, es más eficiente usar métodos no estáticos, creando una
-            instancia del objeto
-            validador y llamando a su método
-            <methodname>isValid()</methodname>
-            .
         </para>
 
-        <para>
-            También la clase
-            <classname>Zend_Filter_Input</classname>
-            le permite crear
-            ejemplos y ejecutar múltiples filtros y clases de validadores por
-            demanda, para procesar juegos de datos de entrada. Ver
-            <xref linkend="zend.filter.input"/>
-            .
-        </para>
+        <para> El método <methodname>is()</methodname> devuelve un valor
+            booleano, lo mismo que el método <methodname>isValid()</methodname>
+            . Cuando se utiliza el método estático <methodname>is()</methodname>
+            , no están disponibles los mensajes de fracaso de validación. </para>
+
+        <para> El uso estático puede ser conveniente para invocar un validador
+            ad-hoc (hecho especialmente), pero si tiene la necesidad de ejecutar
+            el validador para múltiples entradas, es más eficiente usar métodos
+            no estáticos, creando una instancia del objeto validador y llamando
+            a su método <methodname>isValid()</methodname> . </para>
+
+        <para> También la clase <classname>Zend_Filter_Input</classname> le
+            permite crear ejemplos y ejecutar múltiples filtros y clases de
+            validadores por demanda, para procesar juegos de datos de entrada.
+            Ver <xref linkend="zend.filter.input"/> . </para>
         <sect3 id="zend.validate.introduction.static.namespaces">
 
             <title>Namespaces</title>
 
-            <para>
-                When working with self defined validators you can give a forth parameter
-                to
-                <methodname>Zend_Validate::is()</methodname>
-                which is the namespace
-                where your validator can be found.
-            </para>
+            <para> When working with self defined validators you can give a
+                forth parameter to <methodname>Zend_Validate::is()</methodname>
+                which is the namespace where your validator can be found. </para>
 
             <programlisting language="php"><![CDATA[
 if (Zend_Validate::is($value, 'MyValidator', array('min' => 1, 'max' => 12),
@@ -354,15 +233,11 @@ if (Zend_Validate::is($value, 'MyValidator', array('min' => 1, 'max' => 12),
 ]]></programlisting>
 
             <para>
-                <classname>Zend_Validate</classname>
-                allows also to set namespaces as default.
-                This means that you can set them once in
-                your bootstrap and have not to give
-                them again for each call of
-                <methodname>Zend_Validate::is()</methodname>
-                . The
-                following code snippet is identical to the above one.
-            </para>
+                <classname>Zend_Validate</classname> allows also to set
+                namespaces as default. This means that you can set them once in
+                your bootstrap and have not to give them again for each call of
+                    <methodname>Zend_Validate::is()</methodname> . The following
+                code snippet is identical to the above one. </para>
 
             <programlisting language="php"><![CDATA[
 Zend_Validate::setDefaultNamespaces(array('FirstNamespace', 'SecondNamespace'));
@@ -375,30 +250,25 @@ if (Zend_Validate::is($value, 'OtherValidator', array('min' => 1, 'max' => 12))
 }
 ]]></programlisting>
 
-            <para>
-                For your convinience there are following methods which allow the handling of
-                namespaces:
-            </para>
+            <para> For your convinience there are following methods which allow
+                the handling of namespaces: </para>
 
             <itemizedlist>
                 <listitem>
                     <para>
                         <emphasis>
                             <methodname>Zend_Validate::getDefaultNamespaces()</methodname>
-                        </emphasis>
-                        :
-                        Returns all set default namespaces as array.
-                    </para>
+                        </emphasis> : Returns all set default namespaces as
+                        array. </para>
                 </listitem>
 
                 <listitem>
                     <para>
                         <emphasis>
                             <methodname>Zend_Validate::setDefaultNamespaces()</methodname>
-                        </emphasis>
-                        :
-                        Sets new default namespaces and overrides any previous set. It accepts
-                        either a string for a single namespace of an array for multiple namespaces.
+                        </emphasis> : Sets new default namespaces and overrides
+                        any previous set. It accepts either a string for a
+                        single namespace of an array for multiple namespaces.
                     </para>
                 </listitem>
 
@@ -406,22 +276,18 @@ if (Zend_Validate::is($value, 'OtherValidator', array('min' => 1, 'max' => 12))
                     <para>
                         <emphasis>
                             <methodname>Zend_Validate::addDefaultNamespaces()</methodname>
-                        </emphasis>
-                        :
-                        Adds additional namespaces to already set ones. It accepts either a string
-                        for a single namespace of an array for multiple namespaces.
-                    </para>
+                        </emphasis> : Adds additional namespaces to already set
+                        ones. It accepts either a string for a single namespace
+                        of an array for multiple namespaces. </para>
                 </listitem>
 
                 <listitem>
                     <para>
                         <emphasis>
                             <methodname>Zend_Validate::hasDefaultNamespaces()</methodname>
-                        </emphasis>
-                        :
-                        Returns true when one or more default namespaces are set, and false when no
-                        default namespaces are set.
-                    </para>
+                        </emphasis> : Returns true when one or more default
+                        namespaces are set, and false when no default namespaces
+                        are set. </para>
                 </listitem>
             </itemizedlist>
         </sect3>
@@ -431,17 +297,12 @@ if (Zend_Validate::is($value, 'OtherValidator', array('min' => 1, 'max' => 12))
 
         <title>Translating messages</title>
 
-        <para>
-            Validate classes provide a
-            <methodname>setTranslator()</methodname>
-            method with
-            which you can specify a instance of
-            <classname>Zend_Translate</classname>
-            which
-            will translate the messages in case of a validation failure. The
-            <methodname>getTranslator()</methodname>
-            method returns the set translator instance.
-        </para>
+        <para> Validate classes provide a
+                <methodname>setTranslator()</methodname> method with which you
+            can specify a instance of <classname>Zend_Translate</classname>
+            which will translate the messages in case of a validation failure.
+            The <methodname>getTranslator()</methodname> method returns the set
+            translator instance. </para>
 
         <programlisting language="php"><![CDATA[
 $validator = new Zend_Validate_StringLength(array('min' => 8, 'max' => 12));
@@ -454,20 +315,13 @@ $translate = new Zend_Translate(
 $validator->setTranslator($translate);
 ]]></programlisting>
 
-        <para>
-            With the static
-            <methodname>setDefaultTranslator()</methodname>
-            method you can set
-            a instance of
-            <classname>Zend_Translate</classname>
-            which will be used for all
+        <para> With the static <methodname>setDefaultTranslator()</methodname>
+            method you can set a instance of
+                <classname>Zend_Translate</classname> which will be used for all
             validation classes, and can be retrieved with
-            <methodname>getDefaultTranslator()</methodname>
-            .
-            This prevents you from setting a translator manually for all validator classes,
-            and
-            simplifies your code.
-        </para>
+                <methodname>getDefaultTranslator()</methodname> . This prevents
+            you from setting a translator manually for all validator classes,
+            and simplifies your code. </para>
 
         <programlisting language="php"><![CDATA[
 $translate = new Zend_Translate(
@@ -479,22 +333,17 @@ Zend_Validate::setDefaultTranslator($translate);
 ]]></programlisting>
 
         <note>
-            <para>
-                When you have set an application wide locale within your registry, then this
-                locale will be used as default translator.
-           </para>
+            <para> When you have set an application wide locale within your
+                registry, then this locale will be used as default translator.
+            </para>
         </note>
 
-        <para>
-            Sometimes it is necessary to disable the translator within a validator.
-            To archive this
-            you can use the
-            <methodname>setDisableTranslator()</methodname>
-            method,
-            which accepts a boolean parameter, and
-            <methodname>translatorIsDisabled()</methodname>
-            to get the set value.
-        </para>
+        <para> Sometimes it is necessary to disable the translator within a
+            validator. To archive this you can use the
+                <methodname>setDisableTranslator()</methodname> method, which
+            accepts a boolean parameter, and
+                <methodname>translatorIsDisabled()</methodname> to get the set
+            value. </para>
 
         <programlisting language="php"><![CDATA[
 $validator = new Zend_Validate_StringLength(array('min' => 8, 'max' => 12));
@@ -503,16 +352,10 @@ if (!$validator->isTranslatorDisabled()) {
 }
 ]]></programlisting>
 
-        <para>
-            It is also possible to use a translator instead of setting own messages with
-            <methodname>setMessage()</methodname>
-            . But doing so, you should keep in mind, that the
-            translator works also on messages you
-            set your own.
-        </para>
+        <para> It is also possible to use a translator instead of setting own
+            messages with <methodname>setMessage()</methodname> . But doing so,
+            you should keep in mind, that the translator works also on messages
+            you set your own. </para>
 
     </sect2>
 </sect1>
-    <!--
-vim:se ts=4 sw=4 et:
--->

Some files were not shown because too many files changed in this diff