Vai al contenuto principale
Tutte le guide
Guida

Aggiornamenti delle traduzioni over-the-air in React Native

In un'app React Native le modifiche ai testi di solito aspettano la build successiva e la revisione dello store. Questa guida mantiene i18next e react-i18next e aggiunge una funzione che carica l'ultima release di litei18n all'avvio.

Passaggi di configurazione

  1. Crea una release

    In litei18n, esegui il commit delle traduzioni e crea una release nella pagina Releases (dal piano Starter in su). Copia l'ID del progetto dall'URL della release mostrato lì. Esporta anche le traduzioni in JSON e aggiungile alla tua app come copia inclusa.

  2. Carica la release all'avvio dell'app

    Installa i18next e react-i18next. Il file inglese incluso è la riserva e loadLatest scarica una lingua e la aggiunge a i18next. keySeparator è disattivato perché le chiavi di litei18n sono nomi piatti come home.title.

    src/i18n.ts
    import i18n from 'i18next';
    import { initReactI18next } from 'react-i18next';
    import en from './locales/en.json';
    
    const PROJECT_ID = 'YOUR_PROJECT_ID';
    const RELEASES =
      'https://ttksowxkfdohtprtfarf.supabase.co/storage/v1/object/public/releases/locales';
    
    i18n.use(initReactI18next).init({
      lng: 'en',
      fallbackLng: 'en',
      resources: { en: { translation: en } },
      keySeparator: false, // litei18n keys are flat: "home.title"
      interpolation: { escapeValue: false },
    });
    
    export async function loadLatest(locale: string) {
      try {
        const res = await fetch(`${RELEASES}/${PROJECT_ID}/latest/${locale}.json`);
        if (res.ok) {
          i18n.addResourceBundle(locale, 'translation', await res.json(), true, true);
        }
      } catch {
        // Offline: the bundled strings stay in place.
      }
      await i18n.changeLanguage(locale);
    }
    
    export default i18n;
  3. Usa i testi

    Usa l'hook useTranslation come sempre e chiama loadLatest una volta all'avvio con la lingua dell'utente.

    src/App.tsx
    import { useEffect } from 'react';
    import { Text } from 'react-native';
    import { useTranslation } from 'react-i18next';
    import { loadLatest } from './i18n';
    
    function Home() {
      const { t } = useTranslation();
      return <Text>{t('home.title')}</Text>;
    }
    
    export default function App() {
      useEffect(() => {
        loadLatest('es');
      }, []);
      return <Home />;
    }
  4. Cambia i testi senza una nuova build

    Modifica una traduzione, esegui il commit e crea una nuova release. L'URL latest ora restituisce il nuovo testo e la tua app lo riceve la prossima volta che carica le traduzioni. Nessuna nuova build, nessuna revisione dello store.

Buono a sapersi

  • I file delle release sono in cache su una CDN, quindi una nuova release può impiegare qualche minuto per essere visibile ovunque.
  • Per vincolare una versione dell'app a una release precisa, usa l'URL con versione (…/v3/es.json) invece di …/latest/es.json.
  • Per conservare il testo scaricato anche offline, salvalo con AsyncStorage e aggiungilo a i18next prima che la richiesta di rete termini.

Inizia a distribuire globalmente in 5 minuti

Unisciti agli sviluppatori che pubblicano le loro app in ogni lingua con litei18n.

Piano gratuito disponibile · Nessuna carta di credito · Configurazione in meno di 5 minuti