James Wilson

Web developer. Drupal enthusiast. Surfer and musician. I craft bespoke websites at Bluespark.

Crear un sitio multi-idioma con Drupal 8

Esto es un guía que se puede utilizar para instalar Drupal en multiples idiomas. Fue creado originalmente para un taller de 1 hora en DrupalCamp Ecuador el 16 de Octubre de 2015 en Quito, Ecuador.

Para crear un sitio multi-idioma en Drupal 7 revisa mi post del año pasado: Los ABC de Multi-idioma en Drupal 7.

Puedes encontrar los diapositivos aquí: /slides/multilenguaje-drupal-8.html.

1. Crear un Sitio

  • Abrir una cuenta en Pantheon.io.
  • Crear un sitio en el Dashboard de Pantheon.
  • Instalar Drupal 8 RC-1.

2. Instalar Drupal

  • Selecciona español como lenguaje predeterminado.
  • Crear cuenta de Administrador.

3. Agregar idioma

  • Ingresar como Administrador.
  • Administrar > Configuración > Regional e idioma > Idiomas
    URL: admin/config/regional/language
  • Click botón: Agregar idioma y selecciona el inglés.

4. Detección y selección

Qué idioma utilizar y cuándo?

  • Administrar > Configuración > Regional e idioma > Idiomas: Detección y selección
  • Habilitar "URL" como método principal de detección.

5. Alternador de idiomas

Colocar el bloque del alternador de idiomas en la primera barra lateral del sitio.

  • Administrar > Estructura > Diseño de bloques
    URL: admin/structure/block
  • En la region de la Primera barra lateral, aplasta el botón: Colocar bloque.
  • Buscar y colocar el bloque Alternador de idioma.
  • Deshabilitar la opción: Mostrar título y cliquear Guardar el bloque.
  • Regresar al sitio para visualizar el Alternador.

6. Configurar fecha y hora

Por defecto Drupal usa mes/día/año (el format común del ingles) lo que hay que cambiar a día/mes/año.

URL: /admin/config/regional/date-time

También se recomienda crear formatos más comunes en español como:

  • Long: admin/config/regional/date-time/formats/manage/long
    "Lunes el 19 de Octubre de 2015 a las 11:15 pm"
    l \e\l j \d\e F \d\e\l Y \a \l\a\s h:g a
  • Medium: admin/config/regional/date-time/formats/manage/medium
    "Lunes 19 de Octubre 2015 - 11:15 pm"
    l j \d\e F Y - h:g a
  • Short: admin/config/regional/date-time/formats/manage/short
    "19/10/2015 - 11:15 pm"
    d/m/Y - h:i a

7. Habilitar módulos para traducción

  • Administrar > Extender
    URL: admin/modules
    • Dejar deshabilitado Configuration Translation. 1
    • Seleccionar los siguientes módulos:
      • Content Translation
      • Interface Translation (se habilita este modulo automáticamente cuando se instala Drupal en español).
  • Entender la diferencia entre traducción de Contenido y traducción de la Interfaz de usuario.
    • La interfaz del usuario
      • Son cadenas de texto traducible en el núcleo de Drupal y sus módulos.
      • localize.drupal.org: Contribuir, descargar, y actualizar las traducciones.
      • Gestionar (buscar, traducir, exportar, importar, actualizar) a través de una sola interfaz: admin/config/regional/translate
    • El contenido (o sea entidades y campos)
      • Son datos y textos almacenados dentro del contenido creado para tu sitio a través del sistema de entidades y campos en Drupal.
      • No se puede compartir ni exportar las traducciones de contenido con Drupal core.
      • No hay un solo lugar para ver todas las traducciones de contenido. La gestión se encuentra como pestaña en la configuración de cada entidad creado en tu sitio.

8. Habilitar traducción de Entidades

  • Administrar > Configuración > Regional e idioma > Content language and translation
    URL: admin/config/regional/content-language
  • Seleccionar las siguientes entidades:
    • Contenido
    • Bloque personalizado
    • Enlace de menú personalizado
    • Término de taxonomía
  • Habilitar las siguientes opciones para todas las entidades seleccionadas:
    • Traducible. (Dejar seleccionados los campos predeterminados.)
    • Muestra el selector de idioma al crear y editar paginas.
    • Idioma predeterminado: Interface text language selected for page.
  • Click botón: Guardar configuración

