Aggiornamenti delle traduzioni over-the-air in Next.js
In un'app Next.js i file di traduzione vengono pubblicati a ogni deploy. Questa guida li recupera invece sul server dall'ultima release di litei18n, così una modifica al testo va online senza un nuovo deploy.
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
Imposta LITEI18N_PROJECT_ID nel tuo ambiente e tieni i file JSON esportati in locales/ come riserva. revalidate dice a Next.js di cercare una nuova release al massimo ogni cinque minuti.
lib/translations.tsconst PROJECT_ID = process.env.LITEI18N_PROJECT_ID; const RELEASES = 'https://ttksowxkfdohtprtfarf.supabase.co/storage/v1/object/public/releases/locales'; export async function getTranslations(locale: string): Promise<Record<string, string>> { try { const res = await fetch(`${RELEASES}/${PROJECT_ID}/latest/${locale}.json`, { next: { revalidate: 300 }, // look for a new release every 5 minutes }); if (res.ok) return await res.json(); } catch { // Network error: fall through to the bundled copy. } // The bundled copy, or English for a language you have not bundled. const bundled = await import(`../locales/${locale}.json`).catch(() => import('../locales/en.json')); return bundled.default; }Usa i testi
Chiama getTranslations in un componente server e leggi le chiavi dall'oggetto restituito. Next.js mette in cache il risultato e recupera la nuova release in background.
app/[locale]/page.tsximport { getTranslations } from '@/lib/translations'; export default async function Home({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params; const t = await getTranslations(locale); return <h1>{t['home.title']}</h1>; }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.
- Usi next-intl? Interpreta i punti nelle chiavi come annidamento, quindi converti le chiavi piatte in oggetti annidati prima di passarle.
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