Una de las ventajas de Symfony es la facilidad de incorporar traducciones. La internacionalización es la capacidad de extraer las cadenas de texto de nuestra aplicación para que se puedan traducir de acuerdo a la configuración del idioma (locale). La palabra locale se refiere al código del idioma o país de nuestros usuarios.

En este post, usaré el sistema de traducciones en el componente de enrutamiento, para que se pueda usar de manera inmediata.

En Symfony 4 cuando definimos una ruta lo realizamos de la siguiente manera:

captura

Estamos indicando nuestra ruta raíz junto a su nombre, así mismo podemos definir tantas rutas como queramos en el controlador, por ejemplo si queremos tener una ruta llamada «Clientes».

@Route("/clientes", name="clientes")

 

Ahora imaginemos que queremos que nuestra ruta clientes se pueda traducir y que su ruta sea «clients«, o bien, como en la imagen anterior queremos tener dos rutas de raiz en idiomas diferentes.

captura

Como podéis apreciar en la imagen hemos añadido la palabra _locale que sustituye a nuestro código de idioma, ponemos por defecto nuestra ruta para que cargue en castellano pero que también se pueda cambiar al idioma ingles.

Asimismo si queremos tener dos rutas en raíz «/» con diferente idioma simplemente dejaríamos el /{_locale}/

 

 

Configurando el fichero translation.yml

El siguiente paso para aplicar la internacionalización es configurar el fichero translation.yml situado en config/packages. En este fichero lo único que tenemos que hacer es introducir nuestros idiomas (locales) en el selector fallbacks, tal y como se muestra en el siguiente código.

framework:
    default_locale: '%locale%'
    translator:
        paths:
            - '%kernel.project_dir%/translations'
        fallbacks: ['es','en']

Creando los archivos de traducciones

Para crear los archivos de traducciones tendremos que ir al directorio translations situado en la raíz del proyecto, este directorio albergará nuestros archivos de traducción, uno por cada idioma.

captura

Como podéis observar los archivos deben de tener la extensión .yaml además de indicar el idioma o locale que tratará el archivo.

 

En  cada archivo iremos introduciendo nuestra traducciones, la forma correcta de introducirlas es key:traducción donde key sería el nombre asociado a la traducción. Por ejemplo:

messages.es.yaml

Symfony is great: Symfony es lo mejor

messages.en.yaml

Symfony is great: Symfony is the best

Mostrando las traducciones

Por último para aplicar las traducciones simplemente tendremos que ir a al archivo twig, de nuestro controlador. En el archivo tendremos que agregar lo siguiente:

{% trans %}Symfony is great{% endtrans %}

Esto índica a twig que dependiendo del locale busque en el fichero de traducciones la traducción para el valor asoativo «Symfony is great».

¿Prefieres que te echemos un cable?

A veces, ciertas cosas pueden sonar a chino. Estaremos encantados de conocer tu proyecto para darte una solución personalizada.

¡Contáctanos!

¿Te has quedado con ganas de más?

Echa un vistazo a otros posts del blog. ¡Nos esforzamos por crear contenido útil para ti!

¡Ver posts!

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *