Sitio web multilingüe y multisite con Drupal
Crear un sitio web multilingüe y multisite con Drupal: configuración y buenas prácticas
Drupal sigue siendo una de las plataformas más sólidas cuando un proyecto digital combina alta complejidad técnica con requisitos exigentes de gobierno de contenidos. Para organizaciones que publican en varios idiomas o que administran varios dominios desde una sola instalación, conviven dos capacidades distintas: el soporte multilingüe nativo y la arquitectura multisite. Aprovecharlas bien depende de entender en qué se diferencian, dónde se cruzan y qué errores se repiten proyecto tras proyecto.
A continuación verás cómo abordar esa configuración paso a paso, qué módulos resultan imprescindibles y qué decisiones de arquitectura separan un sistema mantenible de uno que termina convertido en deuda técnica.
Multilingüe vs. multisite: conceptos distintos con usos complementarios
Antes de tocar nada, conviene fijar la diferencia entre los dos enfoques.
Multilingüe describe una única instalación de Drupal que sirve el mismo contenido en varios idiomas. El usuario ve la misma URL base con su variante de lengua: /es/, /en/, /fr/. Nodos, bloques, configuración del sistema y taxonomías se traducen desde el mismo panel de administración.
Multisite es una característica del núcleo que permite que varias instalaciones compartan el mismo código base, cada una con su propia base de datos y su propio dominio. Resulta útil cuando se gestionan marcas distintas, unidades de negocio separadas o sitios regionales con estructuras de contenido muy divergentes.
Ambos enfoques pueden convivir: una instalación multisite donde cada sitio sea, además, multilingüe es perfectamente viable. Eso sí, cada capa añade complejidad operativa y de mantenimiento, así que combinarlas debería responder a un requisito real de negocio y no a una preferencia técnica.
Módulos necesarios para la internacionalización en Drupal
Drupal 9 y 10 traen en el núcleo los cuatro módulos que sostienen el sistema multilingüe:
Language
Es el cimiento. Añade idiomas al sitio, fija el idioma por defecto y configura la detección automática por URL, cookie, navegador o sesión.
Activar la detección por prefijo de URL (/es/, /en/) desde el primer día ahorra disgustos: facilita la indexación diferenciada en buscadores y evita conflictos con el caché de Drupal cuando se mezclan métodos de detección.
Content Translation
Habilita la traducción de nodos, términos de taxonomía y cualquier entidad que la soporte. La configuración se hace tipo a tipo: puedes activar traducción para artículos y dejarla fuera de páginas básicas si así lo pide el proyecto.
Detalle importante: al activar la traducción de contenidos toca decidir el comportamiento campo a campo. Título y cuerpo suelen ser traducibles. En cambio, un precio numérico o un identificador externo deben marcarse como compartidos entre traducciones; de lo contrario, cada idioma acaba con un valor distinto del mismo dato y la inconsistencia se cuela en informes y exportaciones.
Configuration Translation
Traduce la configuración del sistema: etiquetas de formularios, mensajes de error, nombres de vistas, bloques y menús. Es el módulo más olvidado en proyectos multilingüe, y eso explica por qué tantos sitios terminan con piezas de interfaz en el idioma por defecto cuando todo lo demás está traducido.
Interface Translation
Cubre las cadenas de la propia interfaz: los textos que pertenecen a Drupal y a sus módulos contrib, no al contenido editorial. Se conecta con el servidor público de traducciones de Drupal, así que muchas cadenas llegan ya importadas al instalar un idioma.
Configuración del sistema multilingüe paso a paso
1. Instalación y activación de idiomas
Con los cuatro módulos activos, entra en Configuración > Regional e idioma > Idiomas y añade los que necesite el proyecto. Drupal detecta si hay traducciones disponibles en el repositorio oficial y las descarga.
En producción, conviene desactivar la actualización automática de traducciones y gestionarlas de forma explícita en los despliegues. Así evitas que una actualización silenciosa de cadenas introduzca textos no revisados en un entorno público.
2. Configuración de detección de idioma
En Configuración > Regional e idioma > Detección e idioma defines el orden de los métodos. Para sitios públicos, la receta más extendida es:
- Prefijo de URL
- Idioma por defecto como fallback
Con esto consigues URLs limpias, compatibles con hreflang y sin duplicados.
3. Habilitación de traducción de tipos de contenido
Para cada tipo de contenido entras en su configuración y activas la traducción. Después, campo a campo, decides si es traducible o compartido. Regla práctica: los campos con datos estructurados (referencias, booleanos, fechas, identificadores) suelen ir compartidos; los que contienen texto orientado al lector, traducibles.
4. Traducción de menús y bloques
Los menús también son traducibles, pero piden un paso extra: cada elemento se traduce de forma manual en Estructura > Menús. Los bloques se traducen vía Configuration Translation siempre que estén configurados como configuración exportable, escenario habitual cuando se trabaja con configuración en código.
Arquitectura multisite con Drupal
Cuándo usar multisite
Multisite encaja cuando:
- Varias marcas comparten equipo técnico y se benefician de un ciclo de despliegue unificado.
- El código personalizado (módulos contrib y custom) es idéntico o muy similar en todos los sitios.
- Se quiere reducir el coste de mantenimiento aplicando un único parche de seguridad a todos los sitios a la vez.
Se descarta cuando los sitios tienen requisitos funcionales muy divergentes, equipos de desarrollo separados o necesidades de escalado opuestas. En esos casos, instalaciones independientes con un repositorio compartido para el código suelen ser más manejables que un multisite forzado.
Configuración de sites/
En una instalación multisite, cada sitio se define dentro de sites/ con su propio settings.php. La estructura básica:
sites/
default/
settings.php
ejemplo-uno.com/
settings.php
ejemplo-dos.com/
settings.php
sites.php
El fichero sites.php mapea dominios y rutas a los directorios correspondientes:
$sites['ejemplo-uno.com'] = 'ejemplo-uno.com';
$sites['ejemplo-dos.com'] = 'ejemplo-dos.com';
Cada settings.php declara su propia cadena de conexión a base de datos, su hash salt y las variables de configuración específicas de ese sitio.
Base de datos: instancias separadas o esquemas separados
Lo recomendable es asignar bases de datos separadas a cada sitio, aunque compartan servidor. Eso simplifica los backups individuales, habilita restauraciones selectivas y evita que una consulta pesada de un sitio degrade el rendimiento de los demás.
Buenas prácticas para proyectos multilingüe y multisite
Gestión de configuración en código
Drupal gestiona su configuración con CMI (Configuration Management Interface). En multisite con elementos compartidos, una estrategia que funciona consiste en exportar a código una configuración base y apoyarse en hooks de post-importación o en módulos como config_split para aplicar diferencias por entorno o por sitio.
config_split permite definir subconjuntos de configuración que solo se activan en determinados entornos o sitios. Eso resuelve el caso clásico de módulos o ajustes que deben estar presentes en producción o en un sitio concreto, pero no en el resto.
Hreflang y SEO multilingüe
Para que los buscadores indexen bien cada versión idiomática, Drupal tiene que generar etiquetas hreflang en el <head>. El módulo Metatag, combinado con la configuración del módulo Language, las produce automáticamente cuando se trabaja con prefijos de URL.
Antes del lanzamiento, comprueba que las etiquetas hreflang apuntan a URLs canónicas absolutas. Los errores más repetidos son dos: URLs relativas en lugar de absolutas y la ausencia de la variante x-default.
Caché y rendimiento
El caché de Drupal es consciente del idioma y genera entradas separadas por lengua cuando la detección está basada en URL. En instalaciones con caché externo (Redis, Memcached) toca verificar que las claves incluyen el contexto de idioma; de lo contrario, un usuario en español puede recibir la respuesta cacheada de la versión inglesa.
Flujos de traducción y gestión editorial
Cuando el volumen de contenido multilingüe crece, traducir manualmente desde el panel de Drupal deja de ser viable. El módulo TMGMT (Translation Management Tool) conecta servicios de traducción externa, humanos o automáticos, con el flujo editorial: genera trabajos, hace seguimiento del estado de cada pieza y sincroniza los resultados de vuelta al sitio.
Actualizaciones y mantenimiento
En multisite, las actualizaciones de Drupal core y de módulos contrib se aplican una sola vez al código compartido. Las migraciones de base de datos (drush updb), en cambio, se ejecutan por separado en cada sitio. Automatizar ese paso en el pipeline de CI/CD, iterando sobre la lista de sitios, evita que uno se quede con la base de datos desincronizada respecto al código desplegado.
Pruebas antes del lanzamiento
Un checklist mínimo previo al lanzamiento de un sitio multilingüe o multisite:
- Verificar que todos los tipos de contenido y campos tienen la configuración de traducción correcta.
- Comprobar que menús, bloques y vistas muestran cadenas en el idioma esperado.
- Validar las etiquetas hreflang con Google Search Console o con herramientas como hreflang.org.
- Probar el comportamiento del caché con usuarios anónimos en cada idioma.
- En multisite, revisar redirecciones de dominio y certificados SSL para cada sitio.
- Confirmar que formularios de contacto, mensajes de error y notificaciones por correo respetan el idioma del usuario.
Cómo escalar sin perder el control
Cuando un proyecto multilingüe y multisite gana volumen, los puntos de fricción se repiten: traducciones desactualizadas, inconsistencias entre la configuración de los distintos sitios y dificultad para aplicar cambios transversales de forma coordinada.
La respuesta técnica pasa por tratar la configuración como código desde el principio, automatizar despliegues con pipelines que cubran todos los sitios y establecer flujos editoriales que distingan con claridad entre contenido compartido y contenido específico de cada idioma o sitio.
Si tu organización valora una migración a Drupal o necesita apoyo técnico para diseñar una arquitectura multilingüe o multisite bien planteada, puedes hablar con el equipo de Tangram Consulting para un análisis inicial sin compromiso.
Drupal multilingüe y multisite: la arquitectura que crece contigo
Drupal escala con el proyecto cuando se configura bien desde el inicio. Combinar multilingüe y multisite no es la respuesta para todos los casos, pero en organizaciones con presencia en varios mercados o con varias marcas bajo una misma infraestructura, ofrece un equilibrio razonable entre centralización del mantenimiento y flexibilidad operativa.
Lo que marca la diferencia son las decisiones de arquitectura tomadas antes de construir: qué contenidos se traducen, cómo se gestiona la configuración por entorno, cómo se automatizan los despliegues y cómo se integran los flujos editoriales. Con esas bases definidas, Drupal aporta las herramientas para sostener proyectos digitales complejos y mantenibles en el largo plazo.