TacoTranslate
/
DokumentasiePryse
 
Handleiding
04 Mei

Hoe om internasionale aanpassing te implementeer in ’n Next.js-toepassing wat die Pages Router gebruik

Maak jou React-toepassing meer toeganklik en bereik nuwe markte met internasionale ondersteuning (i18n).

Namate die wêreld meer geïnternationaliseer raak, word dit al hoe belangriker vir webontwikkelaars om toepassings te bou wat kan voorsien in die behoeftes van gebruikers uit verskillende lande en kulture. Een van die sleutels om dit te bereik is deur internasionale ondersteuning (i18n), wat jou toelaat om jou toepassing aan te pas by verskillende tale, geldeenhede en datumformate.

In hierdie tutoriaal gaan ons ondersoek hoe om internasionale ondersteuning by jou React Next.js-toepassing by te voeg, met bediener-kant rendering. TL;DR: Sien die volle voorbeeld hier.

Hierdie gids is vir Next.js-toepassings wat die Pages Router gebruik.
As jy die App Router gebruik, sien asseblief eerder hierdie gids.

Stap 1: Installeer ’n i18n-biblioteek

Om internasionale ondersteuning in jou Next.js-toepassing te implementeer, gaan ons eers ’n i18n-biblioteek kies. Daar is verskeie gewilde biblioteke, insluitend next-intl. In hierdie voorbeeld gaan ons egter TacoTranslate gebruik.

TacoTranslate vertaal jou stringe outomaties na enige taal met behulp van gevorderde KI, en bevry jou van die vervelige bestuur van JSON-lêers.

Laat ons dit installeer met npm in jou terminaal:

npm install tacotranslate

Stap 2: Skep ’n gratis TacoTranslate-rekening

Nou dat jy die module geïnstalleer het, is dit tyd om jou TacoTranslate-rekening, ’n vertaalprojek, en gepaarde API-sleutels te skep. Skep ’n rekening hier. Dit is gratis, en vereis nie dat jy ’n kredietkaart moet voeg nie.

Binne die TacoTranslate toepassing UI, skep ’n projek, en navigeer na die API sleutels-oortjie. Skep een read sleutel, en een read/write sleutel. Ons sal hulle as omgewings veranderlikes stoor. Die read sleutel is wat ons public noem en die read/write sleutel is secret. Byvoorbeeld, jy kan dit by ’n .env lêer in die wortel van jou projek voeg.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Maak seker dat jy nooit die geheime read/write API-sleutel na kliëntkant produksie-omgewings lek nie.

Ons sal ook twee ekstra omgewingsveranderlikes byvoeg: TACOTRANSLATE_DEFAULT_LOCALE en TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Die verstek-terugval-lêerkode. In hierdie voorbeeld stel ons dit op en vir Engels.
  • TACOTRANSLATE_ORIGIN: Die “gids” waar jou stringe gestoor sal word, soos die URL van jou webwerf. Lees hier meer oor oorspronge.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Stap 3: Opstel van TacoTranslate

Om TacoTranslate met jou toepassing te integreer, moet jy ’n kliënt skep met die API-sleutels van vroeër. Skep byvoorbeeld ’n lêer met die naam /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;

Ons sal binnekort outomaties TACOTRANSLATE_API_KEY definieer.

Om die kliënt in ’n aparte lêer te skep, maak dit makliker om dit later weer te gebruik. Nou, met ’n pasgemaakte /pages/_app.tsx, sal ons die TacoTranslate verskaffer byvoeg.

/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>
	);
}

As jy reeds pasgemaakte pageProps en _app.tsx het, brei asseblief die definisie uit met die eienskappe en kode van hierbo.

Stap 4: Implementering van bedienerkant rendering

TacoTranslate maak voorsiening vir bediener-kant rendering van jou vertalings. Dit verbeter die gebruikerservaring aansienlik deur vertaalde inhoud onmiddellik te wys, in plaas van eers ’n flits van onvertaalde inhoud. Verder kan ons netwerkversoeke aan die kliënt oorslaan, omdat ons reeds al die vertalings het wat ons nodig het.

Ons begin deur /next.config.js te skep of te wysig.

/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'),
	});
};

Wysig die isProduction kontrole om by jou opstelling te pas. As true, sal TacoTranslate die openbare API-sleutel openbaar maak. As ons in ’n plaaslike, toets-, of staging-omgewing is (isProduction is false), sal ons die geheime read/write API-sleutel gebruik om seker te maak nuwe stringe word vir vertaling gestuur.

Tot dusver het ons slegs die Next.js-toepassing opgestel met ’n lys van ondersteunde tale. Die volgende wat ons gaan doen, is om vertalings vir al jou bladsye te haal. Om dit te doen, sal jy óf getTacoTranslateStaticProps of getTacoTranslateServerSideProps gebruik, afhangende van jou vereistes.

Hierdie funksies neem drie argumente: Een Next.js Static Props Context objek, konfigurasie vir TacoTranslate, en opsionele Next.js eienskappe. Neem kennis dat revalidate op getTacoTranslateStaticProps standaard op 60 gestel is, sodat jou vertalings op datum bly.

Om enige van die funksies in 'n bladsy te gebruik, gaan ons aanvaar jy het 'n bladsy-lêer soos /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!"/>;
}

Jy behoort nou die Translate komponent te kan gebruik om stringe binne al jou React-komponente te vertaal.

import {Translate} from 'tacotranslate/react';

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

Stap 5: Ontplooi en toets!

Ons is klaar! Jou React-toepassing sal nou outomaties vertaal word wanneer jy enige stringe by ʼn Translate komponent voeg. Let daarop dat slegs omgewings met read/write toestemmings op die API-sleutel nuwe stringe kan skep wat vertaal moet word. Ons beveel aan om ʼn geslote en beveiligde staging-omgewing te hê waar jy jou produksie-toepassing kan toets met so ʼn API-sleutel, en nuwe stringe kan voeg voordat dit in produksie gaan. Dit sal keer dat iemand jou geheime API-sleutel steel en moontlik jou vertaalprojek oorlaai deur nuwe, nie-verwante stringe by te voeg.

Maak seker om die volledige voorbeeld op ons GitHub-profiel na te gaan. Daar sal jy ook ’n voorbeeld vind van hoe om dit met die App Router te doen! As jy enige probleme ondervind, voel vry om kontak te maak, en ons help jou graag.

TacoTranslate laat jou toe om jou React-toepassings outomaties vinnig te lokaliseer na en van enige taal. Begin vandag nog!

'n Produk van NattskiftetGemaak in Noorweë