Com implementar la internacionalització en una aplicació Next.js que utilitza el Pages Router
Fes la teva aplicació React més accessible i arriba a nous mercats amb la internacionalització (i18n).
A mesura que el món es globalitza, és cada vegada 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, divises i formats de data.
En aquest tutorial, explorarem com afegir internacionalització a la teva aplicació React Next.js, amb renderització del costat del servidor. TL;DR: Consulta 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·lar 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, com ara next-intl. Tot i això, en aquest exemple farem servir TacoTranslate.
TacoTranslate tradueix automàticament les teves cadenes a qualsevol idioma amb una IA d'avantguarda i t'estalvia de la tediosa gestió dels fitxers JSON.
Instal·lem-lo amb npm al teu terminal:
npm install tacotranslatePas 2: Crea un compte gratuït de 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 de la interfície d'usuari de l'aplicació TacoTranslate, crea un projecte i ves a la pestanya de claus de l'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 podries afegir a un fitxer .env a l'arrel del teu projecte.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Assegureu-vos 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. En aquest exemple, l'establirem aenper a l'anglès.TACOTRANSLATE_ORIGIN: La “carpeta” on s'emmagatzemaran les vostres cadenes, com la URL del vostre lloc web. Llegiu més sobre els origins aquí.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comPas 3: Configurar 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.
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.
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, si us plau amplia la definició amb les propietats i el codi indicats més amunt.
Pas 4: Implementació del renderitzat al costat del servidor
TacoTranslate permet la renderització al costat del servidor de les teves traduccions. Això millora considerablement l'experiència d'usuari mostrant el contingut traduït de manera immediata, en lloc d'un breu parpelleig de contingut no traduït. A més, podem evitar fer peticions de xarxa al 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ó isProduction per adaptar-la a la teva configuració. Si true, TacoTranslate mostrarà 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à obtenir les traduccions de totes les teves pàgines. Per fer-ho, utilitzaràs o bé getTacoTranslateStaticProps o bé 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 estiguin 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.
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 en tots els vostres components React.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}Pas 5: Desplega i prova!
Hem acabat! La teva aplicació React 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 disposar d'un entorn de preproducció tancat i segur on puguis provar la teva aplicació de producció amb una clau API d'aquest tipus, afegint noves cadenes abans d'anar en directe. Això evitarà que qualsevol persona robi la teva clau API secreta i, potencialment, sobrecarregui 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 trobeu algun problema, no dubteu a posar-vos en contacte, i estarem encantats d'ajudar-vos.
TacoTranslate us permet localitzar automàticament les vostres aplicacions React, ràpidament, cap a i des de més de 75 idiomes. Comenceu avui mateix!