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 ajungeți pe piețe noi prin internaționalizare (i18n).

Pe măsură ce lumea devine tot mai globalizată, devine din ce în ce mai important pentru dezvoltatorii web să creeze aplicații care să răspundă utilizatorilor din diferite țări și culturi. Una dintre modalitățile cheie de a realiza acest lucru este prin internaționalizare (i18n), care vă permite să adaptați aplicația la diferite limbi, monede și formate de dată.

În acest tutorial vom explora cum să adăugați internaționalizarea în aplicația dvs. React Next.js, cu randare pe server. TL;DR: Consultați exemplul complet aici.

Acest ghid este pentru aplicațiile Next.js care folosesc Pages Router.
Dacă utilizați App Router, vă rugăm să consultați acest ghid.

Pasul 1: Instalați o bibliotecă i18n

Pentru a implementa internaționalizarea în aplicația ta 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 tale în orice limbă folosind inteligență artificială de ultimă generație și te scapă de gestionarea obositoare a fișierelor JSON.

Hai să îl instalăm folosind npm în terminalul tău:

npm install tacotranslate

Pasul 2: Creează un cont gratuit TacoTranslate

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ă adăugarea unui 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-ai putea 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 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 la en pentru 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.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Pasul 3: Configurarea TacoTranslate

Pentru a integra TacoTranslate în aplicația ta, va trebui să creezi un client folosind cheile API de mai sus. De exemplu, creează 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 facilitează reutilizarea lui mai târziu. Acum, folosind un /pages/_app.tsx personalizat, 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 randării pe server

TacoTranslate permite redarea traducerilor pe server. Acest lucru îmbunătățește considerabil experiența utilizatorului, afișând conținutul tradus imediat, în loc să apară mai întâi un scurt moment cu conținut netradus. De asemenea, putem evita solicitările de rețea din partea clientului, deoarece avem deja toate traducerile necesare.

Vom începe prin crearea sau modificarea /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 face vizibilă cheia publică a API-ului. Dacă ne aflăm într-un mediu local, de testare sau de staging (isProduction is false), vom folosi cheia secretă read/write a API-ului pentru a ne asigura că șirurile noi sunt trimise pentru traducere.

Până acum, am configurat aplicația Next.js doar cu o listă de limbi acceptate. Următorul lucru pe care îl vom face este să preluăm traducerile pentru toate paginile dumneavoastră. Pentru a face acest lucru, veți folosi fie getTacoTranslateStaticProps, fie getTacoTranslateServerSideProps în funcție de cerințele dumneavoastră.

Aceste funcții primesc trei argumente: un obiect Next.js Static Props Context, configurația pentru TacoTranslate și proprietăți opționale Next.js. Rețineți că revalidate din getTacoTranslateStaticProps este setat la 60 în mod implicit, astfel încât traducerile tale să rămână actualizate.

Pentru a folosi oricare dintre funcții într-o pagină, să presupunem că ai 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ă puteți folosi componenta Translate pentru a traduce șiruri în toate componentele React.

import {Translate} from 'tacotranslate/react';

function Component() {
	return <Translate string="Hello, world!"/>
}

Pasul 5: Lansează și testează!

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

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!

Un produs de la NattskiftetFabricat în Norvegia