Crear un sitio web multilenguaje en Drupal 8

06/03/2019
Crear-un-sitio-web-multilenguaje-en-Drupal-8

Es posible que el proyecto en el que trabajamos requiera la adaptación de los contenidos a otros idiomas, a veces, incluso la traducción completa de la interfaz de usuario a múltiples idiomas. Esto puede llegar a ser una tarea laboriosa y pesada dependiendo de la tecnología que usemos. Drupal 8 nos lo pone muy fácil.

Por qué crear una web multilenguaje

Internet se ha globalizado rápidamente alcanzando números históricos. De hecho, el último informe realizado en Enero de 2018 muestra que el 53% de la población mundial tiene acceso a internet (4.021 millones)

Es por eso que cada vez cobra más sentido la accesibilidad web, es decir, conseguir que ese 53% consiga localizar, entrar, navegar y entender nuestra página web sin problemas. Llevar a cabo esto requiere un gran trabajo, pero uno de los factores esenciales es la traducción de nuestro site según nuestro scope (público objetivo).

Además de favorecer la accesibilidad, conseguimos un mejor posicionamiento favoreciendo el SEO de nuestro sitio web. El posicionamiento es esencial para que los buscadores sean capaz de localizar y posicionar mejor nuestro sitio.

Si ya tienes razones más que suficientes para convertir tu Drupal 8 en un sitio web multilenguaje, no esperemos más.

Módulos multilenguaje en Drupal 8

Drupal 8 trae consigo cuatro módulos que se encargarán de la traducción de contenido, configuración e interfaz de usuario y serán los que vamos a utilizar.

  • Language. Es el módulo “madre”, similar al “Locale” de Drupal 7 y es requerido por los demás módulos. Presenta que permite cambiar el idioma o añadir otros. Por defecto está desactivado, a no ser que en la instalación de Drupal seleccionemos un idioma distinto al inglés.

  • Content Translation. Es el módulo que se encarga de facilitar una interfaz en la cual podemos habilitar o deshabilitar las entidades que queramos que sean traducibles.

  • Interface Translation. Es el módulo que se encarga de traducir cadenas de la interfaz de usuario.

Configuration Translation. Es el módulo que se encarga de poder traducir diferentes elementos de configuración, como por ejemplo variables, etiquetas de campos, formatos de texto, nombres de menú, roles, etc...

Añadir multilenguaje a nuestro sitio web Drupal

Para comenzar, necesitamos descargar e instalar Drupal 8 y os explico cómo hacerlo desde cero mediante composer y drupal-project aquí

Una vez hemos completado los pasos del post junto con el setup de instalación y tengamos nuestro proyecto Drupal 8 listo y funcionando en el navegador, pasaremos al siguiente paso.

Debemos tener en cuenta que si hemos dejado como idioma por defecto el inglés, el módulo Language estará deshabilitado, por lo que tendremos que activarlo manualmente.

Para activar el módulo Language debemos ir a Extend/Ampliar y buscar el bloque “Multilingual”, en el cual podemos encontrar los 4 módulos de traducción.

Habilitar módulo language

Una vez activemos el módulo Language, podremos habilitar los demás. Esto es debido a que Language es una dependencia de los demás módulos.

Una vez instalados, iremos a Configuration > Regional and language > Languages. A continuación vamos a añadir un nuevo idioma, haciendo clic en “Add language”. Nos aparecerá un desplegable, donde debemos seleccionar el idioma que queramos añadir. En nuestro caso añadiremos el español, pero si el idioma no aparece en el listado, seleccionaremos “Custom language…”.

Language name

Si el idioma está en el listado, el sistema conectará directamente con el servidor de traducciones para descargar e importar automáticamente todas las traducciones disponibles, tanto en núcleo como en módulos contribuidos.

Como podemos observar en la imagen, Drupal 8 traduce hoy en día cerca del 100% de la interfaz completa al español gracias a la inmensa comunidad que hay detrás, contribuyendo día a día en las traducciones.

Servidor de traducciones

