Descripción
useLanguage es un composable de Vue que gestiona el sistema multiidioma de la aplicación. Integra vue-i18n para cambiar el idioma de la interfaz y persiste la preferencia del usuario en localStorage. Soporta Español, Inglés y Kichwa.
Importación
Uso Básico
- Cambiar Idioma
- Cargar Idioma Guardado
- Selector de Idioma
- App.vue
API
Valores Retornados
Referencia reactiva al código del idioma actual en mayúsculas (‘ES’, ‘EN’, ‘QU’). Es un estado global compartido entre todos los componentes.
Array con los idiomas disponibles en la aplicación.Cada objeto contiene:
code(string) - Código ISO del idioma (‘es’, ‘en’, ‘qu’)name(string) - Nombre del idioma (‘Español’, ‘English’, ‘Kichwa’)flag(string) - Emoji de la bandera (’🇪🇸’, ’🇺🇸’, ’🇪🇨’)
Cambia el idioma de la aplicación y lo persiste en localStorage.Parámetros:
langCode(string) - Código del idioma (‘es’, ‘en’, ‘qu’). Acepta mayúsculas o minúsculas.
- Actualiza
currentLanguage(en mayúsculas) - Actualiza el
localede vue-i18n (en minúsculas) - Guarda la preferencia en
localStorage.userLanguage - Registra el cambio en consola
Carga el idioma guardado en localStorage o usa español como predeterminado.Comportamiento:
- Si existe
localStorage.userLanguage, lo carga - Si no existe, usa español (‘es’) como idioma predeterminado
- Actualiza tanto
currentLanguagecomo ellocalede vue-i18n
App.vue o en el punto de entrada de la aplicación.Estado Global
El composable mantiene un estado global compartido:useLanguage().
Idiomas Disponibles
| Código | Nombre | Bandera | Locale |
|---|---|---|---|
| es | Español | 🇪🇸 | es |
| en | English | 🇺🇸 | en |
| qu | Kichwa | 🇪🇨 | qu |
Persistencia
El idioma se guarda en localStorage bajo la clave:Integración con vue-i18n
El composable utilizauseI18n() de vue-i18n para acceder al locale:
- Se actualiza
currentLanguage(mayúsculas para UI) - Se actualiza
locale.value(minúsculas para i18n) - vue-i18n actualiza automáticamente todas las traducciones
Ejemplo Completo
Sincronización Automática
El composable incluye unwatch que sincroniza cambios del locale de vue-i18n con currentLanguage:
locale de i18n se refleje en currentLanguage.
Notas
- El idioma predeterminado es español (‘es’) si no hay preferencia guardada
- Los códigos de idioma aceptan mayúsculas o minúsculas, pero se normalizan internamente
currentLanguagesiempre se almacena en mayúsculas para consistencia en la UI- El
localede vue-i18n siempre se almacena en minúsculas según el estándar ISO - Es recomendable llamar
loadSavedLanguage()enApp.vueal iniciar la aplicación - El estado es global y compartido entre todas las instancias del composable
- Los cambios de idioma se reflejan inmediatamente en toda la aplicación gracias a la reactividad de Vue
