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 din ce în ce mai globalizată, devine tot mai important ca dezvoltatorii web să creeze aplicații care să răspundă utilizatorilor din diferite țări și culturi. Unul dintre modurile esențiale de a realiza acest lucru este internaționalizarea (i18n), care vă permite să adaptați aplicația la diferite limbi, valute și formate de dată.
În acest tutorial, vom explora cum să adăugați internaționalizare în aplicația dvs. React Next.js, folosind redare pe server. TL;DR: Vezi exemplul complet aici.
Acest ghid este pentru aplicații Next.js care folosesc Pages Router.
Dacă folosiți App Router, vă rugăm să consultați acest ghid în schimb.
Pasul 1: Instalați o bibliotecă i18n
Pentru a implementa internaționalizarea în aplicația dvs. Next.js, vom alege mai întâi 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ă scapă de gestionarea obositoare a fișierelor JSON.
Să-l instalăm folosind npm în terminalul dvs.:
npm install tacotranslatePasul 2: Creați un cont gratuit TacoTranslate
Acum că ați instalat modulul, este timpul să vă creați contul TacoTranslate, un proiect de traducere și cheile API asociate. Creați un cont aici. Este gratuit și nu necesită adăugarea unui card de credit.
În interfața aplicației TacoTranslate, creează un proiect și navighează la fila „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-ai putea adăuga într-un fișier .env din rădăcina proiectului tău.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Asigurați-vă că nu divulgați niciodată cheia API secretă read/write în mediile de producție pe partea clientului.
Vom adăuga, de asemenea, încă două variabile de mediu: TACOTRANSLATE_DEFAULT_LOCALE și TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: Codul localizării implicite de rezervă. În acest exemplu, îl vom seta laenpentru engleză.TACOTRANSLATE_ORIGIN: „folderul” în care vor fi stocate șirurile tale, cum ar fi 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 cu aplicația dumneavoastră, va trebui să creați un client folosind cheile API menționate anterior. 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 curând.
Crearea clientului într-un fișier separat face mai ușoară refolosirea acestuia mai târziu. Acum, folosind un /pages/_app.tsx, 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 personalizate pageProps și _app.tsx, vă rugăm să extindeți definiția cu proprietățile și codul de mai sus.
Pasul 4: Implementarea renderizării pe server
TacoTranslate permite redarea traducerilor pe partea serverului. Acest lucru îmbunătățește considerabil experiența utilizatorului prin afișarea imediată a conținutului tradus, în locul unei scurte apariții a conținutului netradus. În plus, putem evita cererile de rețea din partea clientului, deoarece avem deja toate traducerile de care avem nevoie.
Vom începe prin a crea sau modifica /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 afișa cheia publică API. 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 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 opționale ale Next.js. Rețineți că revalidate din getTacoTranslateStaticProps este setat implicit la 60, astfel încât traducerile dvs. să rămână la zi.
Pentru a folosi oricare dintre aceste 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 șiruri în toate componentele tale React.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}Pasul 5: Lansați și testați!
Am terminat! Aplicația dvs. React va fi acum tradusă automat când adăugați orice șiruri într-o componentă Translate. Rețineți că numai mediile cu permisiuni read/write asupra cheii API vor putea crea noi șiruri care vor fi traduse. Vă recomandăm să aveți un mediu de staging închis și securizat în care să testați aplicația de producție cu o astfel de cheie API, adăugând noi șiruri înainte de a o lansa. Acest lucru va împiedica pe oricine oricine să vă fure cheia API secretă și, potențial, să provoace creșterea necontrolată a proiectului dvs. de traduceri prin adăugarea de șiruri noi, neconexe.
Asigurați-vă că consultați exemplul complet pe profilul nostru GitHub. Acolo veți găsi și un exemplu despre cum să faceți asta 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!