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 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
- El widget toma
config.locale/data-locale. - Si el valor no está en
SUPPORTED_LOCALES, emite unconsole.warny usaespor defecto. - Si una clave concreta falta en el bundle del locale activo, el widget emite
console.warny 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 untranslationsparcial 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
- Configuración —
translationsylocale. - Accesibilidad — anuncios de screen reader localizados.
- Eventos del widget — eventos del ciclo de vida.