Kif tapplika l-internazzjonalizzazzjoni f’applikazzjoni Next.js li tuża Pages Router
Agħmel l-applikazzjoni React tiegħek aktar aċċessibbli u laħaq aktar swieq ġodda bl-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 lill-utenti minn pajjiżi u kulturi differenti. Wieħed mill-modi ewlenin biex jintlaħaq dan huwa permezz tal-internazjonalizzazzjoni (i18n), li tippermettilek tadatta l-applikazzjoni tiegħek għal lingwi differenti, muniti, u formati ta’ data.
TL;DR: Ara l-eżempju sħiħ hawn.
Dan il-gwida hija għal 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 i18n
Biex timplimenta internazzjonalizzazzjoni fl-applikazzjoni tiegħek ta’ Next.js, l-ewwel se nagħżlu librerija i18n. Hemm diversi libreriji popolari, inklużi next-intl. Madankollu, f’dan l-eżempju, se nużaw TacoTranslate.
TacoTranslate awtomatikament it-traduzzjonijiet tiegħek għal kwalunkwe lingwa billi juża AI avvanzata, u jħalli lilek millisħubija tedjew ta’ ġestjoni ta’ fajls JSON.
Ejja ninstallawh billi nużaw npm fit-terminal tiegħek:
npm install tacotranslate
Pass 2: Oħloq kont ħieles ta’ TacoTranslate
Issa li għandek il-modulu installat, wasal iż-żmien li toħloq kont tiegħek fuq TacoTranslate, proġett ta’ traduzzjoni, u ċwievet API relatati. Oħloq kont hawn. Huwa ħieles, u ma jeħtieġlekx żżid karta ta’ kreditu.
Within the TacoTranslate application UI, oħloq proġett, u mur fit-tab tal-API keys tiegħu. Oħloq wieħed read
key, u ieħor read/write
key. Aħna se ninħażnuhom bħala varjabbli ta’ ambjent. Il-key read
huwa dak li nsejħulu public
u l-key read/write
huwa secret
. Per eżempju, tista’ żżidhom f’fajl .env
fir-root tal-proġett tiegħek.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
Kun żgur li qatt ma tnixxi s-sigriet read/write
API key lejn ambjenti ta’ produzzjoni fuq in-naħa tal-klijent.
Se nnaqqsu wkoll żewġ varjabbli ambjentali oħra: TACOTRANSLATE_DEFAULT_LOCALE
u TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: Il-kodiċi default tal-lokalità fallback. F’dan l-eżempju, se npoġġuh f’en
għall-Ingliż.TACOTRANSLATE_ORIGIN
: Il-“folder” fejn se jinżammu l-kordi tiegħek, bħall-URL tas-sit web tiegħek. Aqra aktar dwar l-origini hawn.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Step 3: Twaqqif ta’ TacoTranslate
Biex tintegra TacoTranslate mal-applikazzjoni tiegħek, tkun meħtieġa li toħloq klijent billi tuża l-API keys minn qabel. Per eżempju, toħ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 awtomatikament TACOTRANSLATE_API_KEY
dalwaqt.
Il-ħolqien tal-klijent f’fajl separat jagħmilha aktar faċli biex tużah mill-ġdid aktar ’il quddiem. Issa, billi nużaw /pages/_app.tsx
personalizzat, se nżidu l-fornitur 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-propjetajiet u l-kodiċi minn fuq.
Pass 4: Implimentazzjoni tas-server side rendering
TacoTranslate jippermetti rendering fuq in-naħa tas-server tat-traduzzjonijiet tiegħek. Dan ittejjeb ħafna l-esperjenza tal-utent billi juri kontenut tradott immedjatament, minflok flash ta' kontenut mhux tradott fl-ewwel. Barra minn hekk, nistgħu nevitaw it-talbiet tan-netwerk fuq il-klijent, għax diġà għandna t-traduzzjonijiet kollha li għandna bżonn.
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'),
});
};
Aġġorna l-verifika isProduction
biex taqbel mas-settings tiegħek. Jekk true
, TacoTranslate se juri l-API key pubblika. Jekk qegħdin f’ambjent lokali, ta’ prova, jew ta’ staging (isProduction
is false
), se nużaw l-API key sigrieta read/write
biex niżguraw li ġodda strings jintbagħtu għat-traduzzjoni.
Sakemm issa, stajna biss issettja l-applikazzjoni Next.js b'lista ta' lingwi appoġġjati. L-affarijiet li jmiss ser nagħmlu huma li nġibu t-traduzzjonijiet għal kull paġna tiegħek. Għal dak, ser tuża jew getTacoTranslateStaticProps
jew getTacoTranslateServerSideProps
skont ir-rekwiżiti tiegħek.
Dawn il-funzjonijiet jieħdu tliet argumenti: oġġett wieħed Next.js Static Props Context, konfigurazzjoni għal TacoTranslate, u proprjetajiet fakultattivi ta' Next.js. Nota li revalidate
fuq getTacoTranslateStaticProps
huwa issettjat għal 60 b'default, sabiex it-traduzzjonijiet tiegħek jibqgħu aġġornati.
Biex tuża kwalunkwe waħda mill-funzjonijiet f'paġna, ejja npoġġu li għandek fajl tal-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-kordi kollha fil-komponenti React tiegħek.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}
Pass 5: Ibgħat u ipprova!
Simplifikajna! L-applikazzjoni React tiegħek issa se tiġi tradotta awtomatikament meta żżid kwalunkwe stringa ma’ komponent Translate
. Nota li biss l-ambjenti b’permessi read/write
fuq il-key tal-API se jkunu jistgħu joħolqu stringi ġodda għat-traduzzjoni. Nissuġġerixxu li jkollok ambjent ta’ staging magħluq u sikur fejn tista’ tesplora l-applikazzjoni tal-produzzjoni tiegħek b’API key bħal dak, iżżid stringi ġodda qabel toħroġ live. Dan jipprevjeni lil xi ħadd milli jxarrbo l-API key sigriet tiegħek u potenzjalment jikbere l-proġett tat-traduzzjoni tiegħek billi iżżid stringi ġodda li mhumiex relatati.
Kun żgur li tiċċekkja l-eżempju sħiħ fil-profil tagħna fuq GitHub. Hemmhekk, ssib ukoll eżempju ta’ kif tagħmel dan billi tuża l-App Router! Jekk tħabbat wiċċek ma’ xi problemi, toqgħodx lura milli tikkuntattjana, u nkunu aktar minn kuntenti li ngħinuk.
TacoTranslate jippermettilek li lokalizza awtomatikament l-applikazzjonijiet React tiegħek b’mod rapidu għal u minn kwalunkwe lingwa. Ibda llum!