Share:
Subscribe and receive the latest news directly in your email.

New technologies

Internationalization in Drupal 7

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.

The first step is to install and/or activate the following Drupal 7 modules:

Explaining how to install modules is not the focus of this post. However, we have linked to the respective Drupal.org pages for each module, where you can find information about the installation process. Also, please note that you must accept the activation of modules with dependencies when prompted by the administration interface.

After installing and activating the aforementioned modules, we access, from the Drupal administration interface, to Configuration » Regional and languages » Languages. Depending on the language selected when downloading and installing Drupal, the options on this page will vary. Most commonly, only the default Drupal language, English, will be available. In that case, you must select "Add language" and add Spanish.

seleccion_idioma

After this step, Drupal is ready to be used in Spanish and English, and we must select which of these languages ​​we prefer as the default for our portal. However, even if we select Spanish as the default language, we still won't see the administration interface in Spanish. This is because we haven't yet downloaded the Spanish language pack for Drupal. We access the official page for Spanish from the Drupal internationalization system and we downloaded the package for version 7. This file is contributed to Drupal from 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: For each type of content we want to enable multilingual support, we must access its Edit form and, at the bottom, select the "Publishing Options" panel. In the "Multilingual Support" subsection, select "Enabled, with translation." From that moment on, all content of that type can be translated. How? By accessing it from the portal itself or from the Content Management interface and following the "Translate" tab.

tipos_de_contenido_multi_idioma

  • Activar la gestión de menús multi-idiomas: The menus can also be governed by the multi-language system. We access 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: For each view that we wish to manage with multi-language support, we access its editing from Estructura » Vistas. In the "Advanced" section, we use the "Field Language" criterion to filter according to the language of our interest:

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.
  • Sometimes Drupal's multilingual variable management isn't very intuitive. You have to access the administration URL in each language and update the variable's content. For example, assuming a "test" module has configuration variables, to modify them in Spanish you would have to go to http://www.domain.com/es/admin/modules/test, and to do so in English, via http://www.domain.com/en/admin/modules/test
  • 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
Tags:
Drupalinternationalization

Other news