Cum să implementezi internaționalizarea într-o aplicație Next.js care folosește Pages Router
Faceți aplicația React mai accesibilă și atingeți piețe noi prin internaționalizare (i18n).
Pe măsură ce lumea devine tot mai globalizată, devine din ce în ce mai important ca dezvoltatorii web să creeze aplicații care să răspundă nevoilor utilizatorilor din diferite țări și culturi. Una dintre principalele modalități de a realiza acest lucru este internaționalizarea (i18n), care îți permite să adaptezi aplicația la diferite limbi, monede și formate de dată.
În acest tutorial, vom explora cum să adaugi internaționalizare în aplicația ta React Next.js, folosind redare pe server. TL;DR: Vezi exemplul complet aici.
Acest ghid este pentru aplicațiile Next.js care folosesc Pages Router.
Dacă folosiți App Router, consultați în schimb acest ghid.
Pasul 1: Instalați o bibliotecă i18n
Pentru a implementa internaționalizarea în aplicația dvs. Next.js, mai întâi vom alege o bibliotecă i18n. Există mai multe biblioteci populare, inclusiv next-intl. Totuși, în acest exemplu, vom folosi TacoTranslate.
TacoTranslate traduce automat textele dvs. în orice limbă folosind inteligență artificială de ultimă generație și vă scutește de gestionarea plictisitoare a fișierelor JSON.
Să-l instalăm folosind npm în terminalul dvs.:
npm install tacotranslatePasul 2: Creați un cont TacoTranslate gratuit
Acum că ai instalat modulul, e timpul să îți creezi contul TacoTranslate, un proiect de traducere și cheile API asociate. Creează-ți un cont aici. Este gratuit și nu necesită să adaugi un card de credit.
În interfața aplicației TacoTranslate, creează un proiect și navighează la fila pentru chei API. Creează o cheie read și o cheie read/write. Le vom salva ca variabile de mediu. Cheia read este ceea ce numim public iar cheia read/write este secret. De exemplu, le poți adăuga într-un fișier .env în rădăcina proiectului tău.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Asigură-te că nu divulgi niciodată cheia API secretă read/write în mediile de producție de pe partea clientului.
Vom adăuga, de asemenea, încă două variabile de mediu: TACOTRANSLATE_DEFAULT_LOCALE și TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: Codul implicit al localei de rezervă. În acest exemplu, îl vom seta laenpentru engleză.TACOTRANSLATE_ORIGIN: „folderul” în care vor fi stocate string-urile tale, precum URL-ul site-ului tău. Citește mai multe despre origini aici.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comPasul 3: Configurarea TacoTranslate
Pentru a integra TacoTranslate în aplicația dvs., va trebui să creați un client folosind cheile API menționate mai sus. De exemplu, creați un fișier numit /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;Vom defini automat TACOTRANSLATE_API_KEY în scurt timp.
Crearea clientului într-un fișier separat face mai ușoară utilizarea lui mai târziu. Acum, folosind un /pages/_app.tsx personalizat, vom adăuga providerul 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>
);
}Dacă aveți deja versiuni personalizate ale pageProps și ale _app.tsx, vă rugăm să extindeți definiția cu proprietățile și codul de mai sus.
Pasul 4: Implementarea randării pe server
TacoTranslate permite redarea pe server a traducerilor tale. Acest lucru îmbunătățește considerabil experiența utilizatorului, afișând imediat conținutul tradus, în locul unei scurte apariții inițiale a conținutului netradus. În plus, putem evita solicitările de rețea pe client, deoarece avem deja toate traducerile necesare.
Vom începe prin crearea sau modificarea /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ți verificarea isProduction pentru a se potrivi configurației dvs. Dacă true, TacoTranslate va expune cheia API publică. Dacă ne aflăm într-un mediu local, de testare sau staging (isProduction is false), vom folosi cheia secretă read/write pentru a ne asigura că noile șiruri sunt trimise pentru traducere.
Până acum, am configurat aplicația Next.js doar cu o listă de limbi acceptate. Următorul pas este să preluăm traducerile pentru toate paginile tale. Pentru a face asta, vei folosi fie getTacoTranslateStaticProps, fie getTacoTranslateServerSideProps în funcție de cerințele tale.
Aceste funcții primesc trei argumente: un obiect Next.js Static Props Context, configurația pentru TacoTranslate și proprietăți Next.js opționale. Rețineți că revalidate din getTacoTranslateStaticProps este setat implicit la 60, astfel încât traducerile dumneavoastră să rămână actualizate.
Pentru a folosi oricare dintre funcții într-o pagină, să presupunem că aveți un fișier de pagină precum /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!"/>;
}Acum ar trebui să poți folosi componenta Translate pentru a traduce texte în toate componentele tale React.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}Pasul 5: Publicați și testați!
Am terminat! Aplicația ta React va fi acum tradusă automat atunci când adaugi orice șiruri de text unei componente Translate. Reține că numai mediile care au permisiuni read/write pe cheia API vor putea crea șiruri noi pentru a fi traduse. Recomandăm să ai un mediu de staging închis și securizat în care să testezi aplicația de producție cu o astfel de cheie API, adăugând șiruri noi înainte de lansare. Acest lucru va preveni ca oricine să-ți fure cheia API secretă și, potențial, să umfle proiectul de traduceri prin adăugarea de șiruri noi, nerelevante.
Asigurați-vă că consultați exemplul complet de pe profilul nostru GitHub. Acolo, veți găsi și un exemplu despre cum să faceți acest lucru folosind App Router! Dacă întâmpinați probleme, nu ezitați să ne contactați, iar noi vom fi mai mult decât bucuroși să vă ajutăm.
TacoTranslate vă permite să localizați automat aplicațiile React, rapid, în și din peste 75 de limbi. Începeți astăzi!