Entity Language Fallback
Permite a los administradores configurar una lista priorizada de idiomas de respaldo por idioma, utilizada para operaciones de visualización de entidades y upcast de entidades.
entity_language_fallback
Install
composer require 'drupal/entity_language_fallback:8.x-1.6'
Overview
El módulo Entity Language Fallback extiende las capacidades multilingües de Drupal al permitir que los administradores del sitio definan cadenas de idiomas de respaldo para cada idioma configurado. Cuando el contenido no está disponible en el idioma solicitado, el módulo recurre automáticamente a las traducciones en los idiomas de respaldo configurados, siguiendo el orden de prioridad establecido por el administrador.
Esto es particularmente útil para sitios multilingües donde no todo el contenido está traducido a todos los idiomas. En lugar de mostrar un error 404 o acceso denegado, los visitantes verán el contenido en el siguiente mejor idioma disponible según la cadena de respaldo configurada.
El módulo también proporciona una integración profunda con Search API, ofreciendo datasources y procesadores especializados que indexan contenido con reconocimiento de respaldo de idioma, asegurando que los resultados de búsqueda se completen correctamente incluso cuando las traducciones están incompletas.
Features
- Configurar cadenas de idiomas de respaldo priorizadas por idioma a través del formulario de edición de idioma
- Respaldo automático de idioma para operaciones de visualización de entidades y upcast de entidades
- Integración con el sistema de candidatos de respaldo de idioma del core de Drupal mediante hook_language_fallback_candidates_alter
- Manejo de control de acceso para entidades de respaldo que pueden tener idiomas diferentes al idioma de contenido actual
- Plugin de datasource de Search API 'Content Entity (with language fallback)' para indexar entidades con traducciones de respaldo
- Plugin de procesador de Search API 'Fallback language' que añade traducciones de respaldo a los elementos del índice de búsqueda
- Seguimiento automático de operaciones de inserción, actualización y eliminación de entidades para índices de Search API que usan datasources de respaldo
- Caché estática de cadenas de respaldo y resultados de acceso a entidades para optimización del rendimiento
Use Cases
Sitio web regional con traducciones incompletas
Una empresa multinacional tiene un sitio web en inglés, alemán, francés e italiano. No todo el contenido está traducido a todos los idiomas. Al configurar alemán para recurrir a inglés, francés para recurrir a inglés e italiano para recurrir a inglés, los visitantes en cualquier idioma verán el contenido en su idioma cuando esté disponible, o en inglés cuando no lo esté. Esto previene errores 404 y mantiene una experiencia de usuario consistente.
Familias de idiomas con contenido compartido
Un sitio web soporta múltiples variantes de español (España, México, Argentina). El contenido traducido a es-ES (Español - España) puede usarse como respaldo para es-MX y es-AR. Configure es-MX y es-AR para recurrir primero a es-ES, luego a inglés. Esto reduce la carga de trabajo de traducción mientras proporciona el contenido más relevante a cada audiencia.
Indexación de Search API con respaldo de idioma
Un sitio multilingüe usa Search API con Solr o Elasticsearch. Al añadir el datasource 'Content (with language fallback)' a su índice en lugar del datasource estándar 'Content', los resultados de búsqueda incluirán contenido de idiomas de respaldo. Un usuario español buscando contenido encontrará artículos en inglés que aún no han sido traducidos al español, indexados con metadatos de idioma español para un facetado y filtrado apropiados.
Flujo de trabajo de traducción progresiva
Una organización comienza con contenido en inglés y traduce progresivamente a otros idiomas. Usando entity language fallback, pueden lanzar en múltiples idiomas inmediatamente, con contenido en inglés mostrándose donde las traducciones aún no existen. A medida que se completan las traducciones, reemplazan automáticamente el contenido de respaldo sin ningún cambio de configuración.
Tips
- Configure idiomas de respaldo en una jerarquía lógica - por ejemplo, todos los idiomas recurriendo a su idioma predeterminado del sitio asegura máxima disponibilidad de contenido
- Al usar Search API, elija entre el plugin de datasource (entity_language_fallback) para indexación completa de respaldo o el plugin de procesador (fallback_language) para mejorar datasources existentes
- La cadena de respaldo se evalúa en orden de prioridad - coloque los idiomas más similares o preferidos primero
- La configuración de respaldo es por idioma, permitiendo diferentes cadenas de respaldo para diferentes idiomas según las preferencias de su audiencia
- Los cambios en la configuración de respaldo requieren limpieza de caché para tomar efecto en las vistas de entidades, y re-indexación para Search API
Technical Details
Admin Pages 1
/admin/config/regional/language/edit/{language}
Este módulo añade una sección 'Entity fallback language' al formulario de edición de idioma existente. Los administradores pueden configurar qué idiomas deben usarse como respaldo cuando el contenido no está disponible en el idioma seleccionado. Los respaldos se verifican en orden de prioridad.
Hooks 7
hook_language_fallback_candidates_alter
Altera los candidatos de respaldo de idioma para operaciones entity_upcast y entity_view. Este hook se integra con el sistema de respaldo de idioma del core de Drupal para inyectar los idiomas de respaldo configurados.
hook_form_language_admin_edit_form_alter
Añade la sección de configuración 'Entity fallback language' al formulario de edición de idioma, permitiendo a los administradores establecer idiomas de respaldo priorizados.
hook_entity_access
Maneja la verificación de acceso para entidades de respaldo. Asegura que se conceda el acceso apropiado cuando una entidad se muestra usando una traducción de respaldo que puede tener un idioma diferente al idioma de contenido actual.
hook_entity_insert
Rastrea nuevas entidades para índices de Search API que usan el datasource entity_language_fallback. Calcula IDs de elementos para todos los idiomas en la cadena de respaldo.
hook_entity_update
Actualiza el rastreo de Search API cuando se modifican entidades. Maneja traducciones insertadas, actualizadas y eliminadas comparando los estados de traducción antiguos y nuevos.
hook_entity_delete
Elimina entidades borradas del rastreo de Search API para índices que usan el datasource de respaldo.
hook_search_api_index_items_alter
Establece el idioma correcto en los elementos de Search API que se están indexando, usando los metadatos de idioma adjuntos por el datasource de respaldo.
Troubleshooting 3
Verificar que: 1) El tipo de entidad es traducible, 2) Los idiomas de respaldo están configurados para el idioma solicitado en admin/config/regional/language, 3) La entidad tiene una traducción en uno de los idiomas de respaldo configurados, 4) Limpiar todas las cachés después de hacer cambios de configuración.
Asegúrese de estar usando el datasource 'entity_language_fallback:*' (etiquetado 'Content (with language fallback)') en lugar del datasource estándar 'entity:*'. Re-indexe el índice de búsqueda después de cambiar datasources o la configuración de idiomas de respaldo.
El módulo incluye manejo de acceso para entidades de respaldo. Si los problemas de acceso persisten, verifique que la traducción de origen (el contenido de respaldo) tenga los permisos de acceso apropiados. El módulo verifica el acceso contra el idioma real de la entidad, no el idioma solicitado.
Security Notes 3
- El control de acceso se aplica correctamente - el módulo verifica el acceso contra el idioma real de la entidad de respaldo, no el idioma solicitado
- El módulo usa caché estática con flags preventLooping para evitar recursión infinita en verificaciones de acceso
- El rastreo de entidades para Search API respeta el flag search_api_skip_tracking para entidades que no deben ser indexadas