Skip to content

useLocales

useLocales es el sistema de carga de contenido multi-idioma por página. A diferencia de useI18n() (que maneja strings cortos como labels de botones), useLocales carga archivos JSON completos con el contenido de cada página.


interface WebinarsPageData {
title: string
subtitle: string
cta: string
}
const { data } = await useLocales<WebinarsPageData>('webinars')
// data es de tipo WebinarsPageData

El string 'webinars' corresponde al archivo:

  • app/locales/inspiria/es/webinars.json (fallback)
  • app/locales/inspiria/en/webinars.json (si el usuario está en inglés)

FeatureComportamiento
Fallback automáticoSi un campo está vacío en el idioma actual, usa el español
Merge profundoFunciona recursivamente en objetos y arrays anidados
Merge por IDArrays de objetos con id se mergean por ID, no por posición
Detección de vacíonull, undefined, "", [], {} se consideran “sin valor”
Archivo inexistenteSi el JSON no existe para el idioma, usa el fallback completo

useI18n()useLocales()
Archivosi18n/es.json (global)locales/inspiria/{lang}/{page}.json
GranularidadString individualObjeto completo de página
FallbackAutomático (vue-i18n)Custom merge profundo
Uso típicot('button.buy')data.heroSection.title
CargaSíncronaAsync (import dinámico)

app/composables/useLocales.ts