TacoTranslate
/
DocumentațiePrețuri
 
Ghid
04 mai

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 destinat aplicațiilor Next.js care utilizează Pages Router.
Dacă utilizați App Router, vă rugăm să 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 șirurile 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 tacotranslate

Pasul 2: Creează un cont gratuit pe TacoTranslate

Acum că ai instalat modulul, este momentul să îți creezi contul TacoTranslate, un proiect de traducere și cheile API asociate. Creează 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 sa de 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.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Asigurați-vă că nu divulgați niciodată cheia API secretă read/write în mediile de producție de pe partea clientului.

Vom mai adăuga două variabile de mediu: TACOTRANSLATE_DEFAULT_LOCALE și TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Codul implicit al localizării de rezervă. În acest exemplu, îl vom seta la en pentru limba engleză.
  • TACOTRANSLATE_ORIGIN: „folderul” unde vor fi stocate șirurile tale, cum ar fi URL-ul site-ului tău. Citește mai multe despre origini aici.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Pasul 3: Configurarea TacoTranslate

Pentru a integra TacoTranslate în aplicația dumneavoastră, 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.

/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 îl face mai ușor de folosit mai târziu. Acum, folosind un /pages/_app.tsx, vom adăuga providerul 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>
	);
}

Dacă aveți deja pageProps și _app.tsx personalizate, 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 renderizarea traducerilor tale pe partea de server. Acest lucru îmbunătățește considerabil experiența utilizatorului, afișând imediat conținutul tradus, în loc să apară mai întâi pe scurt conținut netradus. În plus, putem evita solicitările de rețea pe client, deoarece avem deja toate traducerile de care avem nevoie.

Vom începe prin a crea sau modifica /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ț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 suportate. Următorul lucru pe care îl vom face este să preluăm traducerile pentru toate paginile tale. Pentru aceasta, 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 la 60 în mod implicit, astfel încât traducerile dvs. rămân la zi.

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.

/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!"/>;
}

Ar trebui acum 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: Publică și testează!

Am terminat! Aplicația dvs. React va fi acum tradusă automat atunci când adăugați orice șiruri la componenta Translate. Rețineți că doar mediile cu permisiuni read/write asupra cheii API vor putea crea șiruri noi care să fie traduse. Recomandăm să aveți un mediu de staging închis și securizat în care să vă testați aplicația de producție cu o astfel de cheie API, adăugând șiruri noi înainte de a o lansa. Acest lucru va împiedica pe oricine oricine să vă fure cheia API secretă și, potențial, să umfle proiectul de traduceri prin adăugarea de șiruri noi, neconexe.

Asigură-te că arunci o privire la exemplul complet pe profilul nostru GitHub. Acolo vei găsi, de asemenea, un exemplu despre cum să faci asta folosind App Router! Dacă întâmpini probleme, nu ezita să ne contactezi, iar noi vom fi mai mult decât bucuroși să te ajutăm.

TacoTranslate îți permite să localizezi automat aplicațiile React, rapid, în și din peste 75 de limbi. Începe azi!

Un produs de la NattskiftetFabricat în Norvegia