Manejar sitios a nivel global implica detalles tan importantes como micuciosos. En Sitecore XM Cloud, el fallback de idioma es una funcionalidad clave para sitios multilingües que permite mostrar contenido en otro idioma cuando no existe una versión traducida. Esto mejora la experiencia del usuario y agiliza el despliegue de sitios en nuevos idiomas sin necesidad de traducir todo de inmediato.
¿Cómo funciona el fallback?
Cuando un ítem no tiene versión en el idioma actual, Sitecore puede mostrar el contenido desde otro idioma configurado como fallback. Esto puede aplicarse a:
- Ítems completos (item-level fallback)
- Campos individuales (field-level fallback)
Configuración paso a paso
- Definir reglas de fallback entre idiomas
En/sitecore/System/Languages, cada idioma tiene un campoFallback Languagedonde defines a qué idioma debe caer si no hay contenido disponible. - Activar fallback en el entorno
En el archivo de configuraciónSitecore.Services.GraphQL.EdgeContent.config, activa:
<setting name="ExperienceEdge.EnableItemLanguageFallback" value="true"/> <setting name="ExperienceEdge.EnableFieldLanguageFallback" value="true"/>
- Habilitar fallback en ítems o plantillas
- En el Content Editor, activa
Standard Fieldsdesde la pestaña View. - En la sección Advanced del ítem o plantilla, marca
Enable Item Fallback.
- En el Content Editor, activa
- Habilitar fallback en campos específicos
En el template del campo, puedes activar:Enable field level fallbackEnable versioned field level fallback
Cuando publicas contenido, Sitecore almacena las dependencias de fallback en Edge. Si el contenido en el idioma fallback cambia, todos los ítems que dependen de él se republican automáticamente.
Recientemente experimenté un error, la serializacion fallaba cuando un item versión de idioma vacía o mal formada creí que era tema de fallback pero no fue así. se debía a que el CLI espera encontrar información válida en cada versión de idioma que detecta. Pero de ahi surgió la curiosidad de saber que exactamente hace el fallback.
Cuando haces un sitecore ser pull, el CLI inspecciona cada versión de idioma de los ítems. Si encuentra un ítem con:
- Un idioma definido, pero sin datos válidos.
- Campos que deberían existir pero están vacíos.
- Una estructura YAML que no puede formarse correctamente.
Entonces lanza errores como:
Serialized version contained a blank language value
Esto significa que el sistema intentó serializar una versión lingüística vacía.
El fallback se usa en runtime (para mostrar contenido) y no tiene efecto directo en la serialización.
Lo que tuve que hacer :
- Eliminar versiones vacías manualmente desde el Content Editor.
- Usar SPE para detectar y limpiar ítems que tengan
Language =sin campos. - Excluir esos ítems temporalmente con
rules.scope = "Ignored"mientras lograba sincronizar correctamente.