Saltar al contenido principal

Traducciones

El widget soporta múltiples idiomas y permite personalizar cualquier texto. Incluye ~220 strings traducibles organizadas en 18 categorías.

Idiomas disponibles

  • es - Español (por defecto)
  • en - English
<script data-locale="es" ...></script>
NeuroonWidget.init({
locale: 'es', // o 'en'
});

Estructura de traducciones

El widget organiza las traducciones en 18 categorías:

interface Translations {
search: SearchTranslations; // Campo de búsqueda (18 keys)
results: ResultsTranslations; // Lista de resultados (19 keys)
product: ProductTranslations; // Tarjetas de producto (11 keys)
filters: FiltersTranslations; // Panel de filtros (53 keys)
suggestions: SuggestionsTranslations; // Sugerencias (10 keys)
modal: ModalTranslations; // Modales (2 keys)
voice: VoiceTranslations; // Búsqueda por voz (10 keys)
image: ImageTranslations; // Búsqueda por imagen (21 keys)
common: CommonTranslations; // Textos comunes (6 keys)
conversation: ConversationTranslations; // Historial (1 key)
empty: EmptyTranslations; // Estados vacíos (12 keys)
topProducts: TopProductsTranslations; // Productos destacados (5 keys)
comparison: ComparisonTranslations; // Comparador (18 keys)
ai: AITranslations; // Asistente IA (11 keys)
products: ProductsTranslations; // Estado productos (2 keys)
branding: BrandingTranslations; // Marca (1 key)
tooltip: TooltipTranslations; // Tooltips (3 keys)
errors: ErrorsTranslations; // Mensajes de error (18 keys)
}

search - Búsqueda

Textos del campo de búsqueda y overlay de chat.

interface SearchTranslations {
placeholder: string; // "¿Qué estás buscando?"
clear: string; // "Limpiar"
loading: string; // "Cargando..."
submit: string; // "Buscar"
voice: string; // "Búsqueda por voz"
voiceReplace: string; // "Reemplazar con voz"
image: string; // "Búsqueda por imagen"
ghostTextHint: string; // "Tab para completar"
emptyStateTitle: string; // "¿Qué estás buscando?"
emptyStateDescription: string; // "Escribe o usa voz/imagen"
voiceButton: string; // "Buscar con voz"
imageButton: string; // "Buscar con imagen"
chatPlaceholder: string; // "Escribe tu búsqueda..."
openChat: string; // "Abrir chat"
close: string; // "Cerrar"
inputAriaLabel: string; // "Campo de búsqueda"
}

results - Resultados

Textos de la lista de resultados.

interface ResultsTranslations {
empty: string; // "No hay resultados"
emptyHint: string; // "Prueba con otros términos"
error: string; // "Error al buscar"
errorRetry: string; // "Reintentar"
showing: string; // "Mostrando"
of: string; // "de"
resultsFor: string; // "resultados para"
viewGrid: string; // "Ver cuadrícula"
viewList: string; // "Ver lista"
loadMore: string; // "Cargar más"
loading: string; // "Cargando..."
products: string; // "productos"
viewAll: string; // "Ver todos"
endOfResults: string; // "Fin de resultados"
searchResults: string; // "Resultados de búsqueda"
singular: string; // "resultado"
plural: string; // "resultados"
productFoundSingular: string; // "producto encontrado"
productFoundPlural: string; // "productos encontrados"
}

product - Producto

Textos de las tarjetas de producto.

interface ProductTranslations {
outOfStock: string; // "Agotado"
inStock: string; // "Disponible"
onSale: string; // "En oferta"
discount: string; // "{percent}% dto."
viewInStore: string; // "Ver en tienda"
viewProduct: string; // "Ver producto"
quickView: string; // "Vista rápida"
relevance: string; // "Relevancia"
price: string; // "Precio"
brand: string; // "Marca"
category: string; // "Categoría"
}

filters - Filtros

Textos del panel de filtros (la categoría más grande con 53 keys).

