Language Hierarchy

Permite a los usuarios configurar la herencia entre idiomas en un sitio Drupal multilingüe, habilitando cadenas automáticas de respaldo de traducción.

language_hierarchy
960 sites
29
drupal.org

Instalar

Drupal 11, 10, 9, 8 v2.0.1
composer require 'drupal/language_hierarchy:^2.0'

Overview

Language Hierarchy proporciona un potente mecanismo de respaldo para sitios Drupal multilingües. Permite a los administradores definir relaciones padre-hijo entre idiomas, creando una jerarquía donde el contenido y la configuración recurren automáticamente a los idiomas ancestros cuando las traducciones no están disponibles en una variante de idioma específica.

Este módulo es particularmente útil para sitios con variantes regionales de idiomas (por ejemplo, español de México vs. español general, alemán de Alemania vs. alemán general) donde desea compartir traducciones entre idiomas relacionados mientras permite anulaciones específicas por idioma. Cuando falta una traducción en un idioma específico como es-MX (español de México), el módulo buscará automáticamente traducciones en su idioma padre es (español), y luego continuará subiendo en la cadena según esté configurado.

El módulo se integra profundamente con el sistema de idiomas de Drupal, extendiendo los formularios de configuración del módulo Language para permitir a los administradores establecer jerarquías de idiomas a través de una interfaz visual de arrastrar y soltar. También proporciona integración con Views para filtrar y ordenar contenido por relevancia de idioma dentro de la jerarquía.

Features

  • Configurar idioma de respaldo para cada idioma a través de una estructura de árbol jerárquico con reordenamiento mediante arrastrar y soltar
  • Respaldo automático de traducción tanto para entidades de contenido como para traducciones de configuración
  • Integración con el módulo Locale del núcleo de Drupal para soporte de respaldo de traducción de cadenas
  • Plugin de filtro de Views para mostrar solo la traducción más específica para el idioma de contenido actual
  • Plugin de ordenamiento de Views para ordenar contenido por relevancia de idioma dentro de la jerarquía configurada
  • Integración con Config Translation que distingue correctamente entre traducciones directas y traducciones de respaldo heredadas
  • Corrección de URL para enlaces de entidades para evitar vincular a traducciones de respaldo al ver contenido en un idioma específico
  • Alteración de consultas para alias de ruta para respetar el orden de prioridad de la jerarquía de idiomas
  • Tabla de base de datos (language_hierarchy_priority) para rendimiento optimizado de consultas al determinar la prioridad de idioma

Use Cases

Variantes Regionales de Español

Un sitio tiene contenido en español (es), español de México (es-MX) y español de España (es-ES). Configure es-MX y es-ES para que recurran a es. Al ver el sitio en es-MX, si un contenido específico no está traducido al español mexicano, la traducción al español general se mostrará automáticamente. Esto reduce la carga de trabajo de traducción mientras permite personalizaciones regionales.

Países de Habla Alemana

Un sitio está dirigido a Alemania (de-DE), Austria (de-AT) y Suiza (de-CH), con inglés como respaldo final. Configure: de-DE → de → en, de-AT → de → en, de-CH → de → en. El contenido común en alemán se traduce una vez, con variaciones específicas por país solo donde sea necesario.

Herencia de Traducción de Configuración

La configuración del sistema como el nombre del sitio, plantillas de correo electrónico o etiquetas de campos puede traducirse una vez en un idioma padre y heredarse automáticamente por los idiomas hijos. Solo las anulaciones específicas del idioma necesitan crearse en los idiomas hijos.

Views con Listado de Contenido Consciente del Idioma

Cree una View que muestre contenido en el idioma más relevante para el usuario actual. Use el filtro 'Traducción más relevante' y el ordenamiento 'Relevancia de idioma del contenido' para mostrar primero el contenido traducido al idioma específico del usuario, recurriendo a traducciones del idioma padre, y luego al contenido neutro de idioma.

Compartir Traducción de Cadenas de Locale

Las traducciones de interfaz (cadenas t()) pueden compartirse entre variantes de idioma. Traduzca las cadenas de UI una vez en el idioma padre, y aparecerán automáticamente en todos los idiomas hijos a menos que se anulen específicamente.

