El término internacionalización (normalmente abreviado como i18n) se refiere al proceso de extraer las cadenas de texto y otros elementos que dependen de la configuración regional de tu aplicación a una capa donde se puedan traducir y convertir en función de la configuración regional del usuario (es decir, su idioma y país). En el caso de las cadenas de texto, esto significa reemplazar cada una por una función capaz de traducir el texto al idioma del usuario:
// el texto siempre se muestra en Inglés
echo 'Hello World';
// el texto se traduce al idioma del usuario
// si no está disponible, se muestra en Inglés
echo $translator->trans('Hello World');
Nota El término locale se refiere más o menos al idioma y país del usuario. Aunque su valor puede ser cualquier cadena de texto que le sirva a la aplicación para determinar el formato adecuado para ese idioma + país, se recomienda usar el formato estándar: código de idioma ISO639-1, seguido de un guión bajo (_
) y por último, el código de país ISO3166 Alpha-2 (ejemplos: fr_FR
para el francés de Francia, es_ES
para el español de España, etc.).
En este capítulo, aprenderás cómo preparar una aplicación para que soporte varios idiomas y después, cómo traducir todos sus contenidos. A grandes rasgos, estos son los pasos necesarios:
- Habilitar y configurar el componente
Translation
de Symfony. - Abstraer las cadenas de texto utilizando llamadas a una función del componente
Translation
. - Traducir los contenidos a cada uno de los idiomas soportados.
- Detectar y gestionar la configuración regional del usuario a partir de su petición y opcionalmente, mediante su sesión.