TacoTranslate
/
DocumentațiePrețuri
 
Tutorial
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ă nevoilor utilizatorilor din diferite țări și culturi. Unul dintre modurile cheie de a realiza acest lucru este prin internaționalizare (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ționalizarea aplicației dvs. React Next.js, cu 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, vă rugăm să consultați acest ghid în schimb.

Pasul 1: Instalează o bibliotecă i18n

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

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, este timpul 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 cu cheile 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

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

De asemenea, vom adăuga două variabile de mediu suplimentare: TACOTRANSLATE_DEFAULT_LOCALE și TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Codul implicit pentru localizarea de rezervă. În acest exemplu, îl vom seta la en pentru engleză.
  • TACOTRANSLATE_ORIGIN: „Folderul” unde vor fi stocate stringurile 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

To integrate TacoTranslate with your application, you’ll need to create a client using the API keys from earlier. For example, create a file named /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 scurt timp.

Crearea clientului într-un fișier separat face mai ușoară reutilizarea acestuia ulterior. Acum, folosind un /pages/_app.tsx personalizat, vom adăuga provider-ul 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 pe partea de server a traducerilor tale. Acest lucru îmbunătățește considerabil experiența utilizatorului prin afișarea imediată a conținutului tradus, în loc de o scurtă clipire a conținutului netradus. În plus, putem evita cererile 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 acceptate. Următorul lucru pe care îl vom face este să preluăm traduceri pentru toate paginile dvs. Pentru a face acest lucru, veți folosi fie getTacoTranslateStaticProps , fie getTacoTranslateServerSideProps în funcție de cerințele dvs.

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

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

Acum ar trebui să poți folosi componenta Translate pentru a traduce șiruri de caractere î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 ta React va fi acum tradusă automat când adaugi orice șiruri de caractere într-un component Translate. Reține că doar mediile cu permisiuni read/write pe cheia API vor putea crea șiruri noi pentru a fi traduse. Recomandăm să ai un mediu de tip staging închis și securizat unde poți testa aplicația de producție folosind o astfel de cheie API, adăugând șiruri noi înainte de lansare. Acest lucru va împiedica pe oricine să îți fure cheia API secretă și, potențial, să îngroașe proiectul tău de traduceri prin adăugarea unor șiruri noi, nesemnificative.

Asigură-te să verifici 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 tale React rapid către și din orice limbă. Începe astăzi!

Un produs de la Nattskiftet