Crear un selector de idioma en el encabezado del chat
Este tutorial explica cómo añadir un menú desplegable de selección de idioma al encabezado del chat y gestionar los cambios de idioma mediante JavaScript.
Acerca de esta tarea
Cuando un usuario selecciona un idioma, se activa una función de control para actualizar la configuración regional del chat y reflejar el idioma seleccionado en el encabezado.
Cómo funciona la selección de idiomaEl selector de idioma sigue un patrón basado en eventos:
- Se añade un menú desplegable al encabezado del chat
- Cada elemento desplegable define un
onClickcontrolador - Cuando el usuario selecciona un idioma:
- Se actualiza la configuración regional del chat
- La etiqueta del encabezado se actualiza manualmente
Debes actualizar explícitamente el texto del encabezado personalizado cuando cambie la configuración regional, o bien utilizar la showSelectedAsTitle propiedad.
Procedimiento
Resultados
Puede ampliar el manejo del lenguaje añadiendo más lógica dentro del onClick controlador, como por ejemplo:
- Cargando archivos de traducción externos
- Actualización de la configuración de idioma a nivel de página
- Persistir el idioma seleccionado en el almacenamiento local
Guion completo
Utiliza el siguiente script para aplicar el código de este tutorial a tu widget de chat:
window.wxOConfiguration = {
orchestrationID: "your-orgID_orchestrationID",
hostURL: "https://dl.watson-orchestrate.ibm.com",
rootElementID: "root",
showLauncher: false,
deploymentPlatform: "ibmcloud", // Required for IBM Cloud
crn: "your-org-crn", // Required for IBM Cloud. Learn how to get the CRN in https://cloud.ibm.com/docs/key-protect?topic=key-protect-retrieve-instance-ID&interface=ui
chatOptions: {
agentId: "your-agent-id",
agentEnvironmentId: "your-agent-env-id",
onLoad: onChatLoad
}
};
setTimeout(function () {
const script = document.createElement('script');
script.src = `${window.wxOConfiguration.hostURL}/wxochat/wxoLoader.js?embed=true`;
script.addEventListener('load', function () {
wxoLoader.init();
});
document.head.appendChild(script);
});
function onChatLoad(instance) {
const chatInstance = instance;
chatInstance.updateCustomHeaderItems([
{
id: 'language-selector',
type: 'dropdown',
text: 'English',
icon: 'language',
align: 'right',
items: [
{
id: 'en',
text: 'English',
onClick: () => handleLanguageChange(chatInstance, 'en', 'English')
},
{
id: 'es',
text: 'Español',
onClick: () => handleLanguageChange(chatInstance, 'es', 'Español')
}
]
}
]);
};
function handleLanguageChange(chatInstance, locale, label) {
chatInstance.updateLocale(locale);
chatInstance.updateCustomHeaderItems([
{
id: 'language-selector',
type: 'dropdown',
text: label,
icon: 'language',
align: 'right'
}
]);
}