Sin embargo, si seleccionamos “Custom language…” debemos añadir nosotros el código del lenguaje, el nombre y la dirección en la que se presentará el texto en pantalla.

Las traducciones de Drupal se encuentran en https://localize.drupal.org/, donde la comunidad agrega periodicamente nuevas traducciones y los moderadores se encargan de revisarlas para darlas de alta en el servidor de traducciones.

Opciones de idioma

Ahora es el turno de seleccionar qué entidades serán traducibles y qué lenguaje tendrán por defecto. Esto se puede configurar desde Configuration > Regional and Language > Content language and translation.

Una vez se haya estudiado qué será traducible (esto depende de las dimensiones, tiempo y presupuesto del proyecto en gran parte), seleccionaremos el tipo de entidad y más abajo marcaremos el “Content type” como traducible. El idioma por defecto que dejaremos será el inglés, pero podemos elegir entre uno de los idiomas añadidos, el seleccionado en la interfaz, el que el autor prefiera o simplemente no especificarlo.

Ajustes de idioma personalizados

Si no seleccionamos una entidad como traducible no se nos permitirá traducirla después desde la interfaz.

Una vez hagamos clic en “Save configuration” guardaremos cambios y ya podremos traducir, en este caso, contenido y bloques personalizados.

Para comprobarlo, crearemos un contenido de tipo “Basic page” y lo traduciremos al español.

Recuerda siempre crear la entidad (content, custom block, etc) en el lenguaje por defecto para evitar incongruencias a la hora de traducir posteriormente. Puedes visualizar o cambiar el lenguaje por defecto en Configuration > Regional and Language > Languages.

inglés

En este caso se ha creado la página básica con título “Corporative image”, con un contenido lorem ipsum y arriba “English” para luego poder identificar el contenido traducido. También se ha creado el alias URL /corporative-image. Los alias URL también pueden traducirse; veremos más adelante cómo. También marcaremos la opción “Promoted to front page” en el desplegable “Promotion options” para posicionar el contenido en la página principal.

Debemos tener en cuenta que Drupal no nos traduce el contenido que generamos, por lo que debemos traducirlo nosotros mismos programáticamente o a mano desde la interfaz.Por lo tanto, traduciremos el contenido que acabamos de crear. Para ello, simplemente debemos ir a Contenido y en el desplegable de Operaciones hacer clic en “Translate”.

Opciones

A continuación podremos añadir y editar traducciones ya existentes. En este caso queremos añadir una traducción para el español, por lo que pulsaremos en el botón “Add” correspondiente al lenguaje español.

Español

Una vez terminada la traducción al español en el título, cuerpo y alias URL, guardaremos la traducción.

Las traducciones se habilitarán para todos los campos que disponga el tipo de contenido en cuestión. En el caso anterior, al ser una página básica solo dispone de título y cuerpo.

Con esto ya podemos acceder mediante la URL tanto al contenido original como al traducido, quedando así:

  • example.com/corporative-image
  • example.com/es/imagen-corporativa
Imagen corporativa

Pero claro, acceder mediante URL al contenido no es lo más efectivo. Por esto, Drupal 8 ya nos facilita un bloque por defecto para cambiar de un idioma a otro fácilmente desde la interfaz de usuario. Para posicionarlo, debemos acceder a Structure > Block layout y colocar el bloque “Language switcher” en la región, en este caso, de contenido.

Language switcher

Esto posicionará el bloque quedando de la siguiente forma: 

Corporate image

De esta manera, si accedemos al nodo del contenido en inglés (el original), haciendo clic en “Read more” o desde la URL, podemos acceder al contenido traducido directamente desde el switcher que acabamos de posicionar. Finalmente quedaría maquetarlo y darle el estilo correspondiente.

Conclusión

Drupal te da las herramientas necesarias y te facilita las cosas hasta cierto punto. Pero es importante planificar el tiempo invertido a la hora de construir un sitio web multilenguaje. Lo que está claro es que una vez llevado a cabo dispondrás de una página accesible lingüísticamente hablando y por tanto de una mayor afluencia de tráfico web.