Skip to main content

Documentation Index

Fetch the complete documentation index at: https://wiki.vivla.com/llms.txt

Use this file to discover all available pages before exploring further.

Internacionalización (i18n)

La aplicación soporta múltiples idiomas mediante i18next y react-i18next.

Stack

LibreríaVersiónPropósito
i18next24.2.3Core de internacionalización
react-i18next15.4.1Bindings para React / React Native

Idiomas soportados

IdiomaCódigoEstado
EspañolesCompleto
InglésenCompleto (fallback)
Si el idioma del dispositivo no es español ni inglés, la app utiliza inglés como idioma por defecto.

Detección de idioma

La detección del idioma se realiza automáticamente al iniciar la app:
  1. Se busca la preferencia guardada en AsyncStorage (clave userLanguage)
  2. Si no hay preferencia guardada, se detecta el idioma del dispositivo (iOS y Android)
  3. Si el idioma detectado no está soportado, se usa inglés como fallback

Archivos de traducción

ArchivoUbicación
Ingléssrc/core/i18n/languages/en.ts
Españolsrc/core/i18n/languages/es.ts

Secciones de traducción

Cada archivo de traducción contiene las siguientes secciones:
SecciónContenido
appTextos generales de la aplicación
commonPalabras y frases comunes (botones, labels)
profilePantallas de perfil y configuración
authLogin, registro, recuperación de contraseña
onboardingPantallas de bienvenida
bookingFlujo de reservas
staysGestión de estancias
propertiesPropiedades y listings
issuesReporte de incidencias
chatMensajería
notificationsNotificaciones
financialWallet y transacciones

Localización de calendarios

Los calendarios (react-native-calendars) están configurados con nombres de meses y días en español e inglés. La localización se aplica automáticamente según el idioma seleccionado.

Inicialización

initializeI18n() se invoca durante el hook useAppInitialization. No es necesario llamarla manualmente.

Uso en componentes

import { useTranslation } from 'react-i18next';

const MyComponent = () => {
  const { t } = useTranslation();
  return <Text>{t('booking.createTitle')}</Text>;
};

Agregar una nueva cadena de texto

Agrega la nueva key en ambos archivos de traducción:
// src/core/i18n/languages/en.ts
export default {
  // ...
  booking: {
    // ...
    newFeatureTitle: "New Feature",
  },
};
// src/core/i18n/languages/es.ts
export default {
  // ...
  booking: {
    // ...
    newFeatureTitle: "Nueva Funcionalidad",
  },
};
Siempre agrega la traducción en ambos idiomas (en.ts y es.ts). Si solo agregas en uno, el usuario verá la key sin traducir en el otro idioma.

API de funciones

FunciónDescripción
initializeI18n()Inicializa i18next con la configuración de la app
setLanguage(lang)Cambia el idioma en runtime y persiste la preferencia
getCurrentLanguage()Retorna el código del idioma actual ('es' o 'en')