Mensajes de error de validacion en login

406 views
Skip to first unread message

jonathan beltran

unread,
Jun 19, 2012, 3:45:05 PM6/19/12
to symfo...@googlegroups.com
Buenas otra vez estoy por estos lares mi pregunta es la siguiente como puedo colocarlos mensajes de validación que trae automaticamente Symfony2 en español? leei por ahi que era en que se cambia en parameters.ini, donde esta  locale= "en", lo cambio a "es" y guardo pero todavia sale el mensaje en ingles? Si alguno sabe pòr favor se le agradece la ayuda gracias...

Danny alfonzo Viana perez

unread,
Jun 19, 2012, 3:48:10 PM6/19/12
to symfo...@googlegroups.com
Saludos Jonathan, debes explicarnos que hiciste,(tu ruta, tu controlador y tu plantilla) y que en especifico quieres traducir para poder ayudarte. 

jonathan beltran

unread,
Jun 19, 2012, 3:59:11 PM6/19/12
to symfo...@googlegroups.com
Lo de la ruta ,controlador y plantilla, tengo un login, ya anteriormente ya existe en el controlador, en la ruta y la plantilla ya estan generadas y funcionando 100% el error ocurre cuando coloco a un usuario no logeado me sale este mensaje en rojo:"Bad credentials" , este mensaje quisiera colocarlo en el idioma español por eso en la pregunta anterior coloque lo que hice en el  parameters.ini, donde esta  locale= "en", lo cambio a "es" pero no funciono

Danny alfonzo Viana perez

unread,
Jun 20, 2012, 7:06:43 AM6/20/12
to symfo...@googlegroups.com
ok, para customizar el mensaje de error de login debes hacer lo siguiente:

  • En locale en parameters.ini es el siguiente:  locale=es 
  • En el app/config/ config.yml descomenta el servicio de traducción: 
          framework: 
              translator:      { fallback: %locale% }  
  • Crear un catalogo de traducción del inglés al español en tu Bundle ( Nombre_delBundle/Resources/translations/messages.es.xliff) 
<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
    <file source-language="en" datatype="plaintext" original="file.ext">
        <body>
            <trans-unit id="1"> 
                <source>The presented password cannot be empty.</source> 
                <target>El campo contraseña no puede estar vacío.</target> 
            </trans-unit> 
            <trans-unit id="2"> 
                <source>Bad credentials</source> 
                <target>Combinación Usuario/clave invalida</target> 
            </trans-unit> 
            <trans-unit id="3"> 
                <source>The presented password is invalid.</source> 
                <target>Combinación Usuario/clave invalida</target> 
            </trans-unit> 
        </body>
    </file>
</xliff>

  • luego en la plantilla colocas el filtro  |trans que traduce dependiendo el lenguaje que este en la variable locale y busca su traduccion en su archivo correspondiente: ejemplo, si creas traducciones para en, fr y es, los archivos deben ser tres:  messages.en.xliff,   messages.fr.xliff y   messages.es.xliff, como tu caso es solo traducir al español solo debes crear el   messages.es.xliff  
{% if error %}
<div class="info">{{ error.message|trans }}</div>
{% endif %}

NOTA: Prueba y coméntanos como te fue.

jonathan beltran

unread,
Jun 20, 2012, 10:41:43 AM6/20/12
to symfo...@googlegroups.com

Buenas otra vez estoy por aca con el tema de traducir el mensaje de error de login de un usuario el cual es el siguiente:

Method "error" for object "Symfony\Component\Security\Core\Exception\BadCredentialsException" does not exist in SistemaBundle:Default:login.html.twig at line 8


Esta es mi configuracion

1) en el parameters.ini coloque: locale="es"

2 en el app/config/ config.yml descomente el servicio de traducción: 
          framework: 
              translator:      { fallback: %locale% } 

3) Cree un archivo de traducción del inglés al español en la ruta ProyectoBundle/Resources/translations/messages.es.xliff y este es su contenido:

<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
    <file source-language="en" datatype="plaintext" original="file.ext">
        <body>
            <trans-unit id="1"> 
                <source>The presented password cannot be empty.</source> 
                <target>El campo contraseña no puede estar vacío.</target> 
            </trans-unit> 
            <trans-unit id="2"> 
                <source>Bad credentials</source> 
                <target>Combinación Usuario/clave invalida</target> 
            </trans-unit> 
            <trans-unit id="3"> 
                <source>The presented password is invalid.</source> 
                <target>Combinación Usuario/clave invalida</target> 
            </trans-unit> 
        </body>
    </file>
</xliff>

4) y en la plnstilla coloque esto:

Danny alfonzo Viana perez

unread,
Jun 20, 2012, 10:46:50 AM6/20/12
to symfo...@googlegroups.com
y si le quitas el filtro  |trans si te funciona? así como lo tenias entes de aplicar la traducción? esta muy raro.

Jakala

unread,
Jun 20, 2012, 10:47:16 AM6/20/12
to symfo...@googlegroups.com
Buenas:

prueba a hacer un debug de error, a ver que te devuelve. Parece que el objeto error no esta definido en tu plantilla. Lo estas pasando desde un controller?

por otra parte, trans es una funcion, debes acabarla con los parentesis () ya que se le puede incluir parametros (el locale, el catalogo...)

jonathan beltran

unread,
Jun 20, 2012, 11:33:59 AM6/20/12
to symfo...@googlegroups.com

Gracias Ya esta Solucionado:


Le Agregue en la plantilla el paréntesis "()" en error.message como lo indica la siguiente instrucción:
 

{% if error %}

<div class="info">{{ error.message|trans () }}</div>

{% endif %}

Guarde los Cambios y Borre la Cache y listo Mensaje de error en español Gracias nuevamente a todos lo que aportaron para solucionar este inconveniente...


Reply all
Reply to author
Forward
0 new messages