Produzione vs sviluppo

Differenze tra gli ambienti di produzione e di sviluppo

Panoramica

gt-react si comporta in modo diverso a seconda dell'ambiente in cui è in esecuzione l'applicazione React.

Determina l’ambiente verificando la variabile d’ambiente NODE_ENV.

Comportamento in produzione

Variabili d'ambiente

In produzione, l’unica variabile d’ambiente accettata è GT_PROJECT_ID (o una versione con prefisso, ad esempio NEXT_PUBLIC_GT_PROJECT_ID).

Se una chiave API viene fornita come variabile d’ambiente, gt-react genererà un errore. Questo serve a evitare che le chiavi API vengano esposte al client.

Comportamento di caricamento delle traduzioni

In produzione, il provider gt-react tenterà per impostazione predefinita di caricare le traduzioni dal CDN di General Translation.

Se hai configurato un caricamento personalizzato delle traduzioni, ad esempio locale, tramite la funzione loadTranslations, gt-react userà quello.

L’hot reload delle traduzioni è disattivato in ambiente di produzione.

Comportamento durante lo sviluppo

Variabili d'ambiente

Poiché lo sviluppo è locale e non accessibile a utenti esterni, gt-react accetterà qualsiasi variabile d'ambiente di General Translation, anche se è prefissata con NEXT_PUBLIC_, VITE_ (o simili).

Comportamento di caricamento delle traduzioni

In sviluppo, il provider gt-react proverà innanzitutto a caricare le traduzioni nello stesso modo della produzione. Queste traduzioni vengono caricate in memoria.

Quando si esegue il rendering di un componente (che utilizza useGT, <T> o useTranslations) in una lingua diversa da quella predefinita, il provider gt-react procederà come segue:

  1. Se rileva una traduzione valida e archiviata per il contenuto in questione, renderizzerà la traduzione.
  2. Se non viene trovata alcuna traduzione, proverà a tradurre dinamicamente il contenuto tramite la General Translation API.
  3. Dopo la traduzione, il risultato verrà renderizzato e memorizzato in memoria per utilizzi futuri.
  4. Se la traduzione va in timeout, effettuerà il fallback e renderizzerà il contenuto originale.

La nostra API mette internamente in cache le traduzioni generate in sviluppo per un breve periodo; se la stessa traduzione viene richiesta di nuovo, verrà servita dalla cache.

Queste traduzioni sono isolate a livello di progetto, quindi non verranno mescolate con quelle di altri progetti. Inoltre, la cache è specifica per le sessioni di sviluppo, quindi le traduzioni in cache non verranno utilizzate in produzione.

gt-react rileverà le modifiche ai componenti che utilizzano useGT, <T> o useTranslations e tradurrà dinamicamente il contenuto modificato tramite la nostra API.

Chiavi API per produzione e sviluppo

Per distinguere in modo chiaro il comportamento di gt-react tra produzione e sviluppo, adottiamo il concetto di "chiavi API di produzione" e "chiavi API di sviluppo".

Chiavi API di produzione

Le chiavi API di produzione sono chiavi API che iniziano con gtx-api-.

Quando fornisci una chiave API di produzione, gt-react si comporta come descritto nella sezione Comportamento in produzione.

Questo significa che, se stai eseguendo la tua applicazione React in modalità sviluppo e fornisci una chiave API di produzione, gt-react si comporterà come se fossi in produzione. Il ricaricamento a caldo delle traduzioni sarà disattivato e i componenti senza traduzioni renderizzeranno il contenuto originale.

A parte questo comportamento, gt-react non utilizzerà la chiave API di produzione in alcun altro modo.

Il motivo per cui ti chiediamo di creare una chiave API di produzione separata quando effettui il deploy in produzione è che lo strumento CLI accede solo alle chiavi API di produzione.

Lo strumento CLI applicherà la fatturazione e il rate limiting utilizzando la categoria "production".

Chiavi API di sviluppo

Le chiavi API di sviluppo sono chiavi API che iniziano con gtx-dev-.

Quando viene fornita una chiave API di sviluppo, gt-react si comporta come descritto nella sezione Comportamento in sviluppo.

Quando si utilizza una chiave API di sviluppo, fatturazione e rate limiting vengono applicati secondo la categoria "development".

Le traduzioni create con una chiave API di sviluppo non vengono archiviate e non saranno disponibili in produzione.

Le traduzioni di sviluppo servono a consentirti di testare l’applicazione prima della messa in produzione.

Come valuti questa guida?

Produzione vs sviluppo