9. Crear página con enlace de menú y traducirlo

  • Administrar > Contenido: Agregar contenido: Página básica
    URL: node/add/page
  • Titulo: Acerca de
  • Cuerpo: Cuerpo de texto para la pagina de Acerca de.
  • Proporciona un enlace de menu en la barra lateral: Opciones del Menú
  • Click botón: Guardar y publicar
  • Click pestaña: Editar
  • Click pestaña: Translate
  • Agregar traducción para inglés.
    • Title: About us
    • Body: Body text for the About us page.
    • No tocar la traducción del menú.
  • Administrar > Estructura > Menus > Main navigation > Edit menu
    URL: admin/structure/menu/manage/main
  • Seleccionar operación: Traducir para el enlace de "Acerca de" y proporcionar una traducción al inglés: About us

10. Crear artículo con categoría e imagen y traducirlo

  • Administrar > Contenido: Agregar contenido: Página básica
    URL: node/add/article
    • Titulo: Un artículo
    • Cuerpo: Un artículo en español.
    • Etiquetas: Noticias
    • Proporcionar una imagen con texto alternativo Drupal Ocho en español.
    • Click botón: Guardar y publicar
  • Click pestaña: Editar
  • Click pestaña: Translate
  • Agregar una traducción en inglés.
    • Titulo: An article
    • Cuerpo: An article in English.
    • Deja las Etiquetas tales como están.
    • Alternative Text: Drupal Eight.

11. Traducir etiqueta 'Noticias' al inglés

  • Administrar > Estructura > Taxonomía
    Cliquear Lista de términos para el vocabulario Etiquetas.
    URL: admin/structure/taxonomy/manage/tags/overview
  • Cliquear la operación Traducir para el termino 'Noticias'.
  • Agregar una traducción en inglés: News y Guardar.
  • Regresar al sitio y busca la version en inglés del artículo para verificar que esta traducido.

12. Agregar un bloque personalizado

  • Administrar > Estructura > Diseño de bloques
    URL: admin/structure/blocks
  • Colocar bloque > Añadir bloque personalizado
    • Descripción del bloque: Un bloque lateral
    • Cuerpo: Hola! Esto es un sitio de prueba para mostrar la funcionalidad de traducción de Drupal 8.
    • Click botón: Guardar
    • Seleccionar region: Primera barra lateral
    • Click botón: Guardar el bloque
  • Regresar al sitio, encuentra el bloque en la barra lateral y haz click en la opción de Traducir.
  • Agregar una traducción en inglés:
    • Block description2: A sidebar block
    • Body: Hello! This is a test site to demonstrate the translation functionality in Drupal 8.
    • Click botón: Save

13. Personalizar y traducir el nombre del sitio y slogan

  • Abrir: admin/config/system/site-information
    • Nombre de sitio: D8 Multilenguaje
    • Lema: Instalando Drupal 8 en varias idiomas
    • Guardar configuración.
  • Habilitar el modulo Configuration Translation 3.
  • Abrir: admin/config/regional/config-translation
  • Buscar 'System information' y click Traducir.
  • Agregar traducción al inglés.
    • Site name: D8 Multilanguage
    • Slogan: Installing Drupal 8 in various languages
    • Guardar traducción.

Extras

1. Alternador de idiomas como menú desplegable

OJO: parece que esta funcionalidad está fallando en Pantheon.

  • Buscar en la página del proyecto Language Switcher Dropdown un enlace para el archivo zip del modulo para Drupal 8.
  • Copiar el enlace al portapapeles.
  • Abrir Administrar > Extender > Instalar nuevo modulo.
  • Pegar el enlace y hacer click en Instalar.

Subir el módulo descomprimido dentro de la carpeta /modules mediante SFTP o GIT (dependiendo de tu configuración en Pantheon). Ambas requiere una aplicación


Notas al pie:

1, 3. Actualmente hay un error del PHP Runtime en la gestión de tipos de contenido cuando instalas Drupal en español y habilitas el modulo de Configuration Translation. Ver Issue #2584603.

