TacoTranslate
/
DokimantasyonPri
 
Gid
May 04

Kouman aplike entènasyonalizasyon nan yon aplikasyon Next.js ki itilize Pages Router

Fè aplikasyon React ou pi aksesib epi rive nan nouvo mache yo ak entènasyonalizasyon (i18n).

Pandan mond lan ap vin pi globalize, li vin de pli zan pli enpòtan pou devlopè entènèt yo bati aplikasyon ki ka sèvi 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: Wè 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 pito.

Etap 1: Enstale yon bibliyotèk i18n

Pou enplemante 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 fraz ou yo nan nenpòt lang lè l sèvi avèk entèlijans atifisyèl avanse, epi li libere ou de jesyon fatigan fichye JSON yo.

Ann enstale li ak 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, yon pwojè tradiksyon, ak kle API ki asosye yo. Kreye yon kont isit la. Li gratis, e pa mande pou ou ajoute yon kat kredi.

Nan entèfas aplikasyon TacoTranslate la, kreye yon pwojè epi navige nan onglet kle API li yo. Kreye yon kle read ak yon kle read/write. N ap 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 ta ka ajoute yo nan yon dosye .env nan rasin pwojè ou a.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Asire w pou ou pa janm revele kle API sekrè read/write nan anviwònman pwodiksyon bò kliyan an.

Nou pral tou ajoute de lòt varyab anviwònman: TACOTRANSLATE_DEFAULT_LOCALE ak TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Kòd lokal defo pou itilize kòm rezèv. Nan egzanp sa a, n ap mete li sou en pou Angle.
  • TACOTRANSLATE_ORIGIN: “Katab” kote tèks ou yo ap estoke, tankou URL sit entènèt ou a. Li plis sou orijin yo isit la.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Etap 3: Mete TacoTranslate an plas

Pou entegre TacoTranslate nan aplikasyon ou an, ou pral bezwen kreye yon kliyan ki sèvi ak kle API yo ki te kreye pi bonè. Pa egzanp, kreye yon dosye 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;

Byento n ap defini TACOTRANSLATE_API_KEY otomatikman.

Kreye kliyan an nan yon dosye separe fè li pi fasil pou itilize ankò pita. Kounye a, lè n ap itilize yon /pages/_app.tsx koutim, n ap 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 koutim pageProps ak _app.tsx, tanpri elaji definisyon an ak pwopriyete yo ak kòd ki anwo a.

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

TacoTranslate pèmèt rann sou sèvè tradiksyon ou yo. Sa amelyore anpil eksperyans itilizatè a paske li montre kontni tradui imedyatman, olye pou itilizatè a wè yon kout klète kote kontni an parèt san tradiksyon anvan. Anplis, nou kapab evite demann rezo sou bò 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 chèk isProduction la pou li adapte ak konfigirasyon ou. Si true, TacoTranslate ap ekspoze 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 te konfigire aplikasyon Next.js la ak yon lis lang ki sipòte yo. Pwochen bagay nou pral fè se rekipere tradiksyon pou tout paj ou yo. Pou fè sa, w ap itilize swa getTacoTranslateStaticProps oswa getTacoTranslateServerSideProps selon bezwen ou.

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

Pou itilize nenpòt 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!"/>;
}

Ou ta dwe kounye a kapab itilize konpozan Translate pou tradui chenn karaktè nan tout konpozan React ou yo.

import {Translate} from 'tacotranslate/react';

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

Etap 5: Deplwaye epi teste!

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

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

TacoTranslate pèmèt ou lokalize otomatikman aplikasyon React ou yo ale ak tounen pou plis pase 75 lang. Kòmanse jodi a!

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