Tips

  • Use la interfaz de arrastrar y soltar en la página de Idiomas para una gestión rápida de la jerarquía en lugar de editar cada idioma individualmente
  • La cadena de respaldo puede tener múltiples niveles de profundidad - por ejemplo, es-MX puede recurrir a es que recurre a en
  • Al crear Views, combine el filtro 'Traducción más relevante' con el ordenamiento 'Relevancia de idioma del contenido' para resultados óptimos
  • Establezca la opción de URL 'language_hierarchy_fallback' en TRUE cuando intencionalmente quiera vincular a una traducción de respaldo
  • El contenido neutro de idioma (und) siempre se incluye como candidato de respaldo final excepto durante operaciones locale_lookup
  • La tabla de prioridad se mantiene automáticamente - no necesita gestionarla manualmente

Technical Details

Admin Pages 2
Idiomas /admin/config/regional/language

Configure las relaciones de jerarquía de idiomas usando una interfaz de árbol jerárquico. Los idiomas pueden reordenarse y los idiomas padre pueden asignarse usando la funcionalidad de arrastrar y soltar. La tabla muestra indentación que representa la profundidad de la jerarquía, menús desplegables de selección de idioma padre e identificadores de idioma.

Editar idioma /admin/config/regional/language/edit/{language}

Edite la configuración individual del idioma incluyendo la configuración del idioma de respaldo.

Hooks 12
hook_language_fallback_candidates_alter

Construye la cadena de respaldo para un idioma recorriendo la jerarquía de idiomas. Este es el mecanismo central que proporciona funcionalidad de respaldo en todo el sistema de idiomas de Drupal.

hook_query_path_alias_language_fallback_alter

Ordena los candidatos de respaldo al consultar alias de ruta uniéndose a la tabla language_hierarchy_priority y ordenando por prioridad.

hook_query_language_hierarchy_limit_alter

Implementación compleja de subconsulta correlacionada que limita los resultados para mostrar solo las traducciones más específicas. Usado por el plugin de filtro de Views.

hook_form_language_admin_edit_form_alter

Añade el campo de selección 'Idioma de respaldo de traducción' al formulario de edición de idioma.

hook_form_language_admin_overview_form_alter

Transforma la lista plana de idiomas en un árbol jerárquico con capacidades de reordenamiento y asignación de padres mediante arrastrar y soltar.

hook_configurable_language_insert

Actualiza las prioridades de jerarquía de idiomas cuando se crea un nuevo idioma.

hook_configurable_language_update

Actualiza las prioridades de jerarquía de idiomas cuando se modifica un idioma.

hook_configurable_language_delete

Actualiza las prioridades de jerarquía de idiomas cuando se elimina un idioma.

hook_preprocess_node

Corrige las URL de nodos para que no apunten a traducciones de respaldo al ver contenido en un idioma específico.

hook_preprocess_taxonomy_term

Corrige las URL de términos de taxonomía para que no apunten a traducciones de respaldo.

hook_preprocess_image_formatter

Corrige las URL de enlaces de imágenes para que no apunten a traducciones de respaldo.

hook_preprocess_responsive_image_formatter

Corrige las URL de enlaces de imágenes responsivas para que no apunten a traducciones de respaldo.

Troubleshooting 5
Las traducciones de respaldo no aparecen

Verifique que el idioma de respaldo esté correctamente configurado en la entidad de idioma. Revise Administración > Configuración > Regional e idioma > Idiomas y asegúrese de que la columna Padre muestre el idioma padre esperado. También verifique que el idioma padre realmente tenga la traducción a la que espera recurrir.

El filtro de Views no limita a la traducción más específica

El filtro 'Traducción más relevante' solo soporta backend de consulta SQL. Asegúrese de que su View esté usando el plugin de consulta SQL. También verifique que el filtro esté habilitado (la casilla de verificación está marcada) en la configuración del filtro.

La traducción de configuración muestra editar en lugar de añadir para traducciones de respaldo

Esto debería manejarse automáticamente por la anulación del controlador del módulo. Si no funciona, asegúrese de que el módulo Config Translation esté habilitado y limpie todas las cachés. El módulo solo registra su suscriptor de rutas cuando Config Translation está habilitado.

Las traducciones de cadenas no recurren al respaldo

El respaldo de traducción de cadenas solo funciona cuando el módulo Locale está habilitado. El módulo registra dinámicamente el servicio StringDatabaseStorageDecorator solo cuando Locale está disponible. Habilite Locale y reconstruya el contenedor.

Las prioridades de idioma no se actualizan

Las prioridades de idioma se almacenan en la tabla de base de datos language_hierarchy_priority. Ejecute language_hierarchy_update_priorities() o active un guardado de entidad de idioma para recalcular. Esto sucede automáticamente en operaciones CRUD de idioma e importación de configuración.