Cada vez con mayor frecuencia, en Soltel abordamos la necesidad de desarrollar portales basados en el CMS Drupal, que tengan soporte multi-idioma. En este post vamos a recoger un conjunto de requisitos y experiencias que hemos adquirido desarrollando portales con soporte a la internacionalización, y lo dividiremos en dos grandes bloques: cómo se prepara un portal Drupal 7 para que permita soporte multi-idioma y qué pautas consideramos como acertadas o completamente incorrectas a la hora de desarrollar un portal internacionalizado.

Antes de entrar en detalles, un aspecto de gran trascendencia: la estrategia multi-idioma. Es fundamental que los gestores de un portal que va a desarrollarse en varios idiomas, conozcan las bases del funcionamiento en Drupal del multi-idioma, para poder establecer desde el inicio del proyecto una estrategia clara, que dé soporte a sus necesidades en este campo a su plena satisfacción. El gestor del portal debe preguntarse:

  • ¿Qué idioma va a ser el idioma por defecto del portal?
  • ¿Cómo deseamos que se acceda a las diferentes versiones de idiomas de los contenidos? Es decir, ¿cómo vamos a saber en qué idioma debemos servir el contenido al usuario final? Drupal permite determinarlo a partir de diferentes posibilidades, y proporciona un mecanismo de ordenación de criterios, de tal forma que si no puede determinarlo usando el primero, pasa a intentarlo por el segundo y así sucesivamente. Los mecanismos de detección nativos son: a partir de la URL (prefijo de ruta o dominio), por un parámetro de la petición o la sesión, por lo que el usuario haya indicado en su cuenta de usuario, por el idioma del navegador o finalmente, mostrar el contenido en el idioma por defecto del portal.
  • Si los contenidos presentados a los usuarios finales van a ser los mismos en todos los idiomas o no. Es decir, tenemos varios portales que son traducciones los unos de los otros o tenemos diferentes contenidos para nuestros visitantes en función del idioma que utilicen.
  • Qué estrategia quiere seguir cuando un contenido no esté disponible en el idioma en el que el usuario está navegando: no permitirle el acceso al contenido, presentarle el contenido en el idoma por defecto, o presentarle el contenido en el idioma original del contenido.

Preparando Drupal 7 para permitir soporte multi-idioma.

El primer paso es instalar y/o activar los siguientes módulos de Drupal 7:

La explicación de la instalación de módulos no está entre los objetivos de este post. En cualquier caso, hemos enlazado a las páginas en Drupal.org de cada uno de ellos, en las que se podrá encontrar información sobre el proceso de instalación. Igualmente, indicar que se debe aceptar la activación de módulos con dependencias cuando la interfaz de administracióbn lo solicite.

Tras instalar y activar los módulos mencionados, accedemos, desde la interfaz de administración de Drupal, a Configuration » Regional and languages » Languages. En función del idioma seleccionado al descargar el paquete e instalar Drupal, las opciones variarán en esta página. Lo más habitual es disponer únicamente del idioma por defecto de Drupal, que es el inglés. En ese caso, debemos seleccionar «Add language», y añadir el idioma español.

seleccion_idioma

Tras este paso, Drupal está listo para ser usado en español e inglés, y deberemos seleccionar cuál de estos idiomas preferimos para ser usado por defecto por nuestro portal. No obstante, aun cuando seleccionemos el idioma español por defecto, aún no veremos la interfaz de administración en español. Esto es porque aún no hemos descargado el paquete de idioma español para Drupal. Accedemos a la página oficial para español del sistema de intrenacionalización de Drupal y descargamos el paquete para la versión 7. Este fichero se aporta a Drupal desde Configuration » Regional and Language » Translate Interface. Desde esta página, podemos seleccionar el fichero .po descargado e indicarle al CMS el idioma para el que estamos importando las cadenas incluidas en el fichero .po descargado.

La subsección de administración Configuración » Regional e idioma » Traducir interfaz (ahora sí, ya en español) incluye otra funcionalidad de gran interés. En la pestaña «Actualizar» podremos visualizar el estado de traducción tanto del core de Drupal como de los módulos de terceros que hayamos incorporado a nuesto portal:

estado_traducciones_modulos_core

En Drupal 7 existe la posibilidad de que las traducciones se actualicen de manera automática desde un servidor remoto (de la comunidad Drupal), además de poderlo hacer de forma manual. Se configura desde Configuración » Regional e idioma » Idiomas, destacando la alta granuralidad de configuración de este sistema.

Por último, es muy importante indicar que desde la pestaña Traducir de Configuración » Regional e idioma » Traducir interfaz Drupal expone un punto de acceso a traducir cualquier cadena de cualquier idioma (excepto el idioma inglés de la instalación original) que se cree en el sistema. Simplemente se busca la cadena a traducir, se selecciona, y se edita. ¡¡Muy importante: las cadenas son sensibles a las mayúsculas y minúsculas!!

