Kuidas rakendada mitmekeelsust Next.js rakenduses, mis kasutab Pages Router
Muuda oma Reacti rakendus ligipääsetavamaks ja jõua uute turgudeni rahvusvahelistamise (i18n) abil.
Maailma globaliseerudes on veebiarendajatel üha olulisem luua rakendusi, mis suudavad teenindada kasutajaid erinevatest riikidest ja kultuuridest. Üks peamisi viise selle saavutamiseks on rahvusvahelistamine (i18n), mis võimaldab kohandada teie rakendust erinevatele keeltele, valuutadele ja kuupäevavormingutele.
Selles juhendis vaatleme, kuidas lisada rahvusvahelistamist teie React Next.js rakendusse koos serveripoolse renderdamisega. TL;DR: Vaata täielikku näidet siit.
See juhend on mõeldud Next.js rakendustele, mis kasutavad Pages Router.
Kui kasutate App Router, vaadake selle asemel seda juhendit.
Samm 1: Paigaldage i18n-teek
Et lisada rahvusvahelistamist (i18n) oma Next.js rakendusse, valime esmalt i18n-teegi. On mitmeid populaarseid teeke, sealhulgas next-intl. Siiski kasutame selles näites TacoTranslate.
TacoTranslate tõlgib teie stringid automaatselt mis tahes keelde, kasutades tipptasemel tehisintellekti, ning säästab teid JSON-failide tüütust haldamisest.
Paigaldame selle oma terminalis, kasutades npm:
npm install tacotranslateSamm 2: Loo tasuta TacoTranslate konto
Nüüd, kui olete mooduli installinud, on aeg luua oma TacoTranslate konto, tõlkeprojekt ja nendega seotud API-võtmed. Loo konto siin. See on tasuta ning ei nõua krediitkaardi lisamist.
TacoTranslate rakenduse kasutajaliideses loo projekt ja navigeeri selle API-võtmete vahekaardile. Loo üks read võti ja üks read/write võti. Salvestame need keskkonnamuutujatena. read võtit kutsume public ja read/write võtit secret. Näiteks võid need lisada projekti juurkausta asuvasse .env faili.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Veendu, et sa ei avalda kunagi salajast read/write API‑võtit kliendipoolses tootmiskeskkonnas.
Lisame ka kaks täiendavat keskkonnamuutujat: TACOTRANSLATE_DEFAULT_LOCALE ja TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: Vaikimisi tagavara keele kood. Selles näites määrame selle väärtuseksen, mis tähendab inglise keelt.TACOTRANSLATE_ORIGIN: “kaust”, kuhu teie stringid salvestatakse, näiteks teie veebisaidi URL. Loe originide kohta siit.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com3. samm: TacoTranslate seadistamine
Et integreerida TacoTranslate oma rakendusega, peate looma kliendi, kasutades varem mainitud API-võtmeid. Näiteks looge fail nimega /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;Me määrame TACOTRANSLATE_API_KEY varsti automaatselt.
Kliendi loomine eraldi faili muudab selle hiljem uuesti kasutamise lihtsamaks. Nüüd, kasutades kohandatud /pages/_app.tsx, lisame TacoTranslate provideri.
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>
);
}Kui teil on juba kohandatud pageProps ja _app.tsx, siis palun laiendage definitsiooni ülaltoodud omaduste ja koodiga.
Samm 4: Serveripoolse renderdamise rakendamine
TacoTranslate võimaldab teie tõlgete serveripoolset renderdamist. See parandab oluliselt kasutajakogemust, kuvades tõlgitud sisu kohe, selle asemel et esmalt näidata lühikest hetke tõlkimata sisu. Lisaks saame kliendipoolseid võrgu päringuid vahele jätta, kuna meil on juba kõik vajalikud tõlked olemas.
Alustame /next.config.js loomise või muutmisega.
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'),
});
};Muuda isProduction kontrolli vastavalt oma seadistusele. Kui true, kuvab TacoTranslate avaliku API-võtme. Kui me oleme lokaalses, test- või staging-keskkonnas (isProduction is false), kasutame salajast read/write API-võtit, et veenduda, et uued stringid saadetakse tõlkimiseks.
Siiani oleme Next.js-i rakenduse seadistanud ainult toetatud keelte loendiga. Järgmiseks hangime tõlked kõigile teie lehtedele. Selleks kasutate oma vajadustest lähtuvalt kas getTacoTranslateStaticProps või getTacoTranslateServerSideProps.
Need funktsioonid võtavad kolm argumenti: ühe Next.js Static Props Context objekti, TacoTranslate'i konfiguratsiooni ja valikulisi Next.js-i omadusi. Pange tähele, et revalidate on getTacoTranslateStaticProps puhul vaikimisi seatud väärtuseks 60, nii et teie tõlked jäävad ajakohaseks.
Et kasutada kumbagi funktsiooni lehel, oletame, et teil on lehefail nagu /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!"/>;
}Nüüd peaksite saama kasutada Translate komponenti stringide tõlkimiseks kõigis oma React-komponentides.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}Samm 5: Juuruta ja testi!
Oleme valmis! Teie Reacti rakendus tõlgitakse nüüd automaatselt, kui lisate mis tahes stringe komponenti Translate. Pange tähele, et ainult keskkonnad, millel on API‑võtmel read/write õigused, saavad luua uusi tõlkimiseks mõeldud stringe. Soovitame omada suletud ja turvalist staging‑keskkonda, kus saate oma tootmisrakendust sellise API‑võtmega testida ja lisada uusi stringe enne avalikustamist. See takistab kellegi teie salajase API‑võtme varastamist ning potentsiaalselt tõlkeprojekti paisumist, kui sinna lisatakse uusi, asjasse mittepuutuvaid stringe.
Kindlasti vaadake meie GitHubi profiilil olevat täielikku näidet. Seal leiate ka näite, kuidas seda teha, kasutades App Router! Kui teil tekib mõni probleem, võtke julgelt ühendust, ja me aitame teid hea meelega.
TacoTranslate võimaldab teie React-rakendusi automaatselt ja kiiresti lokaliseerida enam kui 75 keelde ja tagasi. Alustage juba täna!