TacoTranslate
/
DokumentatsioonHinnakiri
 
Õpetus
04. mai

Kuidas rakendada rahvusvahelistamist Next.js rakenduses, mis kasutab App Router

Muuda oma Reacti rakendus ligipääsetavamaks ja jõua rahvusvaheliste turgudeni rahvusvahelistamise (i18n) abil.

Kuna maailm muutub üha globaliseeritumaks, on veebiarendajatel üha olulisem luua rakendusi, mis suudavad teenindada kasutajaid erinevatest riikidest ja kultuuridest. Üks peamisi viise selle saavutamiseks on rahvusvahelistamine (i18n), mis võimaldab kohandada teie rakendust erinevatele keeltele, valuutadele ja kuupäevavormingutele.

Selles artiklis uurime, kuidas lisada rahvusvahelistamist teie React Next.js rakendusse koos serveripoolse renderdamisega. TL;DR: Vaadake täielikku näidet siit.

See juhend on mõeldud Next.js rakendustele, mis kasutavad App Router.
Kui kasutate Pages Router, vaadake selle asemel seda juhendit.

Samm 1: Paigalda i18n-teek

Selleks, et oma Next.js rakendusse rahvusvahelistamist (i18n) rakendada, valime esmalt i18n-teegi. On mitmeid populaarseid teeke, sealhulgas next-intl. Selles näites kasutame siiski TacoTranslate.

TacoTranslate tõlgib teie stringid automaatselt ükskõik millisesse keelde, kasutades tipptasemel tehisintellekti, ja vabastab teid JSON-failide tüütust haldamisest.

Paigaldame selle oma terminalis, kasutades npm:

npm install tacotranslate

Samm 2: Loo tasuta TacoTranslate'i konto

Nüüd, kui oled mooduli installinud, on aeg luua oma TacoTranslate konto, tõlkeprojekt ja sellega seotud API-võtmed. Loo konto siit. See on tasuta ning ei nõua krediitkaardi lisamist.

TacoTranslate rakenduse kasutajaliideses loo projekt ja liigu selle API-võtmete vahekaardile. Loo üks read võti ja üks read/write võti. Salvestame need keskkonnamuutujatena. read võtit nimetame public ja read/write võtit secret. Näiteks võid need lisada projekti juurkausta faili .env.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Veenduge, et salajast read/write API-võtit ei lekiks kunagi kliendipoolsetes tootmiskeskkondades.

Lisame ka kaks täiendavat keskkonnamuutujat: TACOTRANSLATE_DEFAULT_LOCALE ja TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Vaikimisi varulokaali kood. Selles näites määrame selle inglise keele jaoks en.
  • TACOTRANSLATE_ORIGIN: „kaust“, kuhu teie stringid salvestatakse, näiteks teie veebisaidi URL. Lisateavet originite kohta leiate siit.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

3. samm: TacoTranslate seadistamine

TacoTranslate'i integreerimiseks oma rakendusega peate looma kliendi, kasutades eelnevalt mainitud API-võtmeid. Näiteks looge fail nimega /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_IS_PRODUCTION === 'true'
			? process.env.TACOTRANSLATE_PROJECT_LOCALE
			: undefined,
});

module.exports = tacoTranslate;

Peagi määrame automaatselt TACOTRANSLATE_API_KEY ja TACOTRANSLATE_PROJECT_LOCALE.

Kliendi loomine eraldi faili muudab selle hilisemal kasutamisel lihtsaks. getLocales on lihtsalt abifunktsioon mõne sisseehitatud veakäsitlusega. Nüüd loo fail nimega /app/[locale]/tacotranslate.tsx, kuhu me rakendame TacoTranslate pakkujat.

/app/[locale]/tacotranslate.tsx
'use client';

import React, {type ReactNode} from 'react';
import {
	type TranslationContextProperties,
	TacoTranslate as ImportedTacoTranslate,
} from 'tacotranslate/react';
import tacoTranslateClient from '@/tacotranslate-client';

export default function TacoTranslate({
	locale,
	origin,
	localizations,
	children,
}: TranslationContextProperties & {
	readonly children: ReactNode;
}) {
	return (
		<ImportedTacoTranslate
			client={tacoTranslateClient}
			locale={locale}
			origin={origin}
			localizations={localizations}
		>
			{children}
		</ImportedTacoTranslate>
	);
}

Pange tähele 'use client';, mis näitab, et tegemist on kliendikomponendiga.

Nüüd, kui konteksti pakkuja on valmis, loo fail nimega /app/[locale]/layout.tsx, mis on meie rakenduse juurpaigutus. Pange tähele, et sellel teel on kaust, mis kasutab Dynamic Routes, kus [locale] on dünaamiline parameeter.

/app/[locale]/layout.tsx
import React, {type ReactNode} from 'react';
import {type Locale, isRightToLeftLocaleCode} from 'tacotranslate';
import './global.css';
import tacoTranslateClient from '@/tacotranslate-client';
import TacoTranslate from './tacotranslate';