Bien, a partir de este momento, ya tenemos traducida la interfaz de Drupal a más de un idioma. ¿Cómo podemos hacer que el usuario seleccione esos posibles idiomas? Proporcionándole acceso al bloque Selector de Idioma (Language Switcher). Esto se hace desde Estructura » Bloques. Localizamos el bloque en cuestión (estará entre los inactivos) y lo ubicamos en una de las regiones definidas en el tema que se esté usando en el portal.

Ahora los visitantes del portal pueden decidir el idioma en el que desean ver los contenidos, pero desde la interfaz de administración, aún quedan algunas acciones que ejecutar:

  • Seleccionar cómo Drupal determinará el idioma con el que Drupal mostrará los contenidos a los usuarios si éste no ha hecho una selección expresa: accedemos a Configuración » Regional e idioma » Idioma. En la pestaña «Detección y Selección» (Detection and Selection), podemos activar, desactivar y ordenar los criterios de selección a aplicar.

deteccion-seleccion-idioma

  • Configurar la estrategia multi-idioma seleccionada por el cliente: como comentamos al principio del post, es importante que los clientes determinen una estrategia clara para el soporte multi-idioma, ya que cambiarla con el portal en producción es bastante complejo. Se accede a Configuración » Regional e idioma » Multilingual Settings y, navegando por las diferentes pestañas, se personalizan las opciones.
  • Seleccionar los tipos de contenido que serán traducibles: para cada tipo de contenido que queramos someter al control del soporte multi-idioma, debemos acceder a su formulario de Edición, y en la zona inferior, seleccionar el panel de «Opciones de publicación». En la subsección de «Soporte multilenguaje», seleccionar «Habilitado, con traducción». A partir de ese momento, todos los contenidos de ese tipo podrán ser traducidos. ¿Cómo? Accediendo a él desde el propio portal o desde la interfaz de Administración de contenidos y siguiendo la pestaña «Traducir».

tipos_de_contenido_multi_idioma

  • Activar la gestión de menús multi-idiomas: los menús también pueden regirse por el sistema multi-idioma. Accedemos a Estructura » Menús y seleccionamos «Editar» en aqullos menús de nuestro interés. En la sección «Multilingual Options» activamos Traducir y Localizar (Translate and Localize). Tras hacerlo, podermos traducir cada uno de los enlaces del menú en cuestión.

menu_muti_idioma

  • Activar la gestión de vistas multi-idiomas: para cada vista que deseemos gestionar con soporte multi-idioma, accedemos a su edición desde Estructura » Vistas. En la sección «Avanzada» usamos el criterio «Field Language» para filtrar según el idioma de nuestro interés:

vista-multi-idioma

Hemos presentado el proceso genérico a seguir para dotar de soporte multi-idioma a un portal en Drupal 7. A continuación, vamos a presentar situaciones deseables o completamente desaconsejadas en la gestión de portales multi-lenguages extraídas de nuestra experiencia.

Buenas ideas / Malas ideas

  • Es muy importante configurar el idioma por defecto del portal. Normalmente viene por defecto en inglés.
  • No se debe modificar el lenguaje por defecto de un portal tras la configuración inicial. Es muy importante, cambiarlo provoca fallos muy complejos de solventar. Esto forma parte de la tarea de análisis inicial de la estrategia multi-idioma para el portal.
  • Siempre, siempre, siempre, hacer backup de la base de datos antes de instalar un fichero .po. Aunque venga del repositorio oficial de Drupal.
  • Cuando se vaya creando contenido para ser servido en diferentes idiomas, es muy importante también empezar creando el nodo en el idioma por defecto. Luego, traducir al resto de idiomas. Parece trivial y lógico, pero a veces no se hace y causa problemas.
  • A veces no resulta intuitiva la manera en que Drupal gestiona las variables multi-idioma. Hay que acceder a la URL de la administración en cada idioma y actualizar el contenido de la variable. Por ejemplo, supuesto un módulo «prueba» que tiene variables de configuración, para modificarlas en español habría que acceder a http://www.dominio.com/es/admin/modules/prueba, y para hacerlo en inglés, a través de http://www.dominio.com/en/admin/modules/prueba
  • Bloques: es preferible no hacerlos multi-idioma. Es bastante difícil de comprender para usuarios no expertos cómo se configura el soporte multi-idioma para un bloque. Usualmente es más conveniente crear un bloque en cada idioma del portal.
  • Es preferible no crear elementos de menú desde la interfaz de gestión de Vistas. De nuevo, las situaciones que se provocan actuando así son difíciles de entender y de solucionar.
T