interface FiltersTranslations {
// Básicos
title: string; // "Filtros"
refine: string; // "Refinar"
price: string; // "Precio"
priceMin: string; // "Mín"
priceMax: string; // "Máx"
category: string; // "Categoría"
brand: string; // "Marca"
inStock: string; // "En stock"
inStockOnly: string; // "Solo disponibles"
onSale: string; // "En oferta"
clear: string; // "Limpiar"
clearAll: string; // "Limpiar todo"
apply: string; // "Aplicar"
showMore: string; // "Ver más"
showLess: string; // "Ver menos"
active: string; // "Activo"
applied: string; // "Aplicado"
remove: string; // "Quitar"
other: string; // "Otros"
more: string; // "Más"
close: string; // "Cerrar"
recommended: string; // "Recomendado"
viewResults: string; // "Ver resultados"

// Sugerencias IA
aiSuggestions: string; // "Sugerencias IA"
confidence: string; // "Confianza"
productsMatch: string; // "productos coinciden"

// Fuentes de detección
sourceQuery: string; // "Del query"
sourceTrending: string; // "Tendencia"
sourceIntent: string; // "Intención"

// Precio (quick picks)
priceBudget: string; // "Económico"
pricePopular: string; // "Popular"
pricePremium: string; // "Premium"
priceUpTo: string; // "Hasta"
priceFrom: string; // "Desde"
priceMedian: string; // "Mediana"
priceDistribution: string; // "Distribución"

// Toast/undo
filterRemoved: string; // "Filtro eliminado"
undo: string; // "Deshacer"

// Estados vacíos
noFiltersApplied: string; // "Sin filtros"
removeFiltersHint: string; // "Quita filtros para ver más"

// UI adicional
quickFilters: string; // "Filtros rápidos"
filterBy: string; // "Filtrar por"
recommendedByAI: string; // "Recomendado por IA"
tryWith: string; // "Prueba con"
viewMore: string; // "Ver más"
searchFacets: string; // "Facetas de búsqueda"

// Anuncios screen reader
filtersAndSuggestions: string; // "Filtros y sugerencias"
filterAppliedSingular: string; // "filtro aplicado"
filterAppliedPlural: string; // "filtros aplicados"
suggestionAvailableSingular: string; // "sugerencia disponible"
suggestionAvailablePlural: string; // "sugerencias disponibles"
loadingFilters: string; // "Cargando filtros"

// SmartHeader UI
singular: string; // "filtro"
plural: string; // "filtros"
hideOptions: string; // "Ocultar opciones"
showOptions: string; // "Mostrar opciones"
appliedLabel: string; // "Aplicados"
suggestionsLabel: string; // "Sugerencias"
pricePercentile: string; // "Percentil precio"

// Ordenación
sortBy: string; // "Ordenar por"
sort: {
relevance: string; // "Relevancia"
price_asc: string; // "Precio: menor a mayor"
price_desc: string; // "Precio: mayor a menor"
rating: string; // "Mejor valorados"
newest: string; // "Más recientes"
}
}

suggestions - Sugerencias

Textos del dropdown de sugerencias.

interface SuggestionsTranslations {
queries: string; // "Búsquedas"
categories: string; // "Categorías"
brands: string; // "Marcas"
products: string; // "Productos"
searchCount: string; // "búsquedas"
productCount: string; // "productos"
refine: string; // "Refinar búsqueda"
alsoTry: string; // "También prueba"
showMore: string; // "Ver más"
title: string; // "Sugerencias"
prefix: string; // "Buscar:"
}

Textos genéricos de modales.

interface ModalTranslations {
close: string; // "Cerrar"
description: string; // "Descripción del modal"
}

voice - Búsqueda por voz

Textos de la interfaz de voz.

interface VoiceTranslations {
noAudioDetected: string; // "No se detectó audio"
noVoiceDetected: string; // "No se detectó voz"
submit: string; // "Buscar"
audioProcessError: string; // "Error procesando audio"
recordingError: string; // "Error de grabación"
microphonePermissionDenied: string; // "Permiso de micrófono denegado"
microphoneAccessFailed: string; // "No se pudo acceder al micrófono"
microphoneBlockedByPolicy: string; // "Micrófono bloqueado por política"
browserNotSupported: string; // "Navegador no soportado"
tapToSend: string; // "Toca para enviar"
}

image - Búsqueda por imagen

Textos de la interfaz de imagen.

interface ImageTranslations {
cancel: string; // "Cancelar"
analyze: string; // "Analizar"
uploading: string; // "Subiendo..."
analyzing: string; // "Analizando..."
analyzingImage: string; // "Analizando imagen"
identifyingProducts: string; // "Identificando productos"
selectedImage: string; // "Imagen seleccionada"
removeImage: string; // "Quitar imagen"
search: string; // "Buscar"
unsupportedFormat: string; // "Formato no soportado"
fileTooLarge: string; // "Archivo muy grande"
dragHere: string; // "Arrastra aquí"
orClickSelect: string; // "o haz clic para seleccionar"
uploadFile: string; // "Subir archivo"
useCamera: string; // "Usar cámara"
supportedFormats: string; // "Formatos: JPG, PNG, WebP"
dropHere: string; // "Suelta aquí"
aiGeneratedQuery: string; // "Búsqueda generada por IA"
uploadHint: string; // "Sube una imagen del producto"
analysisError: string; // "Error al analizar"
}

common - Textos comunes

Textos reutilizados en varios lugares.

interface CommonTranslations {
loading: string; // "Cargando..."
retry: string; // "Reintentar"
noResults: string; // "Sin resultados"
searching: string; // "Buscando..."
cancel: string; // "Cancelar"
error: string; // "Error"
}

conversation - Historial

Textos del historial de conversación.

interface ConversationTranslations {
history: string; // "Historial"
}

empty - Estados vacíos

Textos para estados sin datos (estructura anidada).

interface EmptyTranslations {
initial: {
title: string; // "¿Qué estás buscando?"
description: string; // "Escribe para comenzar"
}
noResults: {
title: string; // "Sin resultados"
titleWithQuery: string; // "Sin resultados para '{query}'"
description: string; // "Prueba con otros términos"
suggestions: string; // "Sugerencias:"
suggestion1: string; // "Usa menos palabras"
suggestion2: string; // "Revisa la ortografía"
suggestion3: string; // "Prueba sinónimos"
}
error: {
title: string; // "Algo salió mal"
description: string; // "No pudimos completar la búsqueda"
retry: string; // "Reintentar"
}
}

