TacoTranslate
/
DokumentazzjoniPrezzijiet
 
Gwida
Mej 04

Kif timplimenta l-internazzjonalizzazzjoni f'applikazzjoni Next.js li qed tuża Pages Router

Agħmel l-applikazzjoni React tiegħek aktar aċċessibbli u tilħaq swieq ġodda permezz tal-internazzjonalizzazzjoni (i18n).

Hekk kif id-dinja ssir aktar globalizzata, huwa dejjem aktar importanti għall-iżviluppaturi tal-web li jibnu applikazzjonijiet li jistgħu jindirizzaw l-utenti minn pajjiżi u kulturi differenti. Wieħed mill-modi ewlenin biex dan jintlaħaq huwa permezz tal-internazzjonalizzazzjoni (i18n), li tippermettilek tadatta l-applikazzjoni tiegħek għal lingwi differenti, muniti u formati ta' data.

F'dan it-tutorja, se nesploraw kif iżżid l-internazzjonalizzazzjoni mal-applikazzjoni React Next.js tiegħek, b'rendering fuq in-naħa tas-server. TL;DR: Ara l-eżempju sħiħ hawn.

Din il-gwida hija għall-applikazzjonijiet Next.js li qed jużaw il-Pages Router.
Jekk qed tuża l-App Router, jekk jogħġbok ara din il-gwida minflok.

Pass 1: Installa librerija għall-i18n

Biex nimplimentaw l-internazzjonalizzazzjoni fl-applikazzjoni Next.js tiegħek, l-ewwel se nagħżlu librerija i18n. Hemm bosta libreriji popolari, inkluż next-intl. Madankollu, f'dan l-eżempju, se nużaw TacoTranslate.

TacoTranslate jittraduċi awtomatikament il-strings tiegħek għal kwalunkwe lingwa billi juża AI avvanzat, u jeħlisek mill-immaniġġjar tedjuż tal-fajls JSON.

Ninstallawh billi nużaw npm fit-terminal tiegħek:

npm install tacotranslate

Pass 2: Oħloq kont b'xejn f'TacoTranslate

Issa li għandek il-modulu installat, wasal iż-żmien li toħloq il-kont TacoTranslate tiegħek, proġett ta' traduzzjoni, u ċwievet tal-API assoċjati. Oħloq kont hawn. Huwa b'xejn, u ma jeħtieġlekx li żżid karta ta' kreditu.

Fl-UI tal-applikazzjoni TacoTranslate, oħloq proġett u mur fit-tab tal-API keys. Oħloq ċavetta waħda read u ċavetta oħra read/write. Se niffrankawhom bħala varjabbli tal-ambjent. Iċ-ċavetta read hija dak li nsejħulu public, u ċ-ċavetta read/write hija secret. Per eżempju, tista' iżżidhom f'fajl .env fil-root tal-proġett tiegħek.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Kun żgur li qatt ma tesponi ċavetta sigrieta tal-API read/write fl-ambjenti tal-produzzjoni fuq in-naħa tal-klijent.

Se nżidu wkoll żewġ varjabbli tal-ambjent oħrajn: TACOTRANSLATE_DEFAULT_LOCALE u TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Il-kodiċi tal-lokal ta' fallback predefinit. F'dan l-eżempju, se nissettjawh bħala en għall-Ingliż.
  • TACOTRANSLATE_ORIGIN: Il-"folder" fejn se jinħażen il-kontenut testwali tiegħek, bħal pereżempju l-URL tas-sit tiegħek. Aqra aktar dwar l-origini hawn.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Pass 3: Issettjar ta' TacoTranslate

Biex tintegra TacoTranslate fl-applikazzjoni tiegħek, se jkollok bżonn toħloq klijent billi tuża ċ-ċwievet tal-API minn qabel. Per eżempju, oħloq fajl imsejjaħ /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;

Se niddedefinixxu awtomatikament TACOTRANSLATE_API_KEY dalwaqt.

