Saltar al contenido principal

Internacionalización

El widget soporta 9 idiomas out of the box. El locale se selecciona con data-locale (auto-init) o config.locale.

Idiomas soportados

CódigoIdiomaCarga
esEspañoleager (en el bundle principal)
enEnglisheager
frFrançaislazy
deDeutschlazy
itItalianolazy
ptPortuguêslazy
caCatalàlazy
euEuskaralazy
glGalegolazy

es y en se incluyen en el bundle principal (widget/src/i18n/index.ts); el resto se importa dinámicamente la primera vez que se usa, manteniendo el bundle inicial bajo 65 KB gzip.

Detección y fallback

  1. El widget toma config.locale/data-locale.
  2. Si el valor no está en SUPPORTED_LOCALES, emite un console.warn y usa es por defecto.
  3. Si una clave concreta falta en el bundle del locale activo, el widget emite console.warn y devuelve la propia clave (no hay fallback automático a inglés). Las traducciones oficiales (widget/src/i18n/<locale>.ts) cubren el conjunto completo de claves; sólo te afectará si proporcionas un translations parcial mal formado.

Ejemplo

<script
src="https://cdn.neuroon.ai/widget@0.9.10/widget.js"
data-token="WIDGET_TOKEN"
data-container="#neuroon-search"
data-locale="ca"
async
></script>
window.NeuroonWidget.init({
container: '#neuroon-search',
token: 'WIDGET_TOKEN',
locale: 'eu',
})

Custom translations

Puedes sobre-escribir cualquier subconjunto de claves vía config.translations. Se mergean sobre el bundle del locale activo (deep merge):

window.NeuroonWidget.init({
container: '#neuroon-search',
token: 'WIDGET_TOKEN',
locale: 'es',
translations: {
search: {
placeholder: 'Buscar en nuestra ferretería…',
voiceButton: 'Buscar dictando',
},
results: {
empty: 'No tenemos eso. ¿Quieres que te avisemos cuando llegue?',
},
},
})

Cambiar el locale en runtime

La API JavaScript actual no expone setLocale(). Para cambiar el idioma, destruye la instancia y vuelve a montarla con el nuevo locale:

const w = window.NeuroonWidget.getInstance('#neuroon-search')
w?.destroy()
window.NeuroonWidget.init({
container: '#neuroon-search',
token: 'WIDGET_TOKEN',
locale: 'fr',
})

Próximas lecturas