TacoTranslate
/
DocumentacióPreus
 
Article
04 de maig

La millor solució per a la internacionalització (i18n) a les aplicacions Next.js

Voleu ampliar la vostra aplicació Next.js a nous mercats? TacoTranslate fa que sigui increïblement senzill localitzar el vostre projecte Next.js, permetent-vos arribar a un públic global sense complicacions.

Per què triar TacoTranslate per a Next.js?

  • Integració perfecta: Dissenyat específicament per a aplicacions Next.js, TacoTranslate s'integra sense esforç al teu flux de treball existent.
  • Recollida automàtica de cadenes: No cal gestionar fitxers JSON manualment. TacoTranslate recull automàticament les cadenes de la teva base de codi.
  • Traduccions impulsades per IA: Aprofita la potència de la IA per oferir traduccions precises en context que s'ajustin al to de la teva aplicació.
  • Suport d'idiomes instantani: Afegeix suport per a nous idiomes amb un sol clic, fent la teva aplicació accessible a tot el món.

Com funciona

A mesura que el món es globalitza, és cada cop més important que els desenvolupadors web creïn aplicacions que puguin atendre usuaris de diferents països i cultures. Una de les maneres clau d'aconseguir-ho és mitjançant la internacionalització (i18n), que et permet adaptar la teva aplicació a diferents idiomes, monedes i formats de data.

En aquest tutorial, explorarem com afegir la internacionalització a la teva aplicació React Next.js, amb renderització al servidor. TL;DR: Vegeu l'exemple complet aquí.

Aquesta guia és per a aplicacions Next.js que utilitzen el Pages Router.
Si utilitzeu l'App Router, consulteu aquesta guia en canvi.

Pas 1: Instal·lar una biblioteca i18n

Per implementar la internacionalització a la teva aplicació Next.js, primer escollirem una biblioteca d'i18n. Hi ha diverses biblioteques populars, incloent next-intl. Tot i això, en aquest exemple, farem servir TacoTranslate.

TacoTranslate tradueix automàticament les teves cadenes a qualsevol idioma mitjançant IA d'avantguarda, i et allibera de la feixuga gestió dels fitxers JSON.

Instal·lem-la amb npm al teu terminal:

npm install tacotranslate

Pas 2: Crea un compte gratuït a TacoTranslate

Ara que tens el mòdul instal·lat, és hora de crear el teu compte de TacoTranslate, un projecte de traducció i les claus d'API associades. Crea un compte aquí. És gratuït i no requereix que afegeixis una targeta de crèdit.

A la interfície d'usuari de l'aplicació TacoTranslate, crea un projecte i navega fins a la pestanya de claus API. Crea una clau read i una clau read/write. Les desarem com a variables d'entorn. La clau read és la que anomenem public i la clau read/write és secret. Per exemple, les pots afegir a un fitxer .env a l'arrel del teu projecte.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Assegura't de no filtrar mai la clau API secreta read/write als entorns de producció del costat del client.

També afegirem dues variables d'entorn més: TACOTRANSLATE_DEFAULT_LOCALE i TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: El codi de localització per defecte que s'utilitza com a reserva. En aquest exemple, l'establirem a en per a l'anglès.
  • TACOTRANSLATE_ORIGIN: La “carpeta” on s'emmagatzemaran les vostres cadenes, com l'URL del vostre lloc web. Llegiu-ne més sobre els orígens aquí.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Pas 3: Configuració de TacoTranslate

Per integrar TacoTranslate amb la teva aplicació, hauràs de crear un client utilitzant les claus API esmentades anteriorment. Per exemple, crea un fitxer anomenat /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;

Definirem automàticament TACOTRANSLATE_API_KEY en breu.

Crear el client en un fitxer separat facilita tornar-lo a utilitzar més endavant. Ara, utilitzant un /pages/_app.tsx, afegirem el proveïdor 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>
	);
}

Si ja tens personalitzats pageProps i _app.tsx, si us plau, extén la definició amb les propietats i el codi indicats més amunt.

Pas 4: Implementació de la renderització al costat del servidor

TacoTranslate permet el renderitzat al costat del servidor de les teves traduccions. Això millora considerablement l'experiència d'usuari mostrant el contingut traduït immediatament, en comptes d'un instant en què primer es mostra contingut no traduït. A més, podem evitar les peticions de xarxa des del client, perquè ja tenim totes les traduccions que necessitem.

Començarem creant o modificant /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 la comprovació isProduction per adaptar-la a la teva configuració. Si true, TacoTranslate exposarà la clau API pública. Si estem en un entorn local, de proves o de staging (isProduction is false), farem servir la clau API secreta read/write per assegurar-nos que les noves cadenes s'enviïn per a traducció.

Fins ara, només hem configurat l'aplicació Next.js amb una llista d'idiomes compatibles. El següent que farem serà recuperar les traduccions de totes les teves pàgines. Per fer-ho, utilitzaràs o bé getTacoTranslateStaticProps o getTacoTranslateServerSideProps segons les teves necessitats.

Aquestes funcions reben tres arguments: un objecte Next.js Static Props Context, la configuració per a TacoTranslate i propietats opcionals de Next.js. Tingueu en compte que revalidate a getTacoTranslateStaticProps està establert a 60 per defecte, de manera que les vostres traduccions es mantinguin actualitzades.

Per utilitzar qualsevol de les dues funcions en una pàgina, suposem que teniu un fitxer de pàgina com /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!"/>;
}

Ara ja podeu utilitzar el Translate component per traduir cadenes en tots els vostres components de React.

import {Translate} from 'tacotranslate/react';

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

Pas 5: Desplega i prova!

Hem acabat! La teva aplicació Next.js ara es traduirà automàticament quan afegeixis qualsevol cadena a un Translate component. Tingues en compte que només els entorns amb permisos read/write sobre la clau de l'API podran crear noves cadenes per traduir. Recomanem disposar d’un entorn de staging tancat i protegit on puguis provar la teva aplicació de producció amb una clau de l'API d’aquest tipus, afegint noves cadenes abans d’anar en directe. Això evitarà que qualsevol persona qualsevol robi la teva clau secreta de l'API i, potencialment, que el teu projecte de traducció s'infli afegint noves cadenes no relacionades.

Be sure to check out the complete example over at our GitHub profile. There, you’ll also find an example of how to do this using the App Router! If you encounter any problems, feel free to reach out, and we’ll be more than happy to help.

TacoTranslate lets you automatically localize your React applications quickly to and from over 75 languages. Get started today!

Un producte de NattskiftetFet a Noruega