TacoTranslate
/
DokimantasyonPri
 
Leson Patikilye
May 04

Kijan pou aplike entènasyonalizasyon nan yon aplikasyon Next.js ki sèvi ak Pages Router

Fè aplikasyon React ou a plis aksesib epi rive nan nouvo mache avèk entènasyonalizasyon (i18n).

Pandan mond lan ap vin pi plis globalize, li vin pi enpòtan pou devlopè entènèt yo bati aplikasyon ki kapab satisfè bezwen itilizatè ki soti nan diferan peyi ak kilti. Youn nan fason kle pou reyalize sa se atravè entènasyonalizasyon (i18n), ki pèmèt ou adapte aplikasyon ou a diferan lang, lajan, ak fòma dat.

Nan tutoryèl sa a, n ap eksplore kijan pou ajoute entènasyonalizasyon nan aplikasyon React Next.js ou a, ak rann sou bò sèvè. TL;DR: Gade egzanp konplè a isit la.

Gid sa a se pou aplikasyon Next.js ki ap itilize Pages Router.
Si w ap itilize App Router, tanpri gade gid sa a olye.

Etap 1 : Enstale yon bibliyotèk i18n

Pou aplike entènasyonalizasyon nan aplikasyon Next.js ou a, n ap premye chwazi yon bibliyotèk i18n. Gen plizyè bibliyotèk popilè, tankou next-intl. Sepandan, nan egzanp sa a, n ap itilize TacoTranslate.

TacoTranslate tradui otomatikman chenn tèks ou yo nan nenpòt lang lè l sèvi avèk entèlijans atifisyèl avanse, epi li libere ou nan jere dosye JSON ki konn fatigan.

Ann enstale li avèk npm nan tèminal ou:

npm install tacotranslate

Etap 2 : Kreye yon kont TacoTranslate gratis

Kounye a ke ou gen modil la enstale, li lè pou kreye kont TacoTranslate ou a, yon pwojè tradiksyon, ak kle API ki asosye yo. Kreye yon kont isit la. Li gratis, epi pa mande w ajoute yon kat kredi.

Nan entèfas aplikasyon TacoTranslate la, kreye yon pwojè, epi ale nan tab kle API li yo. Kreye yon kle read, epi yon lòt kle read/write. Nou pral sove yo kòm varyab anviwònman. Kle read la se sa nou rele public, epi kle read/write la se secret. Pa egzanp, ou ka ajoute yo nan yon fichye .env nan rasin pwojè ou a.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Asire w pa janm lage kle API sekre read/write nan anviwònman pwodiksyon bò kliyan an.

N ap ajoute tou de lòt varyab anviwònman: TACOTRANSLATE_DEFAULT_LOCALE ak TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Kòd lokal defo pou retounen. Nan egzanp sa a, nou pral mete li sou en pou Anglè.
  • TACOTRANSLATE_ORIGIN: “Katab” kote chenn ou yo pral estoke, tankou URL sit wèb ou. Li plis sou origin yo isit la.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Etap 3 : Konfigirasyon TacoTranslate

Pou entegre TacoTranslate ak aplikasyon w lan, w ap bezwen kreye yon kliyan lè l sèvi avèk kle API yo soti pi bonè. Pa egzanp, kreye yon fichye ki rele /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;

N ap otomatikman defini TACOTRANSLATE_API_KEY byento.

Kreye kliyan an nan yon dosye apa fè li pi fasil pou itilize ankò pita. Kounye a, itilize yon /pages/_app.tsx koutim, nou pral ajoute founisè 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>
	);
}

Si ou deja gen pageProps ak _app.tsx pèsonalize, tanpri elaji definisyon an ak pwopriyete yo ak kòd ki anlè a.

Etap 4: Aplike rann sou bò sèvè a

TacoTranslate pèmèt rann sou sèvè pou tradiksyon ou yo. Sa amelyore anpil eksperyans itilizatè a pa montre kontni ki deja tradui imedyatman, olye de yon flash kontni ki pa tradui an premye. Anplis de sa, nou ka sote demann rezo sou kliyan an, paske nou deja gen tout tradiksyon nou bezwen yo.

N ap kòmanse pa kreye oswa modifye /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'),
	});
};

Modifye tès isProduction lan pou adapte l ak konfigirasyon ou. Si true, TacoTranslate ap montre kle API piblik la. Si nou nan yon anviwònman lokal, tès, oswa staging (isProduction is false), n ap itilize kle API sekrè read/write la pou asire nouvo chenn yo voye pou tradiksyon.

Jiska kounye a, nou sèlman configuré aplikasyon Next.js la ak yon lis lang ki sipòte yo. Pwochen bagay nou pral fè se pran tradiksyon pou tout paj ou yo. Pou fè sa, w ap itilize swa getTacoTranslateStaticProps oswa getTacoTranslateServerSideProps selon bezwen ou yo.

Fonksyon sa yo pran twa agiman: Youn se yon objè Next.js Static Props Context, konfigirasyon pou TacoTranslate, ak pwopriyete Next.js ki opsyonèl. Remake ke revalidate sou getTacoTranslateStaticProps la fikse a 60 pa default, konsa tradiksyon ou yo ap toujou ajou.

Pou sèvi ak youn nan fonksyon sa yo nan yon paj, ann sipoze ou gen yon fichye paj tankou /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!"/>;
}

Kounye a ou ta dwe kapab itilize Translate konpozan an pou tradui strings nan tout konpozan React ou yo.

import {Translate} from 'tacotranslate/react';

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

Etap 5: Pibliye epi teste!

Nou fini! Aplikasyon React ou a ap kounye a tradui otomatikman lè ou ajoute nenpòt chèn nan yon konpozan Translate. Remake byen ke se sèlman anviwònman ki gen pèmisyon read/write sou kle API a ki pral kapab kreye nouvo chèn pou tradui. Nou rekòmande gen yon anviwònman staging fèmen ak an sekirite kote ou ka teste aplikasyon pwodiksyon ou a ak yon kle API konsa, ajoute nouvo chèn anvan ou ale viv. Sa ap anpeche nenpòt moun vòlè kle API sekrè ou a, e potansyèlman anfle pwojè tradiksyon ou a pa ajoute nouvo chèn ki pa gen rapò.

Asire w tcheke egzanp konplè a sou pwofil GitHub nou an. La a, w ap jwenn tou yon egzanp sou kijan pou fè sa lè w ap itilize App Router la! Si w rankontre nenpòt pwoblèm, pa ezite kontakte nou, n ap plis pase kontan ede w.

TacoTranslate pèmèt ou otomatikman lokalize aplikasyon React ou yo rapidman nan plis pase 75 lang. Kòmanse jodi a!

Yon pwodwi soti nan NattskiftetFè nan Nòvèj