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
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.
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.tsimport 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;Usa i testi
Usa l'hook useTranslation come sempre e chiama loadLatest una volta all'avvio con la lingua dell'utente.
src/App.tsximport { 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 />; }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