es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eliminar % en texto traducido de Symfony

Estoy traduciendo algunos textos sobre Symfony de esta manera.

expired.password.body: 'Estimado(a) %name% %surname%,
Tu contraseña ha caducado.'

y este es el código de traducción

$email_params = [
    'name' => $user_to_change_password->getName(),
    'surname' => $user_to_change_password->getSurname()
];

$body = $this->translator->trans('expired.password.body', $email_params, 'emails');

entonces el texto se traduce y los parámetros son correctos, pero los % aún están en el texto traducido.

Estimado %foo_name% %bar_surname%

Es fácil solucionarlo con str_replace, pero creo que debo estar haciendo algo mal en la traducción.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la cadena de traducción es correcta y los parámetros se pasan correctamente al traductor. Sin embargo, el problema es que la cadena traducida todavía contiene los marcadores %. Una posible solución es utilizar dobles porcentajes %% para escapar el símbolo % en la cadena de traducción, de esta manera:

    expired.password.body: 'Estimado %%name%% %%surname%%,<br><br>Su contraseña ha expirado.'
    

    Luego, al llamar al traductor con el arreglo $email_params, la cadena traducida debe reemplazar correctamente los marcadores con los valores de parámetro correspondientes:

    $body = $this->translator->trans('expired.password.body', $email_params, 'emails');
    // $body = 'Estimado Juan Pérez,<br><br>Su contraseña ha expirado.'
    

    Usar str_replace podría funcionar, pero siempre es mejor utilizar los marcadores adecuados en las cadenas de traducción para garantizar una localización y formato adecuados en diferentes idiomas.

Comments are closed.