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 dvs. 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 pentru dezvoltatorii web să creeze aplicații care să se adapteze utilizatorilor din diferite țări și culturi. Unul dintre principalele moduri de a realiza acest lucru este prin internaționalizare (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ționalizarea în aplicația ta React Next.js, cu redare pe partea de server. TL;DR: Vezi exemplul complet aici.

Acest ghid se adresează aplicațiilor Next.js care folosesc Pages Router.
Dacă folosiț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 dvs. Next.js, vom începe prin a 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ă eliberează de gestionarea plictisitoare a fișierelor JSON.

Să-l instalăm folosind npm în terminalul dvs.:

npm install tacotranslate

Pasul 2: Creați un cont TacoTranslate gratuit

Acum că ați instalat modulul, este timpul să vă creați un cont 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 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 aflat în rădăcina proiectului tău.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Asigură-te că nu dezvălui niciodată cheia API secretă read/write în mediile de producție ale clientului.

Vom adăuga, de asemenea, încă 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 engleză.
  • TACOTRANSLATE_ORIGIN: „folderul” în care vor fi stocate șirurile tale, cum ar fi URL-ul site-ului tău. Află mai multe despre origini aici.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Pasul 3: Configurarea TacoTranslate

Pentru a integra TacoTranslate cu 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.

/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ă utilizarea 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 redării pe partea de server

TacoTranslate permite redarea traducerilor tale 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 o scurtă apariție a conținutului netradus. În plus, putem omite 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 API publică. Dacă ne aflăm într-un mediu local, de testare sau de pregătire (isProduction is false), vom folosi secretul read/write cheia API 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 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, o configurație 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. 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.

/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 textele din toate componentele React.

import {Translate} from 'tacotranslate/react';

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

Pasul 5: Publică și testează!

Am terminat! Aplicația ta React va fi acum tradusă automat când adaugi orice șiruri la un component Translate. Reține că doar mediile cu permisiuni read/write pe cheia API vor putea crea noi șiruri care să fie traduse. Recomandăm să ai un mediu de staging închis și securizat unde să îți testezi aplicația de producție cu o astfel de cheie API, adăugând noi șiruri înainte de lansare. Acest lucru va împiedica oricine oricine să-ți fure cheia API secretă și, eventual, să umfle proiectul tău de traduceri prin adăugarea de șiruri noi, neconexe.

Asigură-te că consulti exemplul complet de pe profilul nostru GitHub. Acolo vei găsi, de asemenea, un exemplu despre cum să faci acest lucru folosind App Router! Dacă întâmpini orice problemă, nu ezita să ne contactezi, și vom fi mai mult decât bucuroși să te ajutăm.

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

Un produs de la NattskiftetFabricat în Norvegia