Kif timplimenta l-internazzjonalizzazzjoni f'applikazzjoni Next.js li qed tuża l- Pages Router
Agħmel l-applikazzjoni React tiegħek aktar aċċessibbli u laħaq swieq ġodda bl-internazzjonalizzazzjoni (i18n).
Bħala din id-dinja ssir aktar globalizzata, issir dejjem aktar importanti għall-iżviluppaturi tal-web li jibnu applikazzjonijiet li jistgħu jindirizzaw l-utenti minn pajjiżi u kultura differenti. Wieħed mill-modijiet ewlenin biex dan jintlaħaq huwa permezz tal-internazzjonalizzazzjoni (i18n), li tippermettilek taġġusta l-applikazzjoni tiegħek għal lingwi, muniti, u formati ta’ data differenti.
F’dan it-tutorja, se nesploraw kif iżżid internazzjonalizzazzjoni fl-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ħal applikazzjonijiet Next.js li qed jużaw il-Pages Router.
Jekk qed tuża l-App Router, ara din il-gwida minflok.
Pass 1: Installa librerija i18n
Sabiex nimplimentaw l-internazzjonalizzazzjoni fl-applikazzjoni Next.js tiegħek, l-ewwel se nagħżlu librerija i18n. Hemm diversi libreriji popolari, inkluż next-intl. Madankollu, f'dan l-eżempju se nużaw TacoTranslate.
TacoTranslate jitraduċi awtomatikament il-kontenut testwali tiegħek għal kwalunkwe lingwa billi juża AI avvanzata, u jiffrankak mill-immaniġġjar tedjanti ta' fajls JSON.
Ejja ninstallawha billi nużaw npm fit-terminal tiegħek:
npm install tacotranslate
Pass 2: Oħloq kont b'xejn ta' 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 API assoċjati. Oħloq kont hawn. Huwa b'xejn, u m'għandekx bżonn iżżid karta ta' kreditu.
Fl-UI tal-applikazzjoni TacoTranslate, oħloq proġett u mur fit-tab tal-ċwievet tal-API tiegħu. Oħloq ċavetta read
, u ċavetta oħra read/write
. Se naħżnuhom bħala varjabbli tal-ambjent. Il-ċavetta read
hija dik li nsejħu public
, u l-ċavetta read/write
hija secret
. Per eżempju, tista' iżżidhom f'fajl .env
fil-għerq tal-proġett tiegħek.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
Kun żgur li qatt ma tnixxi l-ċiavetta sigrieta read/write
tal-API f'ambjenti ta' 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 predefinit tal-lokalità ta' riserva. F'dan l-eżempju, se nissettjawh għalen
għall-Ingliż.TACOTRANSLATE_ORIGIN
: Il-“folder” fejn se jinżammu l-strings tiegħek, bħal pereżempju l-URL tas-sit web tiegħek. Aqra aktar dwar il-oriġini hawn.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Pass 3: Konfigurazzjoni ta' TacoTranslate
Biex tintegra TacoTranslate mal-applikazzjoni tiegħek, se jkollok bżonn toħloq klijent billi tuża ċavetti tal-API msemmija qabel. Per eżempju, oħloq fajl imsejjaħ /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 nkunu qed niddefinixxu b'mod awtomatiku TACOTRANSLATE_API_KEY
dalwaqt.
Il-ħolqien tal-klijent f'fajl separat jagħmilha aktar faċli li tintuża mill-ġdid aktar tard. Issa, billi nużaw fajl personalizzat /pages/_app.tsx
, se nżidu l-provider TacoTranslate
.
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
personalizzati, jekk jogħġbok estendi d-definizzjoni bil-proprjetajiet u l-kodiċi li ġew imsemmija hawn fuq.
Pass 4: Implementazzjoni tal-rendering fuq in-naħa tas-server
TacoTranslate jippermetti rendering fuq in-naħa tas-server tat-traduzzjonijiet tiegħek. Dan ittejjeb b’mod sinifikanti l-esperjenza tal-utent billi juri l-kontenut tradott immedjatament, minflok flash ta’ kontenut mhux tradott fil-bidu. Barra minn hekk, nistgħu nevitaw 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 nimmodifikaw /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'),
});
};
Ibdel il-verifika isProduction
biex taqbel mal-konfigurazzjoni tiegħek. Jekk true
, TacoTranslate ser jurik il-key API pubbliku. Jekk aħna f’ambjent lokali, ta’ test, jew ta’ staging (isProduction
is false
), se nużaw il-key API sigriet read/write
biex niżguraw li ġodda strings jintbagħtu għat-traduzzjoni.
Sa issa, kkonfigurajna l-applikazzjoni Next.js biss b’lista ta’ lingwi appoġġjati. Il-pass li jmiss hu li nġibu t-traduzzjonijiet għall-paġni kollha tiegħek. Biex tagħmel 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 default, sabiex it-traduzzjonijiet tiegħek jibqgħu aġġornati.
Sabiex tuża kwalunkwe waħda mill-funzjonijiet f'paġna, ejja nassumu li għandek fajl ta' paġna bħal /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-stringijiet f'kull komponent tal-React tiegħek.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}
Passu 5: Ippubblika u ittestja!
Għamilna! L-applikazzjoni React tiegħek issa se tiġi tradotta awtomatikament meta żżid kwalunkwe string ma' komponent Translate
. Innota li biss l-ambjenti b'permessi read/write
fuq iċ-ċavetta tal-API jkunu jistgħu joħolqu strings ġodda li jiġu tradotti. Nirrakkomandaw li jkollok ambjent ta' staging magħluq u sigur fejn tista' tittestja l-applikazzjoni tal-produzzjoni tiegħek b'ċavetta tal-API bħal dik, u żżid strings ġodda qabel tmur online. Dan se jipprevjeni lil kulħadd kulħadd milli jisraq iċ-ċavetta sigrieta tal-API tiegħek, u potenzjalment jżid b'mod mhux meħtieġ il-proġett tat-traduzzjoni tiegħek billi jżid strings ġodda u mhux relatati.
Kun żgur li tara l-eżempju sħiħ fuq il-profil tagħna fuq GitHub. Hemm issib ukoll eżempju ta' kif tagħmel dan bl-użu ta' App Router! Jekk tinqalbek xi problema, tħossok liberu li tikkuntattjana, u nkunu aktar minn kuntenti ngħinuk.
TacoTranslate jippermettilek lokalizza awtomatikament l-applikazzjonijiet React tiegħek, malajr lejn u minn aktar minn 75 lingwa. Ibda illum!