Kako implementirati internacionalizacijo v Next.js aplikaciji, ki uporablja Pages Router
Zagotovite boljšo dostopnost svoje React aplikacije in osvojite nove trge z internacionalizacijo (i18n).
Ker svet postaja vse bolj globaliziran, je za spletne razvijalce vse bolj pomembno, da gradijo aplikacije, ki lahko zadovoljijo uporabnike iz različnih držav in kultur. Eden ključnih načinov za to je internacionalizacija (i18n), ki vam omogoča prilagoditi aplikacijo različnim jezikom, valutam in datumskim formatom.
V tem vodniku bomo raziskali, kako dodati internacionalizacijo vaši React Next.js aplikaciji s strežnim upodabljanjem. TL;DR: Oglejte si celoten primer tukaj.
Ta vodič je za Next.js aplikacije, ki uporabljajo Pages Router.
Če uporabljate App Router, si namesto tega oglejte ta vodič.
Korak 1: Namestite i18n knjižnico
Za izvedbo internacionalizacije v vaši aplikaciji Next.js bomo najprej izbrali i18n knjižnico. Obstaja več priljubljenih knjižnic, vključno z next-intl. Vendar pa bomo v tem primeru uporabili TacoTranslate.
TacoTranslate samodejno prevede vaše nize v kateri koli jezik z uporabo najsodobnejše umetne inteligence ter vas osvobodi zamudnega upravljanja z JSON datotekami.
Namestimo ga z uporabo npm v vašem terminalu:
npm install tacotranslateKorak 2: Ustvarite brezplačen račun za TacoTranslate
Zdaj, ko imate modul nameščen, je čas, da ustvarite svoj TacoTranslate račun, prevajalski projekt in pripadajoče API ključe. Ustvarite račun tukaj. Brezplačno je in ne zahteva dodajanja kreditne kartice.
V uporabniškem vmesniku aplikacije TacoTranslate ustvarite projekt in pojdite na zavihek API ključev. Ustvarite en read ključ in en read/write ključ. Shranili jih bomo kot okoljske spremenljivke. Ključ read je t. i. public, ključ read/write pa je secret. Na primer, lahko jih dodate v datoteko .env v korenu vašega projekta.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Poskrbite, da skrivnega read/write API ključa nikoli ne razkrijete v produkcijskih okoljih na odjemalski strani.
Dodali bomo še dve spremenljivki okolja: TACOTRANSLATE_DEFAULT_LOCALE in TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: Privzeta koda jezika, ki se uporabi kot rezervna možnost. V tem primeru jo bomo nastavili naenza angleščino.TACOTRANSLATE_ORIGIN: "mapa", kjer bodo shranjeni vaši nizi, na primer URL vašega spletnega mesta. Preberite več o izvorih tukaj.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comKorak 3: Nastavitev TacoTranslate
Za integracijo TacoTranslate v vašo aplikacijo boste morali ustvariti odjemalca z uporabo prej omenjenih API ključev. Na primer, ustvarite datoteko z imenom /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;Kmalu bomo samodejno definirali TACOTRANSLATE_API_KEY.
Ustvarjanje odjemalca v ločeni datoteki olajša njegovo kasnejšo ponovno uporabo. Zdaj bomo z uporabo prilagojenega /pages/_app.tsx dodali ponudnika 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>
);
}Če že imate prilagojene pageProps in _app.tsx, prosimo, razširite definicijo z lastnostmi in kodo iz zgornjega primera.
Korak 4: Implementacija upodabljanja na strežniku
TacoTranslate omogoča upodabljanje vaših prevodov na strežniku. To znatno izboljša uporabniško izkušnjo, saj prikaže prevedeno vsebino takoj, namesto da bi se najprej pojavil kratek utrip neprevedene vsebine. Poleg tega lahko na odjemalcu preskočimo omrežne zahteve, saj že imamo vse potrebne prevode.
Začeli bomo z ustvarjanjem ali spreminjanjem /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'),
});
};Prilagodite preverjanje isProduction glede na vašo nastavitev. Če je true, bo TacoTranslate prikazal javni API ključ. Če smo v lokalnem, testnem ali predprodukcijskem okolju (isProduction is false), bomo uporabili skrivni read/write API ključ, da bodo novi nizi poslani v prevod.
Do zdaj smo v Next.js aplikacijo nastavili le seznam podprtih jezikov. Naslednja stvar, ki jo bomo naredili, je pridobitev prevodov za vse vaše strani. Za to boste glede na vaše zahteve uporabili bodisi getTacoTranslateStaticProps ali getTacoTranslateServerSideProps.
Te funkcije sprejmejo tri argumente: en Next.js Static Props Context objekt, konfiguracijo za TacoTranslate in neobvezne Next.js lastnosti. Upoštevajte, da je revalidate na getTacoTranslateStaticProps privzeto nastavljen na 60, tako da bodo vaši prevodi ažurni.
Za uporabo katere koli od teh funkcij na strani predpostavimo, da imate datoteko strani, na primer /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!"/>;
}Zdaj bi morali lahko uporabiti komponento Translate za prevajanje nizov v vseh vaših React komponentah.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}Korak 5: Razmestite in preizkusite!
Končali smo! Vaša React aplikacija bo zdaj samodejno prevedena, ko v komponento Translate dodate katerikoli niz. Upoštevajte, da bodo lahko nove nize za prevod ustvarjala le okolja, ki imajo za ključ API dovoljenja read/write. Priporočamo, da imate zaprto in zavarovano staging okolje, kjer lahko preizkusite svojo produkcijsko aplikacijo s takim API ključem in dodate nove nize, preden greste v živo. To bo preprečilo, da bi kdorkoli kdorkoli ukradel vaš skrivni API ključ in morebiti napihnil vaš prevajalski projekt z dodajanjem novih, nepovezanih nizov.
Ne pozabite si ogledati celoten primer na našem GitHub profilu. Tam boste našli tudi primer, kako to narediti z uporabo App Router! Če naletite na kakršnekoli težave, nam prosim pišite, z veseljem vam bomo pomagali.
TacoTranslate omogoča hitro samodejno lokalizacijo vaših React aplikacij v in iz več kot 75 jezikov. Začnite še danes!