Config

withGTConfig

Riferimento alle API per withGTConfig(), in precedenza initGT()

Panoramica

withGTConfig è il metodo principale per configurare la libreria gt-next. Avvolge direttamente un oggetto NextConfig.

next.config.mjs
import { withGTConfig } from 'gt-next/config';

const nextConfig = {
    // il tuo next.config.js esistente
}

export default withGTConfig(nextConfig, {
  // Opzioni di configurazione aggiuntive
});

Legacy

initGT è il metodo legacy per configurare la libreria gt-next. Restituisce una funzione di callback che viene poi invocata sull'oggetto NextConfig. Le props di entrambe le funzioni sono le stesse, con l'unica eccezione che withGTProps richiede anche il passaggio di NextConfig.

Usa withGTConfig per:

  • Configurare le lingue supportate e la locale predefinita (cioè la lingua di fallback).
  • Impostare le chiavi API e gli ID di progetto per accedere ai servizi GT.
  • Definire il comportamento di caricamento.
  • Configurare le impostazioni di timeout.
  • Impostare endpoint personalizzati.
  • Personalizzare il comportamento di traduzione, la cache e il batching delle richieste.
  • Abilitare la convalida in fase di build tramite il plugin SWC.

withGTConfig deve essere utilizzato nel file next.config.js per abilitare la funzionalità di traduzione.

Riferimento

Per impostazione predefinita, withGTConfig cercherà un file gt.config.json nella stessa directory del file next.config.js.

Questo file JSON verrà caricato e unito alla configurazione passata a withGTConfig.

Consulta la documentazione di gt.config.json per ulteriori informazioni sul file di configurazione.

Lo strumento CLI leggerà la configurazione solo dal file gt.config.json, quindi ti consigliamo di usare il file gt.config.json come unica fonte attendibile per la tua app.

Le opzioni di configurazione aggiuntive non presenti in gt.config.json possono essere passate a withGTConfig direttamente come props.

Proprietà obbligatorie

Prop

Type

Proprietà consigliate

Prop

Type

PropDescrizione
defaultLocaleLocale predefinita per l'applicazione. L'inglese verrà usato come lingua di fallback quando non ne viene specificata una.
localesUn elenco esclusivo di locali supportate per l'applicazione. Se viene ricevuta una richiesta non supportata, verrà reindirizzata alla successiva lingua preferita del browser nell'elenco. In assenza di corrispondenze, si userà defaultLocale come fallback.
descriptionUna descrizione in linguaggio naturale del sito, utilizzata per agevolare la traduzione.

Prop avanzati

Prop

Type

PropDescription
projectIdID del progetto, che può essere incluso qui o come variabile d’ambiente.
apiKeySebbene non sia consigliato, una chiave API può essere inclusa qui. Può anche essere impostata come variabile d’ambiente.
devApiKeySebbene non sia consigliato, una chiave API di sviluppo può essere inclusa qui. Può anche essere impostata come variabile d’ambiente.
preferredModelProviderIl provider di modelli AI preferito. Al momento sono supportati solo Anthropic e OpenAI. Lascia il campo vuoto e individueremo il provider migliore traduzione per traduzione. Nei periodi di alto traffico o quando un provider è disabilitato, non possiamo garantire l’uso del provider preferito.
runtimeUrlURL di base per le API di GT. Per disabilitare la traduzione automatica, impostalo su una stringa vuota.
cacheUrlURL in cui sono memorizzate le traduzioni nella cache. Può essere personalizzato per puntare a un server di cache dedicato.
cacheExpiryTimeTempo, in millisecondi, prima che scadano le traduzioni memorizzate localmente nella cache.
renderSettingsOggetto che specifica il comportamento di caricamento per le traduzioni a runtime.
maxConcurrentRequestsNumero massimo di richieste di traduzione simultanee consentite alle API di GT.
maxBatchSizeNumero massimo di traduzioni da raggruppare prima di inviare una richiesta.
batchIntervalIntervallo, in millisecondi, tra le richieste di traduzione raggruppate. Aiuta a controllare la frequenza di invio delle richieste.
dictionaryPercorso del file di configurazione opzionale per il dizionario. Come i18n, accetta una stringa per specificare un percorso personalizzato. I dizionari chiamati dictionary.js (o .jsx, .ts, .tsx, ecc.) e posizionati nella root o nella cartella src sono supportati per impostazione predefinita.
dynamicJsxCheckLogLevelControlla la validazione dei contenuti dinamici non racchiusi nei componenti di traduzione. Imposta su "error" per far fallire le build, "warn" per mostrare avvisi o "off" per disabilitare il controllo.
dynamicStringCheckLogLevelControlla la validazione degli argomenti della funzione di traduzione per garantire l’uso di letterali stringa. Imposta su "error" per far fallire le build, "warn" per mostrare avvisi o "off" per disabilitare il controllo.

