Ver índice de contenidos del libro

Capítulo 13. Internacionalización y localización

Cuando se desarrollan aplicaciones con soporte para varios idiomas, es fácil que la traducción de todos los contenidos, el soporte de los estándares de cada país y la traducción de la interfaz se conviertan en una pesadilla. Afortunadamente, Symfony automatiza de forma nativa todos los aspectos del proceso de internacionalización.

Como la palabra "internacionalización" es demasiado larga, los programadores normalmente se refieren a ella como i18n (18 es el número de letras que existen entre la letra "i" y la letra "n" de la palabra "internacionalización"). La "localización" normalmente se abrevia como l10n. Estas 2 palabras se refieren a 2 aspectos diferentes de las aplicaciones web multiidioma.

Una aplicación internacionalizada dispone de varias versiones de un mismo contenido en diferentes idiomas o formatos. La interfaz de una aplicación web de correo electrónico, puede ofrecer por ejemplo el mismo servicio en diferentes idiomas, cambiando solamente la interfaz.

Una aplicación localizada dispone de información diferente en función del país desde el que se accede. El caso más sencillo es el de los contenidos de un portal de noticias: si el usuario accede desde Estados Unidos, se muestran las últimas noticias de Estados Unidos, pero si el usuario accede desde Francia, se mostrarán las noticias de Francia. Por tanto, una aplicación con l10n no solo proporciona los contenidos traducidos, sino que todo el contenido puede cambiar de una versión a otra.

En cualquier caso, el soporte de i18n y l10n en una aplicación comprende los siguientes aspectos:

  • Traducción de texto (interfaz, contenidos estáticos y contenido)
  • Estándares y formatos (fechas, cantidades, números, etc.)
  • Contenido localizado (varias versiones de un mismo objeto en función del país del usuario)

En este capítulo se muestra la forma en la que Symfony trata cada uno de estos elementos y la forma en la que se pueden desarrollar aplicaciones con i18n y l10n.