TacoTranslate
/
DocumentazionePrezzi
 
Articolo
04 mag

La soluzione migliore per l'internazionalizzazione (i18n) nelle app Next.js

Vuoi espandere la tua applicazione Next.js in nuovi mercati? TacoTranslate rende incredibilmente facile localizzare il tuo progetto Next.js, permettendoti di raggiungere un pubblico globale senza difficoltà.

Perché scegliere TacoTranslate per Next.js?

  • Integrazione senza soluzione di continuità: Progettato specificamente per applicazioni Next.js, TacoTranslate si integra senza sforzo nel tuo flusso di lavoro esistente.
  • Raccolta automatica delle stringhe: Non è più necessario gestire manualmente i file JSON. TacoTranslate raccoglie automaticamente le stringhe dal tuo codice.
  • Traduzioni alimentate dall’IA: Sfrutta la potenza dell’intelligenza artificiale per fornire traduzioni contestualmente accurate che si adattano al tono della tua applicazione.
  • Supporto linguistico istantaneo: Aggiungi il supporto per nuove lingue con un solo clic, rendendo la tua applicazione accessibile a livello globale.

Come funziona

Man mano che il mondo diventa sempre più globalizzato, è sempre più importante per gli sviluppatori web creare applicazioni che possano soddisfare utenti provenienti da diversi paesi e culture. Uno dei modi principali per raggiungere questo obiettivo è attraverso l'internazionalizzazione (i18n), che permette di adattare la tua applicazione a diverse lingue, valute e formati di data.

In questo tutorial, esploreremo come aggiungere l'internazionalizzazione alla tua applicazione React Next.js, con rendering lato server. TL;DR: See the full example here.

Questa guida è per applicazioni Next.js che utilizzano il Pages Router.
Se stai usando il App Router, consulta invece questa guida.

Passo 1: Installa una libreria i18n

Per implementare l'internazionalizzazione nella tua applicazione Next.js, per prima cosa sceglieremo una libreria i18n. Ci sono diverse librerie popolari, tra cui next-intl. Tuttavia, in questo esempio, useremo TacoTranslate.

TacoTranslate traduce automaticamente le tue stringhe in qualsiasi lingua utilizzando un'IA all'avanguardia, liberandoti dalla tediosa gestione dei file JSON.

Installiamolo usando npm nel tuo terminale:

npm install tacotranslate

Passo 2: Crea un account gratuito su TacoTranslate

Ora che hai installato il modulo, è il momento di creare il tuo account TacoTranslate, un progetto di traduzione e le API key associate. Crea un account qui. È gratuito e non richiede di inserire una carta di credito.

All'interno dell'interfaccia dell'applicazione TacoTranslate, crea un progetto e vai alla scheda delle chiavi API. Crea una chiave read e una chiave read/write. Le salveremo come variabili d'ambiente. La chiave read è quella che chiamiamo public e la chiave read/write è secret. Per esempio, potresti aggiungerle a un file .env nella root del tuo progetto.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Assicurati di non divulgare mai la chiave API segreta read/write negli ambienti di produzione lato client.

Aggiungeremo anche altre due variabili d'ambiente: TACOTRANSLATE_DEFAULT_LOCALE e TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Il codice della lingua predefinita di fallback. In questo esempio, lo impostiamo su en per l’inglese.
  • TACOTRANSLATE_ORIGIN: La “cartella” in cui le tue stringhe saranno archiviate, come l’URL del tuo sito web. Leggi di più sulle origini qui.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Passo 3: Configurare TacoTranslate

Per integrare TacoTranslate con la tua applicazione, dovrai creare un client utilizzando le chiavi API di prima. Ad esempio, creare un file denominato /tacotranslate-client.js.

/tacotranslate-client.js
const {default: createTacoTranslateClient} = require('tacotranslate');

const tacoTranslate = createTacoTranslateClient({
	apiKey:
		process.env.TACOTRANSLATE_SECRET_API_KEY ??
		process.env.TACOTRANSLATE_PUBLIC_API_KEY ??
		process.env.TACOTRANSLATE_API_KEY ??
		'',
	projectLocale: process.env.TACOTRANSLATE_DEFAULT_LOCALE ?? '',
});

module.exports = tacoTranslate;

Definiremo automaticamente TACOTRANSLATE_API_KEY a breve.

Creare il client in un file separato rende più facile riutilizzarlo in seguito. Ora, utilizzando un /pages/_app.tsx personalizzato, aggiungeremo il provider TacoTranslate.

/pages/_app.tsx
import React from 'react';
import {type AppProps} from 'next/app';
import {type Origin, type Locale, type Localizations} from 'tacotranslate';
import TacoTranslate from 'tacotranslate/react';
import TacoTranslateHead from 'tacotranslate/next/head';
import tacoTranslate from '../tacotranslate-client';