Restituisce

Una funzione (NextConfig) => NextConfig che estende l'oggetto di configurazione di Next.js con le impostazioni di GT specificate.

Eccezioni

Genera un Error se projectId è assente e si usano gli URL predefiniti, oppure se la chiave API è necessaria ma non è presente.


Impostazioni di rendering

Le impostazioni di rendering controllano il comportamento delle traduzioni durante il caricamento. Questo si applica solo alle traduzioni eseguite a runtime. Se la traduzione è in cache, il tempo di risposta è troppo breve per giustificare un comportamento di caricamento.

Prop

Type

PropDescription
methodIl metodo utilizzato per renderizzare la pagina. Le opzioni sono skeleton, replace e default.
timeoutIl tempo, in millisecondi, prima che il metodo vada in timeout. Il valore predefinito è 8000 ms.

Metodi di rendering

  • skeleton: Effettua il rendering di un frammento.
  • replace: Mostra il contenuto nella lingua predefinita durante l’attesa.
  • default: Per le varianti con la stessa lingua (es. en-US e en-GB) si comporta come replace. Per le varianti con lingue diverse (es. en-US e fr) si comporta come skeleton.

Timeout

I timeout si applicano solo alle traduzioni in runtime, ossia a quelle che devono essere eseguite su richiesta perché non sono state memorizzate nella cache.

Per impostazione predefinita, i timeout sono di 8 secondi. Questa scelta progettuale è pensata per agevolare gli utenti di Vercel, che sul piano gratuito hanno un timeout predefinito di 10 secondi per le funzioni serverless.


Esempi

Impostazioni di rendering

Questo esempio configura gt-next per mostrare uno scheletro mentre si attendono le traduzioni. Se il caricamento delle traduzioni supera gli 8 secondi, il metodo va in timeout e viene mostrato il contenuto nella lingua predefinita.

gt.config.json
{
  "defaultLocale": "en-US",
  "locales": ["en-US", "es", "fr"],
}
next.config.mjs
import { withGTConfig } from 'gt-next/config';

const nextConfig = {
  // Le tue altre configurazioni Next.js
};

export default withGTConfig(nextConfig, {
  renderSettings: {
    method: 'skeleton',
    timeout: 10000,
  },
});

Validazione in fase di build

Questo esempio configura il plugin SWC per considerare le violazioni di contenuto dinamico come errori di build invece che semplici avvisi.

next.config.mjs
import { withGTConfig } from 'gt-next/config';

const nextConfig = {
  // Le tue altre configurazioni Next.js
};

export default withGTConfig(nextConfig, {
  // Interrompi la build in caso di violazioni JSX dinamiche
  dynamicJsxCheckLogLevel: 'error',
  // Avvisa in caso di violazioni di stringhe dinamiche  
  dynamicStringCheckLogLevel: 'warn',
});

Note

  • withGTConfig integra la funzionalità di traduzione di GT nella tua app Next.js e deve essere utilizzato nel file di configurazione principale.
  • Parametri come apiKey e projectId possono essere definiti direttamente nella configurazione o come variabili d’ambiente.
  • Parametri avanzati come renderSettings e _batchInterval consentono un controllo fine del comportamento e delle prestazioni della traduzione.

Prossimi passi

Come valuti questa guida?

withGTConfig