topProducts - Productos destacados

Textos de la sección de productos top.

interface TopProductsTranslations {
title: string; // "Productos destacados"
zeroResultsTitle: string; // "Te puede interesar"
bestseller: string; // "Más vendido"
trending: string; // "Tendencia"
topRated: string; // "Mejor valorado"
}

comparison - Comparador

Textos del comparador de productos.

interface ComparisonTranslations {
addToComparison: string; // "Añadir a comparación"
removeFromComparison: string; // "Quitar de comparación"
compare: string; // "Comparar"
products: string; // "productos"
product: string; // "producto"
productComparison: string; // "Comparación de productos"
comparisonTitle: string; // "Comparativa"
clearComparison: string; // "Limpiar comparación"
clearAll: string; // "Limpiar todo"
closePanel: string; // "Cerrar panel"
expand: string; // "Expandir"
collapse: string; // "Colapsar"
comparisonFull: string; // "Comparación llena"
remove: string; // "Quitar"

// Análisis IA
bestChoice: string; // "Mejor opción"
aiAnalysis: string; // "Análisis IA"
pros: string; // "Ventajas"
cons: string; // "Desventajas"
showAnalysis: string; // "Mostrar análisis"
hideAnalysis: string; // "Ocultar análisis"
}

ai - Asistente IA

Textos del asistente de IA y filtros guiados.

interface AITranslations {
closeMessage: string; // "Cerrar mensaje"
thinking: string; // "Analizando..."
analyzing: string; // "Analizando tu búsqueda..."
suggestion: string; // "Sugerencia"
confidence: string; // "Confianza: {percent}%"
refinedQuery: string; // "¿Quisiste decir: {query}?"
guidedFilters: string; // "Filtros sugeridos"
applyAll: string; // "Aplicar todos"
ignore: string; // "Ignorar"
yes: string; // "Sí"
no: string; // "No"
}

products - Estado productos

Textos de estado de productos vistos.

interface ProductsTranslations {
alreadySeen: string; // "Ya visto"
scrollToPrevious: string; // "Volver al anterior"
}

branding - Marca

Textos de branding.

interface BrandingTranslations {
poweredBy: string; // "Powered by Neuroon"
}

tooltip - Tooltips

Textos de tooltips informativos.

interface TooltipTranslations {
sourceQueryAnalysis: string; // "Análisis del query"
sourceTrending: string; // "Basado en tendencias"
sourceSmartSuggestion: string; // "Sugerencia inteligente"
}

errors - Mensajes de error

Textos de errores (18 keys para cobertura completa).

interface ErrorsTranslations {
networkError: string; // "Error de red"
networkTimeout: string; // "Tiempo de espera agotado"
apiError: string; // "Error del servidor"
searchFailed: string; // "Búsqueda fallida"
searchAborted: string; // "Búsqueda cancelada"
invalidQuery: string; // "Búsqueda inválida"
voiceNotSupported: string; // "Voz no soportada"
voicePermissionDenied: string; // "Permiso de voz denegado"
voiceNoSpeech: string; // "No se detectó voz"
voiceError: string; // "Error de voz"
imageUploadFailed: string; // "Error al subir imagen"
imageTooLarge: string; // "Imagen muy grande"
imageInvalidFormat: string; // "Formato de imagen inválido"
configInvalid: string; // "Configuración inválida"
configMissing: string; // "Configuración faltante"
componentInitFailed: string; // "Error al inicializar componente"
componentRenderFailed: string; // "Error al renderizar"
unknown: string; // "Error desconocido"
}

Personalizar textos

Sobrescribe cualquier texto via JavaScript. Solo necesitas especificar las keys que quieres cambiar:

NeuroonWidget.init({
container: '#neuroon-search',
token: 'YOUR_TOKEN',
locale: 'es',
translations: {
search: {
placeholder: 'Buscar en nuestra tienda...',
},
results: {
empty: 'No encontramos lo que buscas',
emptyHint: 'Prueba con otros términos o menos filtros',
},
filters: {
title: 'Refinar búsqueda',
clearAll: 'Resetear filtros',
},
product: {
inStock: 'Disponible para envío',
outOfStock: 'Sin existencias',
},
errors: {
networkError: 'Sin conexión. Revisa tu internet.',
},
},
});
Traducciones parciales

No necesitas sobrescribir todas las keys. El widget usa los valores por defecto para cualquier key no especificada.

Añadir un nuevo idioma

Para añadir soporte completo de un nuevo idioma:

const frenchTranslations = {
search: {
placeholder: 'Que cherchez-vous ?',
clear: 'Effacer',
// ... resto de keys
},
results: {
empty: 'Aucun résultat',
// ... resto de keys
},
// ... resto de categorías
};

NeuroonWidget.init({
locale: 'fr',
translations: frenchTranslations,
});

Próximos pasos

  • Theming - Personaliza colores y estilos
  • Callbacks - Responde a eventos del widget