Existen múltiples formas de realizar un sitio web en varios idiomas con Joomla.
En este artículo explico la forma nativa, es decir, sin el uso de extensiones de terceros, utilizando las herramientas que ya tenemos disponibles justo después de instalar este gestor de contenidos web.
Debemos ser conscientes que hacer un sitio web en varios idiomas supone un esfuerzo extra. No es exactamente el doble porque hay elementos comunes, como por ejemplo la plantilla, pero en cuanto a textos o contenidos sí lo es.
Si lo que queremos es que nuestro sitio se traduzca a varios idiomas con herramientas automáticas, encontraremos diversas extensiones en el JED para realizarlo. En este artículo hablo de tener un sitio en el que podremos elegir qué tipos de contenidos mostrar en cada idioma o incluso localización.
Desde el propio proceso de instalación de Joomla se puede configurar un sitio web en varios idiomas. En este vídeo Javier Gómez nos explica en cinco minutos cómo hacer la instalación de Joomla habilitando desde el principio un sitio para gestionar varios idiomas.
Pero si ya tenemos la web funcionando y queremos añadir contenidos en más de un idioma, podemos seguir cuatro los pasos que indico en este artículo:
Instalar y configurar todos idiomas necesarios del sistema y de los contenidos.
Activar y configurar el plugin de filtro por idioma.
Traducir los contenidos manteniéndolos asociados entre ellos siempre que sea posible: menús, categorías, artículos y módulos.
Activar y configurar el módulo de selección de idioma.
Instalar y configurar idiomas
Necesitamos instalar los idiomas del sistema, idiomas a los que queremos que nuestro contenido esté traducido.
Para ello vamos en el menú principal a Extensiones → Gestor de idiomas. Aquí podemos ver las traducciones de Joomla instaladas para la parte pública.
Si no están todas las que necesitamos, hay que instalarlas. Pinchando sobre el botón "Instalar idioma" obtenemos un listado de todos los disponibles oficialmente, que son más de 70. Seleccionamos los que queremos y pulsamos sobre el botón "Instalar".
Si no aparecen en el listado todos los que necesitamos es posible que Joomla todavía no esté traducido a dicho idioma. También es posible que todavía no sea una traducción oficialmente reconocida, por lo que puedes hacer una búsqueda para tratar de instalar dicho idioma como si fuese una extensión más.
Una vez instaladas todas las traducciones en las que queremos que esté disponible nuestro sitio web vamos a Extensiones → Gestor de idiomas → Contenido.
Aquí debemos dar de alta y configurar todos los idiomas necesarios a los que queremos traducir los contenidos.
Pinchando sobre el botón "Nuevo" debemos cubrir el formulario con los siguientes campos:
Título: Normalmente aquí se pone el nombre del idioma en inglés y su etiqueta entre paréntesis, por ejemplo: Spanish (es-ES), English (en-GB), French (fr-FR), Galician (gl-ES), etc.
Título nativo: Aquí el nombre del idioma en su propio lenguaje, por ejemplo: Español, English, François, Galego, etc.
Etiqueta del idioma: es la misma etiqueta que usamos en el primer campo entre paréntesis. Es la que usa el idioma cuando lo instalamos.
Código URL del idioma: es el código que se añade a la URL del sitio, por ejemplo: dominio.com/es (con SEF habilitado).
Prefijo de la imagen: es el que permite localizar el archivo de imagen de la bandera.
Hay otro campo interesante, el nombre o título del sitio en el idioma que estamos configurando, por si también hay que traducirlo.
Activar plugin de filtro por idioma
Activar el plugin "Sistema - Filtrar idiomas" (languagefilter).
Además de activarlo, tenemos varias opciones interesantes que podemos adaptar a las necesidades del sitio web:
Selección del idioma para visitantes nuevos: podemos elegir mostrar siempre el idioma predeterminado del sitio o que el sistema detecte las preferencias del navegador del visitante.
Para el primer caso, el idioma predeterminado del sitio, se elige ordenando los idiomas disponibles para el contenido.
En el segundo caso, si no se encuentra una preferencia del navegador del usuario o no coincide con ninguno de los idiomas del sitio, se establecerá el predeterminado.
Asociación de elementos: esta opción permite activar la asociación entre elementos de distintos idiomas, es decir, especificar qué contenidos son la traducción de los otros. De esta manera el sistema sabe ofrecer el contenido adecuado cuando se cambia de idioma, independientemente de la sección en la que estemos.
Eliminar el código URL del idioma: permite eliminar el sufijo del idioma predeterminado de la URL, es decir, si nuestro idioma predeterminado es el español, que no aparezca midominio.com/es, sino midominio.com a secas.
Traducir contenidos
Uno de los pasos lógicos e imprescindibles, a la vez que posiblemente más trabajosos, es la traducción del contenido. Veamos cómo se traduce cada tipo empezando con los artículos.
Artículos
Al crear un artículo tenemos la posibilidad de especificar el idioma en el que está escrito.
Cuando tenemos un artículo de contenido por cada idioma del sitio ya podemos vincularlos.
Para este proceso nos ayuda mucho el nuevo componente de gestión traducciones (disponible a partir de la versión 3.7 de Joomla).
Categorías
La traducción de las categorías normalmente se recomienda hacerla creando una categoría padre con el nombre del idioma y como subcategorías las que tendría el sitio en un solo idioma. Ejemplo:
Español
Categoría 1
Categoría 2
English
Category 1
Category 2
Estas categorías llevarían asignado el idioma que le corresponda en cada caso. Es un buen método de organización ya que es muy claro. Permite además utilizar las descripciones de las categorías en cada idioma.
Pero no tiene por qué ser estrictamente así. Aquí planteo diversas opciones.
Una muy similar es la de crear las categorías específicas para cada tipo de contenido e idioma pero sin un padre que sea el nombre del idioma. Ejemplo:
Categoría 1
Categoría 2
Category 1
Category 2
También está la opción de tener categorías en las que los artículos de diferentes idiomas encajan en cada una de ellas por temática, por ejemplo. Podría ser tal que así:
Categoría 1
Categoría 2
En este caso el idioma asignado a cada categoría sería "Todos". No cabría el tener que mostrar la descripción de cada categoría porque no se podrían traducir.
Otra opción podría ser una híbrida, es decir, tener categorías según para qué tipo de contenido e idioma.
Categoría 1
Category 1
Blog
Esta opción es muy útil si por ejemplo queremos que en nuestra categoría "Blog" se muestren los artículos en el idioma en el que fueron escritos, independientemente del idioma elegido por el navegante. Para ello se creará dicha categoría "Blog" asignándole el idioma "Todos".
De esta manera, si alguien crea un artículo para el blog y sus diferentes traducciones, a cada artículo se le asignará el idioma que corresponda. Por el contrario, si no se dispone de su traducción, se le asignará el idioma "Todos". En cualquier caso, estos artículos siempre estarán en la única categoría llamada "Blog".
Esta es una forma de publicar en el blog de una página en varios idiomas en la que los artículos no pueden ser traducidos todos o, simplemente, la traducción va a tardar un tiempo.
Ojo: este último sistema de categorización genera URLs duplicadas, por ejemplo, para un artículo de un blog en español e inglés, tendríamos las siguientes URLs con prácticamente el mismo contenido (solo cambiarían los elementos que lo rodean que puedan estar traducidos como la cabecera, los menús, el pie de página, etc.):
midominio.com/es/blog/artículo
midominio.com/en/blog/artículo
Menús
Cada idioma debe tener al menos un menú asociado.
Este menú a su vez tiene un elemento que es el principal o página de inicio. Aparece marcado con la bandera correspondiente cuando se le estable el idioma al crearlo y además se marca como página de inicio.
Debemos tener además un menú genérico con un elemento que será la página de inicio general del sitio en todos los idiomas. En realidad esta página no se muestra nunca porque lo hace la de alguno de los idiomas configurados.
Recuerda realizar las asociaciones entre elementos a los distintos idiomas. De esta manera, cuando alguien quiera ver un determinado contenido en un idioma distinto, el sistema sabrá ofrecérselo correctamente sin redirigir a la página de inicio.
Módulos
Dependiendo qué tipos de módulos usemos en nuestro sitio web pueden requerir traducción o no.
Por ejemplo, si estamos utilizando un módulo de login (sin textos añadidos), no es necesario que se cree en varios idiomas porque el sistema ya lo muestra correctamente en cada idioma. En este caso indicaríamos en la configuración del módulo que el idioma es "Todos".
Por el contrarios, si estamos utilizando un módulo del tipo HTML personalizado sí será necesario traducir sus contenidos. Aquí sí debemos indicar en la configuración del módulo en qué idioma está escrito.
De momento al menos, los módulos no se asocian.
Cambiando de idioma, módulo de selección
Para ofrecer al navegante la opción de cambiar de idioma tenemos el módulo de selección de idioma. Debemos configurarlo y activarlo.
Normalmente se ubica en la parte superior derecha del sitio por lo que deberemos asignarle una posición de la plantilla que está ubicada en esta zona.
Es posible que si tienes activada la caché te vuelvas un poco loco, desactívala mientras realizas todo este proceso.
Este módulo nos ofrece varias opciones, como por ejemplo si queremos mostrar los diferentes idiomas en una lista desplegable, como banderas, en horizontal o vertical, etc.
Aquí dejo una explicación de por qué no me parece buena idea utilizar banderas para la selección del idioma: Why flags do not represent languages.
Proceso finalizado, ahora pruebas
Durante el proceso y al terminar haremos pruebas para ver el comportamiento del sistema. Para ello nos ayuda el módulo "Language status", que podemos activar en el gestor de módulos (filtrando por administración, ya que es un módulo que se muestra únicamente en el backend de Joomla).