Hoe om internasionalisering in 'n Next.js-toepassing te implementeer wat die Pages Router gebruik
Maak jou React-toepassing meer toeganklik en bereik nuwe markte met internasionalisering (i18n).
As die wêreld meer geglobaliseer raak, word dit al hoe belangriker vir webontwikkelaars om toepassings te bou wat gebruikers uit verskillende lande en kulture kan bedien. Een van die sleutelmaniere om dit te bereik, is deur internasionaalisering (i18n), wat jou in staat stel om jou toepassing aan te pas by verskillende tale, geldeenhede en datumformate.
In hierdie handleiding gaan ons verken hoe om internasionaalisering by jou React Next.js-toepassing te voeg, met bedienerkant-rendering. TL;DR: Sien die volledige voorbeeld hier.
Hierdie gids is vir Next.js-toepassings wat die Pages Router gebruik.
As jy die App Router gebruik, sien asseblief hierdie gids in plaas daarvan.
Stap 1: Installeer 'n i18n-biblioteek
Om internasionaalisering in jou Next.js-toepassing te implementeer, kies ons eers 'n i18n-biblioteek. Daar is verskeie gewilde biblioteke, insluitend next-intl. In hierdie voorbeeld gaan ons egter TacoTranslate.
TacoTranslate vertaal jou stringe outomaties na enige taal met behulp van toonaangewende KI, en bevry jou van die vervelige bestuur van JSON-lêers.
Kom ons installeer dit met behulp van npm in jou terminal:
npm install tacotranslateStap 2: Skep 'n gratis TacoTranslate-rekening
Nou dat jy die module geïnstalleer het, is dit tyd om jou TacoTranslate-rekening, 'n vertaalprojek en die ooreenstemmende API-sleutels te skep. Skep hier 'n rekening. Dit is gratis, en vereis nie dat jy 'n kredietkaart hoef by te voeg nie.
In die TacoTranslate-toepassing se gebruikerskoppelvlak, skep 'n projek en navigeer na die oortjie vir API-sleutels. Skep een read sleutel en een read/write sleutel. Ons sal hulle as omgewingsveranderlikes stoor. Die read sleutel is wat ons public noem en die read/write sleutel is secret. Byvoorbeeld, jy kan hulle byvoeg in 'n .env lêer in die wortel van jou projek.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Maak seker dat jy nooit die geheime read/write API-sleutel aan kliëntkant-produksieomgewings lek nie.
Ons sal ook nog twee omgewingsveranderlikes byvoeg: TACOTRANSLATE_DEFAULT_LOCALE en TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: Die standaard terugval-lokaalkode. In hierdie voorbeeld stel ons dit openvir Engels.TACOTRANSLATE_ORIGIN: Die map waar jou stringe gestoor sal word, soos die URL van jou webwerf. Lees meer oor oorspronge hier.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comStap 3: TacoTranslate instel
Om TacoTranslate by jou toepassing te integreer, moet jy 'n kliënt skep met behulp van die vroeër genoemde API-sleutels. Byvoorbeeld, skep 'n lêer met die naam /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;Ons sal binnekort TACOTRANSLATE_API_KEY outomaties definieer.
Om die kliënt in 'n aparte lêer te skep, maak dit makliker om dit later weer te gebruik. Nou, deur 'n pasgemaakte /pages/_app.tsx te gebruik, sal ons die TacoTranslate verskaffer byvoeg.
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>
);
}As jy reeds pasgemaakte pageProps en _app.tsx het, brei asseblief die definisie uit met die eienskappe en kode van hierbo.
Stap 4: Implementering van bedienerkant-rendering
TacoTranslate ondersteun bedienerkant-rendering van jou vertalings. Dit verbeter die gebruikerservaring aansienlik deur vertaalde inhoud dadelik te wys, in plaas van eers 'n flits van onvertaalde inhoud. Boonop kan ons netwerkversoeke op die kliënt oorslaan, omdat ons reeds al die nodige vertalings het.
Ons begin deur /next.config.js te skep of te wysig.
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'),
});
};Pas die isProduction kontrole aan sodat dit by jou opstelling pas. As true, sal TacoTranslate die publieke API-sleutel openbaar maak. As ons in 'n plaaslike, toets- of staging-omgewing is (isProduction is false), sal ons die geheime read/write API-sleutel gebruik om te verseker dat nuwe stringe vir vertaling gestuur word.
Tot dusver het ons slegs die Next.js-toepassing met 'n lys ondersteunde tale opgestel. Die volgende stap is om vertalings vir al jou bladsye op te haal. Om dit te doen, sal jy óf getTacoTranslateStaticProps óf getTacoTranslateServerSideProps gebruik, afhangend van jou vereistes.
Hierdie funksies neem drie argumente: ’n Next.js Static Props Context objek, konfigurasie vir TacoTranslate, en opsionele Next.js-eienskappe. Let daarop dat revalidate op getTacoTranslateStaticProps by verstek op 60 gestel is, sodat jou vertalings op datum bly.
Om een van die funksies in ’n bladsy te gebruik, laat ons aanvaar dat jy ’n bladsylêer soos /pages/hello-world.tsx het.
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!"/>;
}Jy behoort nou in staat te wees om die Translate komponent te gebruik om stringe binne al jou React-komponente te vertaal.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}Stap 5: Ontplooi en toets!
Ons is klaar! Jou React-toepassing sal nou outomaties vertaal word wanneer jy enige stringe by ’n Translate komponent voeg. Let wel dat slegs omgewings met read/write toestemmings op die API‑sleutel nuwe stringe kan skep wat vertaal word. Ons beveel aan om ’n geslote en beveiligde staging‑omgewing te hê waar jy jou produksie‑toepassing met so ’n API‑sleutel kan toets en nuwe stringe kan byvoeg voordat jy dit in produksie neem. Dit sal voorkom dat enigiemand enigiemand jou geheime API‑sleutel steel, en moontlik jou vertaalprojek opblaas deur nuwe, nie‑verwante stringe by te voeg.
Maak seker om bekyk die volledige voorbeeld op ons GitHub-profiel. Daar sal jy ook 'n voorbeeld vind van hoe om dit te doen met behulp van die App Router! As jy enige probleme ondervind, voel vry om ons te kontak, en ons sal meer as graag help.
TacoTranslate stel jou in staat om jou React-toepassings outomaties vinnig na en van meer as 75 tale te lokaliseer. Begin vandag nog!