La millor solució per a la internacionalització (i18n) en aplicacions Next.js
Vols 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è triar TacoTranslate per a Next.js?
- Integració perfecta: Dissenyat específicament per a aplicacions Next.js, TacoTranslate s'integra sense esforç al vostre flux de treball existent.
- Recollida automàtica de cadenes: No cal gestionar manualment fitxers JSON. TacoTranslate recull automàticament les cadenes del vostre codi.
- Traduccions impulsades per IA: Aprofiteu la potència de la IA per obtenir traduccions contextualment precises que s'ajustin al to de la vostra aplicació.
- Suport d'idiomes instantani: Afegiu suport per a nous idiomes amb un sol clic, fent la vostra aplicació accessible a nivell mundial.
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 internacionalització a la teva aplicació React Next.js, amb renderitzat al servidor. TL;DR: Vegeu l'exemple complet aquí.
Aquesta guia és per a aplicacions Next.js que utilitzen el Pages Router.
Si utilitzeu el App Router, consulteu aquesta guia en el seu lloc.
Pas 1: Instal·la una biblioteca d'i18n
Per implementar la internacionalització a la teva aplicació Next.js, primer triarem una biblioteca d'i18n. Hi ha diverses biblioteques populars, incloent next-intl. Tanmateix, en aquest exemple utilitzarem TacoTranslate.
TacoTranslate tradueix automàticament les teves cadenes a qualsevol idioma fent servir IA d'última generació, i t'allibera de la feixuga gestió dels fitxers JSON.
Instal·lem-la amb npm al teu terminal:
npm install tacotranslatePas 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 cal que afegeixis una targeta de crèdit.
A la interfície d'usuari de l'aplicació TacoTranslate, crea un projecte i navega a la pestanya de les 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.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Assegura't de no filtrar mai la clau d'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 de reserva. En aquest exemple, l'establirem aenper a l'anglès.TACOTRANSLATE_ORIGIN: La “carpeta” on s'emmagatzemaran les teves cadenes, com per exemple l'URL del teu lloc web. Llegeix més sobre els origins aquí.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comPas 3: Configuració de TacoTranslate
Per integrar TacoTranslate amb la teva aplicació, hauràs de crear un client utilitzant les claus d'API esmentades abans. Per exemple, crea un fitxer anomenat /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;En breu definirem automàticament TACOTRANSLATE_API_KEY.
Crear el client en un fitxer separat fa que sigui més fàcil reutilitzar-lo més endavant. Ara, utilitzant un /pages/_app.tsx, afegirem el proveïdor TacoTranslate.
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 i _app.tsx personalitzats, amplia la definició amb les propietats i el codi esmentats més amunt.
Pas 4: Implementació del renderitzat del costat del servidor
TacoTranslate permet la representació al costat del servidor de les teves traduccions. Això millora considerablement l’experiència d’usuari perquè mostra el contingut traduït de manera immediata, en lloc d’un petit flaix inicial de contingut no traduït. A més, podem evitar les peticions de xarxa des del client, perquè ja disposem de totes les traduccions que necessitem.
Començarem creant o modificant /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ó de isProduction perquè s'ajusti a la teva configuració. Si true, TacoTranslate exposarà la clau d'API pública. Si estem en un entorn local, de proves o de staging (isProduction is false), utilitzarem la clau d'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à obtenir les traduccions per a totes les teves pàgines. Per fer-ho, faràs servir 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. Tingues en compte que revalidate a getTacoTranslateStaticProps està establert a 60 per defecte, de manera que les teves traduccions es mantinguin actualitzades.
Per utilitzar qualsevol de les dues funcions en una pàgina, suposem que tens un fitxer de pàgina com /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 hauries de poder utilitzar el component Translate per traduir cadenes dins de tots els teus components de React.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}Pas 5: Desplega i prova!
Ja hem acabat! 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 sobre la clau d'API podran crear noves cadenes per traduir. Et recomanem tenir un entorn de proves tancat i segur on puguis provar la teva aplicació de producció amb una clau d'API com aquesta, afegint noves cadenes abans d'anar a producció. Això evitarà que qualsevol persona qualsevol persona robi la teva clau d'API secreta i, potencialment, infli el teu projecte de traducció 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!