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ódigo | Idioma | Carga |
|---|---|---|
es | Español | eager (en el bundle principal) |
en | English | eager |
fr | Français | lazy |
de | Deutsch | lazy |
it | Italiano | lazy |
pt | Português | lazy |
ca | Català | lazy |
eu | Euskara | lazy |
gl | Galego | lazy |
es y en están incluidos en el bundle principal porque cubren ~95 % del tráfico actual. Los otros 7 idiomas se cargan en lazy chunks la primera vez que el usuario activa el widget en ese locale, manteniendo el bundle inicial bajo 65 KB gzip.
Detección y fallback
- El widget toma
config.locale/data-locale. - Si el valor no está en
SUPPORTED_LOCALES, emite unconsole.warny usaespor defecto. - Cualquier clave faltante en una traducción cae al string en inglés (
enactúa como base).
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
- Configuración —
translationsylocale. - Accesibilidad — anuncios de screen reader localizados.
- Eventos del widget — eventos del ciclo de vida.