2. El campo de la Descripción del bloque tiene un problema en la traducción y por lo tanto la versión traducido del cuerpo del bloque siempre saldrá con el título en el idioma original.

Los ABC de Multi-idioma

Esto es un guía que se puede utilizar para instalar Drupal en multiples lenguajes. Fue creado originalmente para un taller de 2 horas en DrupalCamp Ecuador el 23 de Octubre de 2014 en Guayaquil, Ecuador.

Como hacer tu sitio múlti-idioma con Entity Translation en Drupal 7.

OJO: No vamos a usar Content Translation, sino Entity Translation.

Instalar Drupal

  • Poner el archivo .po en la ruta: profiles/standard/translations/
  • Instalar sitio con "Standard" profile.
  • Escoger instalación en ingles (por defecto) o bien (de preferencia) en español.

Descargar modulos

Descargar y habilitar todos los módulos que vamos a utilizar:

Core

  • Locale (ya habilitado si instalaste en español)

Fields Multilingual Multilingual - Entity Translation Multilingual - Internationalization

  • Internationalization (i18n) VERSION DEV (7.x-1.x-dev) para evitar este error.
    • Field translation (i18n_field submodule)
    • Menu translation (i18n_menu submodule)
    • Variable translation (i18n_variable submodule)
    • String translation (i18n_string submodule)

Variable

  • Variable (variable)
    • Variable Realm (variable_realm submodule)
    • Variable Store (variable_store submodule)

Configurar actualizaciones de traducciones.

  • Localization update permite descargar y actualizar traducciones del core de Drupal y otros módulos instalados
  • Debes especificar donde almacenar las traducciones descargados:

Admin » Configuración » Regional e idioma » Idiomas » Actualizaciones de traducciones

URL: admin/config/regional/language/update

Almacenar archivos descargados: sites/all/translations

Configurar la detección y selección de idioma.

Admin » Configuración » Regional e idioma » Idiomas » Detección y selección

URL: admin/config/regional/language/configure

  • Método de detección de la INTERFAZ
    • URL (prefijo de URL)
    • Navegador.
  • Método de detección del CONTENIDO

Agregar otra idioma

Por ejemplo, agrega la idioma de Frances, y configurar los prefijos de rutas:

Admin » Configuración » Regional e idioma » Idiomas

URL: admin/config/regional/language

  • En este caso usamos códigos de idioma (en, es, fr) como prefijo de ruta.
  • Se podría también configurar diferente dominios (example.com, example.es, example.fr) o sub-dominios (en.example.com, es.example.com, fr.example.com).

Configurar Fecha y Hora.

Por defecto Drupal usa mes/día/año (el format común del ingles) lo que hay que cambiar a día/mes/año.

URL: /admin/config/regional/date-time

También se recomienda que creas formatos más comunes en español como "Lunes el 20 de Octubre de 2012 a las 11:16pm"

URL: /admin/config/regional/date-time/formats Haz clic sobre: Añadir formato de fecha.

Long: l el j de F del Y a las h:ga Medium: l j de F Y - h:ga

Alternador de idioma

Admin » Estructura » Bloques

URL: /admin/structure/block

Habilita el bloque que es para Texto de la interfaz del usuario en la region del Encabezado.

Hay dos opciones:

  • Si tienes muchas idiomas, se recomienda utilizar el módulo lang_dropdown.
  • Siempre usar el bloque que es para Texto de la interfaz del usuario.

Habilitar traducción para Nodos y Taxonomía

Admin » Configuración » Regional e idioma » Entity translation

URL: admin/config/regional/entity_translation

Esconder campos que no son por traducir

Configurar traducción de campos

Habilitar el soporte multi-lenguaje con field translation en todos los tipos de contenido.

Admin » Estructura » Tipos de contenido » Articulo » Editar

URL: admin/structure/types/manage/article

Admin » Estructura » Tipos de contenido » Basic Page » Editar

URL: admin/structure/types/manage/page

Sección: Opciones de publicación

Configurar modulo Title

Habilitar traducción de los Títulos de contenido.

El campo del Titulo es un caso especial en Drupal 7. Se utiliza el modulo Title para convertir el campo en algo que se puede traducir con Entity Translation como los otros campos.

