TacoTranslate
/
DocumentacióPreus
 
Article
04 de maig

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

Estàs buscant expandir la teva aplicació Next.js a nous mercats? TacoTranslate fa que sigui increïblement fàcil localitzar el teu projecte Next.js, permetent-te arribar a una audiència global sense complicacions.

Per què escollir TacoTranslate per a Next.js?

  • Integració fluida: Dissenyat específicament per a aplicacions Next.js, TacoTranslate s'integra fàcilment en el teu flux de treball existent.
  • Recollida automàtica de cadenes: No cal gestionar manualment fitxers JSON. TacoTranslate recull automàticament les cadenes del teu codi.
  • Traduccions impulsades per IA: Aprofita el poder de la IA per oferir traduccions contextualmente precises que s'adapten al to de la teva aplicació.
  • Suport instantani d'idiomes: Afegeix suport per a nous idiomes amb un sol clic, fent que la teva aplicació sigui accessible globalment.

Com funciona

A mesura que el món es globalitza més, és cada vegada més important que els desenvolupadors web construeixin 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 us permet adaptar la vostra aplicació a diferents idiomes, monedes i formats de data.

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

Aquest guia és per a aplicacions Next.js que utilitzen el Pages Router.
Si utilitzeu el App Router, consulteu aquest guia en canvi.

Pas 1: Instal·la una biblioteca i18n

Per implementar la internacionalització a la teva aplicació Next.js, primer escollirem una llibreria i18n. Hi ha diverses llibreries populars, incloent-hi next-intl. Tanmateix, en aquest exemple, farem servir TacoTranslate.

TacoTranslate tradueix automàticament les teves cadenes a qualsevol idioma utilitzant IA d’última generació, i et lliura de la tediosa gestió dels fitxers JSON.

Instal·lem-ho fent servir 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 API associades. Crea un compte aquí. És gratuït i no requereix que afegeixis una targeta de crèdit.

Dins la interfície d’usuari de l’aplicació TacoTranslate, crea un projecte i navega fins a la pestanya de les claus API. Crea una clau read i una clau read/write. Les guardarem com a variables d’entorn. La clau read és la que anomenem public i la clau read/write és secret. Per exemple, les podries 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 secreta read/write de l'API als entorns de producció del client.

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

  • TACOTRANSLATE_DEFAULT_LOCALE: El codi de la localització per defecte. En aquest exemple, el configurarem a en per a l’anglès.
  • TACOTRANSLATE_ORIGIN: La "carpeta" on s’emmagatzemaran les teves cadenes, com ara la URL del teu lloc web. Llegeix 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 mencionades 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 d’aquí a poc.

Crear el client en un fitxer separat fa que sigui més fàcil d'utilitzar de nou més endavant. Ara, utilitzant un /pages/_app.tsx personalitzat, 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 pageProps personalitzats i _app.tsx, si us plau, amplia la definició amb les propietats i el codi indicats a dalt.

Pas 4: Implementació del renderitzat al servidor

TacoTranslate permet el renderitzat al servidor de les teves traduccions. Això millora molt l'experiència d'usuari mostrant el contingut traduït immediatament, en comptes de mostrar primer una breu aparició de contingut no traduït. A més, podem evitar peticions de xarxa al client, ja que ja disposem de 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 mostrarà la clau pública de l’API. Si estem en un entorn local, de proves o staging (isProduction is false), utilitzarem la clau secreta read/write de l’API per assegurar-nos que les noves cadenes s’enviïn per a la traducció.

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

Aquestes funcions prenen 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, perquè les vostres traduccions es mantinguin actualitzades.

Per utilitzar una d’aquestes 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 hauríeu de poder utilitzar el component Translate per traduir cadenes dins de tots els vostres components React.

import {Translate} from 'tacotranslate/react';

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

Pas 5: Desplega i prova!

Ja ho tenim! La teva aplicació Next.js ara es traduirà automàticament quan afegeixis qualsevol cadena a un component Translate. Tingues en compte que només els entorns amb permisos read/write a la clau API podran crear noves cadenes per traduir. Recomanem tenir un entorn de proves tancat i segur on puguis provar la teva aplicació de producció amb una clau API d’aquest tipus, afegint noves cadenes abans de posar-la en funcionament. Això evitarà que ningú robi la teva clau API secreta i que potencialment s’infli el teu projecte de traducció amb noves cadenes no relacionades.

Assegureu-vos de consultar l'exemple complet al nostre perfil de GitHub. Allà també trobareu un exemple de com fer-ho utilitzant el App Router ! Si teniu qualsevol problema, no dubteu a contactar-nos, i estarem encantats d’ajudar-vos.

TacoTranslate us permet localitzar automàticament les vostres aplicacions React de manera ràpida, tant a com des de qualsevol idioma. Comenceu avui mateix!

Un producte de NattskiftetFet a Noruega