export async function generateStaticParams() {
	const locales = await tacoTranslateClient.getLocales();
	return locales.map((locale) => ({locale}));
}

type RootLayoutParameters = {
	readonly params: Promise<{locale: Locale}>;
	readonly children: ReactNode;
};

export default async function RootLayout({params, children}: RootLayoutParameters) {
	const {locale} = await params;
	const origin = process.env.TACOTRANSLATE_ORIGIN;
	const localizations = await tacoTranslateClient.getLocalizations({
		locale,
		origins: [origin /* , other origins to fetch */],
	});

	return (
		<html lang={locale} dir={isRightToLeftLocaleCode(locale) ? 'rtl' : 'ltr'}>
			<body>
				<TacoTranslate
					locale={locale}
					origin={origin}
					localizations={localizations}
				>
					{children}
				</TacoTranslate>
			</body>
		</html>
	);
}

Esimene asi, mida siin märgata, on see, et me kasutame oma Dynamic Route parameetrit [locale] selle keele tõlgete pärimiseks. Lisaks tagab generateStaticParams, et kõik keelekoodid, mille olete oma projektis aktiveerinud, renderdatakse eelnevalt.

Nüüd loome oma esimese lehe! Loo fail nimega /app/[locale]/page.tsx.

/app/[locale]/page.tsx
import React from 'react';
import {Translate} from 'tacotranslate/react';

export const revalidate = 60;
export default async function Page() {
	return (
		<Translate string="Hello, world!" />
	);
}

Pange tähele revalidate muutujat, mis paneb Next.js‑i lehe 60 sekundi möödudes uuesti üles ehitama ning hoiab teie tõlked ajakohasena.

4. samm: Serveripoolse renderdamise rakendamine

TacoTranslate toetab serveripoolset renderdamist. See parandab kasutajakogemust tunduvalt, kuna tõlgitud sisu kuvatakse kohe, selle asemel et esmalt näidata lühidalt tõlkimata sisu. Lisaks saame kliendipoolseid võrgutaotlusi vahele jätta, sest meil on juba olemas selle lehe jaoks vajalikud tõlked.

Serveripoolse renderdamise seadistamiseks loo või muuda /next.config.js:

/next.config.js
const withTacoTranslate = require('tacotranslate/next/config').default;
const tacoTranslateClient = require('./tacotranslate-client');

module.exports = async () => {
	const config = await withTacoTranslate(
		{},
		{
			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'),
		}
	);

	// NOTE: Remove i18n from config when using the app router
	return {...config, i18n: undefined};
};

Muuda isProduction kontrolli vastavalt oma seadistusele. Kui true, kuvab TacoTranslate avaliku API-võtme. Kui me oleme lokaalses, test- või staging-keskkonnas (isProduction is false), kasutame salajast read/write API-võtit, et tagada uute stringide saatmine tõlkimiseks.

Et tagada, et marsruutimine ja ümbersuunamine toimivad ootuspäraselt, peame looma faili nimega /middleware.ts. Kasutades Middleware, saame kasutajaid suunata lehtedele, mis kuvatakse nende eelistatud keeles.

/middleware.ts
import {type NextRequest} from 'next/server';
import {middleware as tacoTranslateMiddleware} from 'tacotranslate/next';
import tacoTranslate from '@/tacotranslate-client';

export const config = {
	matcher: ['/((?!api|_next|favicon.ico).*)'],
};

export async function middleware(request: NextRequest) {
	return tacoTranslateMiddleware(tacoTranslate, request);
}

Veendu, et seadistad matcher vastavalt Next.js Middleware'i dokumentatsioonile.

Kliendipoolsel poolel saate muuta locale küpsist, et muuta kasutaja eelistatud keelt. Vaadake täielikku näitekoodi, et saada ideid, kuidas seda teha!

Samm 5: Juuruta ja testi!

Valmis! Sinu React‑rakendus tõlgitakse nüüd automaatselt, kui lisad mis tahes stringe Translate komponendisse. Pane tähele, et ainult keskkonnad, millel on API-võtmel read/write õigused, saavad luua uusi tõlkimiseks mõeldud stringe. Soovitame omada suletud ja turvatud staging-keskkonda, kus saad testida oma tootmisrakendust sellise API-võtmega ja lisada enne tootmisse minekut uusi stringe. See takistab, et keegi keegi varastaks sinu salajast API-võtit ning potentsiaalselt paisutaks sinu tõlkeprojekti, lisades uusi, mitteseotud stringe.

Be sure to check out the complete example over at our GitHub profile. There, you’ll also find an example of how to do this using the Pages Router! If you encounter any problems, feel free to reach out, and we’ll be more than happy to help.

TacoTranslate lets you automatically localize your React applications quickly to and from over 75 languages. Get started today!

Toode ettevõttelt NattskiftetValmistatud Norras