Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Traduccion mensaje de validacion

Estas en el tema de Traduccion mensaje de validacion en el foro de Symfony en Foros del Web. Estoy traduciendo los mensajes de validacion pero tengo un problema, cuando la aplicacion esta en ingles me muestra los mensajes en dicho idio pero cuando ...
  #1 (permalink)  
Antiguo 06/09/2014, 07:33
 
Fecha de Ingreso: junio-2012
Ubicación: colombia
Mensajes: 48
Antigüedad: 6 años
Puntos: 0
Pregunta Traduccion mensaje de validacion

Estoy traduciendo los mensajes de validacion pero tengo un problema, cuando la aplicacion esta en ingles me muestra los mensajes en dicho idio pero cuando cambo la aplicacion a español no aparece el mensaje.
Asi tengo configurados los archivos:
Código XML:
Ver original
  1. //validators.es.xlf
  2. <?xml version="1.0" encoding="utf-8" ?>
  3. <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
  4.     <file source-language="es" datatype="plaintext" original="file.ext">
  5.         <body>
  6.             <trans-unit id="1">
  7.                 <source>soporte.nombre.not_blank</source>
  8.                 <target>El nombre del soporte no puede ser vacio.</target>
  9.             </trans-unit>
  10.             <trans-unit id="2">
  11.                 <source>soporte.codigo.is_integer</source>
  12.                 <target>El codigo debe ser entero</target>
  13.             </trans-unit>
  14.         </body>
  15.     </file>
  16. </xliff>
Código XML:
Ver original
  1. //validators.en.xlf
  2. <?xml version="1.0" encoding="utf-8" ?>
  3. <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
  4.     <file source-language="en" datatype="plaintext" original="file.ext">
  5.         <body>
  6.             <trans-unit id="1">
  7.                 <source>soporte.nombre.not_blank</source>
  8.                 <target>The name cannot be empty</target>
  9.             </trans-unit>
  10.             <trans-unit id="2">
  11.                 <source>soporte.price.is_integer</source>
  12.                 <target>The price should be integer</target>
  13.             </trans-unit>
  14.         </body>
  15.     </file>
  16. </xliff>
Código PHP:
Ver original
  1. //validation.yml
  2. Configuracion\ConfiguracionBundle\Entity\Tsoporte:
  3.     properties:
  4.         nombre:
  5.             - NotBlank:  { message: "soporte.nombre.not_blank" }
  6.         precio:
  7.             - NotNull: ~
  8.             - Type:
  9.                 type: integer
  10.                 message: "soporte.price.is_integer"
Como dije anteriormente, cuando la aplicacion esta en ingles muestra el mensaje respectivo en ingles, pero si la cambio en español muestra aparece el mensaje que esta entre comillas en el archivo validation.yml
  #2 (permalink)  
Antiguo 07/09/2014, 18:05
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.903
Antigüedad: 5 años
Puntos: 354
Respuesta: Traduccion mensaje de validacion

Sigue la guia del manual: http://symfony.com/doc/current/book/...raint-messages
Solo te falta colocar el archivo en Resource/translations
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 08/09/2014, 07:15
 
Fecha de Ingreso: junio-2012
Ubicación: colombia
Mensajes: 48
Antigüedad: 6 años
Puntos: 0
Respuesta: Traduccion mensaje de validacion

Ya el archivos esta en esa ruta, he seguido la guia paso a paso.
Solo traduce cuando esta en ingles.
  #4 (permalink)  
Antiguo 08/09/2014, 08:05
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.903
Antigüedad: 5 años
Puntos: 354
Respuesta: Traduccion mensaje de validacion

Si hiciste los cambios necesarios en tu config.yml ?? en especifico esta linea 3 del ejemplo:
Código yml:
Ver original
  1. framework:
  2.     #esi:             ~
  3.     translator:      { fallback: %locale% }
  4.     secret:          %secret%
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 08/09/2014, 08:30
 
Fecha de Ingreso: junio-2012
Ubicación: colombia
Mensajes: 48
Antigüedad: 6 años
Puntos: 0
Respuesta: Traduccion mensaje de validacion

Si ya la hice, asi tengo el archivo:

Código XML:
Ver original
  1. framework:
  2.     #esi:             ~
  3.     translator:      { fallback: "%locale%" }
  4.     default_locale:  "%locale%"

ya no utilizo archivos xml para la traduccion, cambie a yml:

Código XML:
Ver original
  1. /*validators.EN.yml*/
  2. soporte.nombre.not_blank: The name cannot be empty
  3. soporte.price.is_integer: The price should be integer

Código XML:
Ver original
  1. /*validators.ES.yml*/
  2. soporte.nombre.not_blank: El campo nombre no puede estar vacio
  3. soporte.price.is_integer: El precio debe ser entero

en el archivo parameters.yml tengo locale: en

y asi hago el cambio de region en el controlador:
Código PHP:
public function traducirAction($lang)
    {
           
$this->getRequest()->getSession()->set('_locale'$lang);
    } 
  #6 (permalink)  
Antiguo 08/09/2014, 10:20
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.903
Antigüedad: 5 años
Puntos: 354
Respuesta: Traduccion mensaje de validacion

Si quieres establecerlo desde la sesión necesitas implementar un listener para que lo haga de forma dinamica: http://symfony.com/doc/current/cookb...y_session.html
Y recuerda pasar el _locale en las rutas: http://symfony.com/doc/current/book/...le-and-the-url
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #7 (permalink)  
Antiguo 08/09/2014, 15:08
 
Fecha de Ingreso: junio-2012
Ubicación: colombia
Mensajes: 48
Antigüedad: 6 años
Puntos: 0
Respuesta: Traduccion mensaje de validacion

Ya lo solucioné, debia crear en la carpeta /Resource de mi bundle una carpeta llamada /translations, dentro de esa capeta puse los archivos validators.es.yml y validators.en.yml. Y el archivo validation.yml lo dejé dentro de la carpeta /Resources/config
Todo quedó asi:
Código XML:
Ver original
  1. /*validators.EN.yml*/
  2. soporte.nombre.not_blank: The name cannot be empty
  3. soporte.price.is_integer: The price should be integer
Código XML:
Ver original
  1. /*validators.ES.yml*/
  2. soporte.nombre.not_blank: El campo nombre no puede estar vacio
  3. soporte.price.is_integer: El precio debe ser entero
Código XML:
Ver original
  1. //validation.yml
  2. Configuracion\ConfiguracionBundle\Entity\Tsoporte:
  3.     properties:
  4.         nombre:
  5.             - NotBlank:  { message: "soporte.nombre.not_blank" }
  6.         precio:
  7.             - NotNull: ~
  8.             - Type:
  9.                 type: integer
  10.                 message: "soporte.price.is_integer"
Muchas gracias por estar pendiente.

Etiquetas: mensaje, traduccion, validacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:27.