type PageProperties = {
	origin: Origin;
	locale: Locale;
	locales: Locale[];
	localizations: Localizations;
};

export default function App({Component, pageProps}: AppProps<PageProperties>) {
	const {origin, locale, locales, localizations} = pageProps;

	return (
		<TacoTranslate
			client={tacoTranslate}
			origin={origin}
			locale={locale}
			localizations={localizations}
		>
			<TacoTranslateHead rootUrl="https://your-website.com" locales={locales} />
			<Component {...pageProps} />
		</TacoTranslate>
	);
}

Se hai già dei pageProps personalizzati e _app.tsx, estendi la definizione con le proprietà e il codice indicati sopra.

Passo 4: Implementazione del rendering lato server

TacoTranslate consente il rendering lato server delle tue traduzioni. Questo migliora notevolmente l'esperienza utente mostrando immediatamente i contenuti tradotti, invece di un breve flash di contenuti non tradotti inizialmente. Inoltre, possiamo evitare le richieste di rete sul client, perché abbiamo già tutte le traduzioni di cui abbiamo bisogno.

Inizieremo creando o modificando /next.config.js.

/next.config.js
const withTacoTranslate = require('tacotranslate/next/config').default;
const tacoTranslateClient = require('./tacotranslate-client');

module.exports = async () => {
	const config = {};

	return withTacoTranslate(config, {
		client: tacoTranslateClient,
		isProduction:
			process.env.TACOTRANSLATE_ENV === 'production' ||
			process.env.VERCEL_ENV === 'production' ||
			(!(process.env.TACOTRANSLATE_ENV || process.env.VERCEL_ENV) &&
				process.env.NODE_ENV === 'production'),
	});
};

Modifica il controllo isProduction in base alla tua configurazione. Se true, TacoTranslate mostrerà la chiave API pubblica. Se ci troviamo in un ambiente locale, di test o di staging (isProduction is false), utilizzeremo la chiave API read/write segreta per assicurarci che le nuove stringhe vengano inviate per la traduzione.

Finora, abbiamo solo configurato l'applicazione Next.js con un elenco di lingue supportate. Il prossimo passo sarà recuperare le traduzioni per tutte le tue pagine. Per farlo, utilizzerai getTacoTranslateStaticProps o getTacoTranslateServerSideProps in base alle tue esigenze.

Queste funzioni accettano tre argomenti: un oggetto Next.js Static Props Context, la configurazione per TacoTranslate e proprietà opzionali di Next.js. Nota che revalidate su getTacoTranslateStaticProps è impostato a 60 di default, in modo che le tue traduzioni restino aggiornate.

Per utilizzare una delle due funzioni in una pagina, supponiamo che tu abbia un file di pagina come /pages/hello-world.tsx.

/pages/hello-world.tsx
import {Translate} from 'tacotranslate/react';
import getTacoTranslateStaticProps from 'tacotranslate/next/get-static-props';
import tacoTranslateClient from '../tacotranslate-client';

export async function getStaticProps(context) {
	return getTacoTranslateStaticProps(context, {client: tacoTranslateClient});
}

export default function Page() {
	return <Translate string="Hello, world!"/>;
}

Ora dovresti essere in grado di utilizzare il componente Translate per tradurre le stringhe all'interno di tutti i tuoi componenti React.

import {Translate} from 'tacotranslate/react';

function Component() {
	return <Translate string="Hello, world!"/>
}

Passo 5: Distribuisci e testa!

Abbiamo finito! La tua applicazione Next.js verrà ora tradotta automaticamente quando aggiungi qualsiasi stringa a un componente Translate. Nota che solo gli ambienti con permessi read/write sulla chiave API saranno in grado di creare nuove stringhe da tradurre. Raccomandiamo di avere un ambiente di staging chiuso e sicuro dove poter testare la tua applicazione di produzione con una chiave API di questo tipo, aggiungendo nuove stringhe prima della messa in produzione. Questo impedirà a chiunque di rubare la tua chiave API segreta e potenzialmente di appesantire il tuo progetto di traduzione aggiungendo nuove stringhe non correlate.

Assicurati di dare un’occhiata all’esempio completo sul nostro profilo GitHub. Lì troverai anche un esempio di come farlo utilizzando App Router ! Se riscontri qualsiasi problema, non esitare a contattarci, saremo più che felici di aiutarti.

TacoTranslate ti permette di localizzare automaticamente le tue applicazioni React rapidamente in qualsiasi lingua e da qualsiasi lingua. Inizia oggi stesso!

Un prodotto di Nattskiftet