Meta toħloq il-klijent f'fajl separat, ikun aktar faċli tużah mill-ġdid aktar tard. Issa, billi nużaw fajl /pages/_app.tsx personalizzat, se nżidu l-fornitur 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>
	);
}

Jekk diġà għandek pageProps u _app.tsx, estendi id-definizzjoni bil-proprjetajiet u l-kodiċi msemmija hawn fuq, jekk jogħġbok.

Pass 4: Implementazzjoni tar-rendering fuq il-server

TacoTranslate jippermetti l-rendering fuq in-naħa tas-server tat-traduzzjonijiet tiegħek. Dan itejjeb b'mod sinifikanti l-esperjenza tal-utent billi juri l-kontenut tradott immedjatament, minflok flash qasir ta' kontenut mhux tradott fil-bidu. Barra minn hekk, nistgħu nevitaw it-talbiet tan-netwerk fuq il-klijent, għax diġà għandna l-traduzzjonijiet kollha li għandna bżonn.

Se nibdew billi noħolqu jew nibdlu /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'),
	});
};

Aġġusta l-kontroll isProduction skont il-konfigurazzjoni tiegħek. Jekk true, TacoTranslate se juri l-API key pubblika. Jekk ninsabu f'ambjent lokali, ta' test, jew ta' staging (isProduction is false), se nużaw il-API key sekret read/write biex niżguraw li strings ġodda jintbagħtu għall-traduzzjoni.

Sa issa, stabbilajna biss l-applikazzjoni Next.js b'lista ta' lingwi appoġġjati. Il-pass li jmiss huwa li nġibu t-traduzzjonijiet għal kull paġna tiegħek. Biex nagħmlu dan, se tuża jew getTacoTranslateStaticProps jew getTacoTranslateServerSideProps skont il-ħtiġijiet tiegħek.

Dawn il-funzjonijiet jieħdu tliet argumenti: oġġett wieħed Next.js Static Props Context, konfigurazzjoni għal TacoTranslate, u proprjetajiet opzjonali ta' Next.js. Innota li revalidate fuq getTacoTranslateStaticProps huwa stabbilit għal 60 b'mod predefinit, sabiex it-traduzzjonijiet tiegħek jibqgħu aġġornati.

Biex tuża kwalunkwe mill-funzjonijiet f'paġna, ejja nassumu li għandek fajl ta' paġna bħal /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!"/>;
}

Issa għandek tkun tista' tuża l-komponent Translate biex tittraduċi l-kontenut testwali f'kull wieħed mill-komponenti React tiegħek.

import {Translate} from 'tacotranslate/react';

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

Pass 5: Inniedi u ittestja!

Għamilna! L-applikazzjoni React tiegħek issa se tiġi tradotta awtomatikament meta żżid kwalunkwe stringijiet f'komponent Translate. Innota li biss ambjenti b'permessi read/write fuq il-API key ikunu jistgħu joħolqu stringijiet ġodda biex jiġu tradotti. Nirrakkomandaw li jkollok ambjent ta' staging magħluq u sigur fejn tista' tittestja l-applikazzjoni tal-produzzjoni tiegħek bl-API key bħal dak, u żżid stringijiet ġodda qabel ma tmur live. Dan jipprevjeni li xi ħadd jisraq il-API key sigriet tiegħek, u potenzjalment iwarrab il-proġett tat-traduzzjoni tiegħek billi jżid stringijiet ġodda u mhux relatati.

Kun żgur li iċċekkja l-eżempju sħiħ fil-profil tagħna fuq GitHub. Hemm, issib ukoll eżempju ta' kif tagħmel dan billi tuża App Router! Jekk tiffaċċja xi problemi, tħossok liberu li tikkuntattjana, u inkunu aktar minn kuntenti ngħinuk.

TacoTranslate jippermettilek li lokalizza awtomatikament l-applikazzjonijiet React tiegħek malajr lejn u minn aktar minn 75 lingwi. Ibda llum!

Prodott minn NattskiftetMagħmul fil-Norveġja