Admin » Configuración » Autoría del contenido » Opciones de título

URL: admin/config/content/title**

Reemplazar todos los campos de titulo en todos los contenidos:

Admin » Estructura » Tipos de contenido » Articulo » Gestionar Campos

URL: admin/structure/types/manage/article/fields

Reemplazar los campos del Nombre y Descripción de Taxonomía:

URL: admin/structure/taxonomy/tags/fields

Comprobar que la traducción del campo esta habilitada.

admin/structure/taxonomy/tags/fields/namefield admin/structure/taxonomy/tags/fields/descriptionfield

Traducir campos

Habilitar traducción del campo de body en todos los tipos de contenido (Article y Basic Page).

Admin » Estructura » Tipos de contenido » Articulo » Gestionar Campos

URL: admin/structure/types/manage/article/fields

Admin » Estructura » Tipos de contenido » Page » Gestionar Campos

URL: admin/structure/types/manage/page/fields

No habilita traducción para los campos: Tags e Imagen.

Crear y revisar contenido!

URL: /node/add/article

Traducir etiquetas de los Campos:

Si mostras las etiquetas de campos como "Tags:" en el Front-end, tienes que traducirles con el modulo Field Translation (i18n_field)

Admin » Estructura » Tipos de contenido » Article » Gestionar campos » Tags » Traducir

URL: admin/structure/types/manage/article/fields/field_tags/translate

¡Ahora sí!

Traducir términos:

Admin » Estructura » Taxonomía » Lista

URL: admin/structure/taxonomy/tags

Traducir variables (Site Name, Slogan, etc):

Admin » Configuración » Regional e idioma » Multilingual settings » Variables

URL: admin/config/regional/i18n/variable

Admin » Configuración » Sistema » Información del sitio

URL: admin/config/system/site-information

Menus

Escoger una metodologia para traducción de los menus.

SI: Un solo menu, con links duplicados para todas las idiomas. NO: Multiples menus, uno para cada lenguaje. Habilita i18nmenu, i18ntranslation.

Admin » Estructura » Menús » Menú principal » Editar menú

URL: admin/structure/menu/manage/main-menu/edit

Cada enlace debe tener una idioma:

Debes traducir y vincular cada enlace en cada idioma.

Bloques

Escoger una metodologia para traducir bloques:

  • Bloques con visibilidad según idioma.
    • Desventaja: duplicar bloques en cada lenguaje, poco manejable para detectar, agrupar, y sincronizar traducciones.
  • Beans con Entity Translation.
    • Ventaja: interfaz simple de traducción de cada campo, no hay bloques duplicados.
    • Desventaja: No puedes armar workflows de estados de traducción.
  • Nodos con Entity Translation.
  • Boxes con i18nboxes + i18nstring.

Views

Views no require modificación con Entity Translate, pero por defecto si un nodo no tiene traducción, se mostrará el contenido en la idioma madre (source language).

Para quitar el contenido que no ha sido traducido de tus vistas para no tener contenido mezclado, puedes usar un filtro:

Contenido: Idioma > El idioma del usuario actual

Actualizar traducciones

Admin » Configuración » Regional e idioma » Traducir interfaz » Actualizar

URL: admin/config/regional/translate/update

A veces, al habilitar un modulo, no se descarga las traducciones automáticamente. Debes actualizar las traducciones manualmente de tiempo a tiempo, para estar al día con las traducciones del interfaz, contribuido por la comunidad.

Buscar y traducir interfaz

Admin » Configuración » Regional e idioma » Traducir interfaz » Traducir

URL: admin/config/regional/translate/translate

Otros módulos

  • Localization Client (l10n_client) - Facilita traducción de cadenas de texto del interfaz en tu sitio y contribución de los mismos al localize.drupal.org
  • Transliteration - convierte caracteres UTF8 a ASCII á => a, é => e etc. Bueno para URLs y para renombrar archivos que tengan caracteres extraños.
  • Administration Language (admin_language) - Cuando uno va a traducir el contenido de un nodo, el interfaz de administración se cambia al lenguaje del destino. Usar este modulo para dejar el backend en tu lenguaje preferida.

Referencias