Sådan implementerer du internationalisering i en Next.js-applikation, der bruger Pages Router
Gør din React-applikation mere tilgængelig og nå nye markeder med internationalisering (i18n).
Efterhånden som verden bliver mere globaliseret, bliver det stadig vigtigere for webudviklere at bygge applikationer, der kan imødekomme brugere fra forskellige lande og kulturer. En af de vigtigste måder at opnå dette på er gennem internationalisering (i18n), som gør det muligt for dig at tilpasse din applikation til forskellige sprog, valutaer og datoformater.
I denne vejledning vil vi gennemgå, hvordan du tilføjer internationalisering til din React Next.js-applikation med server-side rendering. TL;DR: Se hele eksemplet her.
Denne guide er til Next.js-applikationer, der bruger Pages Router.
Hvis du bruger App Router, se i stedet denne guide.
Trin 1: Installer et i18n-bibliotek
For at implementere internationalisering i din Next.js-applikation vælger vi først et i18n-bibliotek. Der findes flere populære biblioteker, herunder next-intl. I dette eksempel vil vi dog bruge TacoTranslate.
TacoTranslate oversætter automatisk dine strenge til ethvert sprog ved hjælp af banebrydende AI og befrier dig fra det tidskrævende arbejde med at administrere JSON-filer.
Lad os installere det ved hjælp af npm i din terminal:
npm install tacotranslate
Trin 2: Opret en gratis TacoTranslate-konto
Nu hvor du har modulet installeret, er det tid til at oprette din TacoTranslate-konto, et oversættelsesprojekt og tilhørende API-nøgler. Opret en konto her. Det er gratis, og du behøver ikke at angive et kreditkort.
I TacoTranslate-applikationens brugergrænseflade opretter du et projekt og går til fanen API-nøgler. Opret en read
nøgle og en read/write
nøgle. Vi gemmer dem som miljøvariabler. Den read
nøgle er det, vi kalder public
, og den read/write
nøgle er secret
. For eksempel kan du tilføje dem til en .env
fil i roden af dit projekt.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
Sørg for aldrig at lække den hemmelige read/write
API-nøgle til produktionsmiljøer på klientsiden.
Vi tilføjer også to yderligere miljøvariabler: TACOTRANSLATE_DEFAULT_LOCALE
og TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: Den standardmæssige fallback-lokalkode. I dette eksempel sætter vi den tilen
for engelsk.TACOTRANSLATE_ORIGIN
: Den "mappe", hvor dine strenge vil blive gemt, såsom URL'en til dit websted. Læs mere om origins her.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Trin 3: Opsætning af TacoTranslate
For at integrere TacoTranslate med din applikation skal du oprette en klient ved hjælp af de API-nøgler, du fik tidligere. For eksempel opret en fil med navnet /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;
Vi vil snart automatisk definere TACOTRANSLATE_API_KEY
.
At oprette klienten i en separat fil gør det nemmere at bruge den igen senere. Nu, ved at bruge en tilpasset /pages/_app.tsx
, vil vi tilføje TacoTranslate
provideren.
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>
);
}
Hvis du allerede har brugerdefinerede pageProps
og _app.tsx
, så udvid venligst definitionen med egenskaberne og koden fra ovenstående.
Trin 4: Implementering af serverside-rendering
TacoTranslate understøtter server-side rendering af dine oversættelser. Det forbedrer brugeroplevelsen markant ved straks at vise oversat indhold i stedet for først at vise et kort glimt af uoversat indhold. Derudover kan vi undgå netværksanmodninger på klientsiden, fordi vi allerede har alle de oversættelser, vi behøver.
Vi starter med at oprette eller ændre /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'),
});
};
Tilpas isProduction
tjekket, så det passer til din opsætning. Hvis true
, vil TacoTranslate vise den offentlige API-nøgle. Hvis vi befinder os i et lokalt, test- eller staging-miljø (isProduction
is false
), vil vi bruge den hemmelige read/write
API-nøgle for at sikre, at nye strenge bliver sendt til oversættelse.
Indtil nu har vi kun sat Next.js-applikationen op med en liste over understøttede sprog. Det næste, vi vil gøre, er at hente oversættelser til alle dine sider. For at gøre det skal du bruge enten getTacoTranslateStaticProps
eller getTacoTranslateServerSideProps
afhængigt af dine krav.
Disse funktioner tager tre argumenter: et Next.js Static Props Context objekt, en konfiguration til TacoTranslate og valgfrie Next.js-egenskaber. Bemærk, at revalidate
på getTacoTranslateStaticProps
er sat til 60 som standard, så dine oversættelser holdes opdaterede.
For at bruge en af funktionerne på en side, lad os antage, at du har en sidefil som /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!"/>;
}
Du bør nu kunne bruge Translate
komponenten til at oversætte strenge i alle dine React-komponenter.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}
Trin 5: Udrul og test!
Vi er færdige! Din React-applikation vil nu automatisk blive oversat, når du tilføjer tekststrenge til en Translate
komponent. Bemærk, at kun miljøer med read/write
tilladelser på API-nøglen vil kunne oprette nye tekststrenge til oversættelse. Vi anbefaler, at du har et lukket og sikret staging-miljø, hvor du kan teste din produktionsapplikation med en sådan API-nøgle og tilføje nye tekststrenge, inden du går live. Dette vil forhindre enhver enhver i at stjæle din hemmelige API-nøgle og potentielt opblæse dit oversættelsesprojekt ved at tilføje nye, ikke-relaterede strenge.
Husk at tjekke det komplette eksempel på vores GitHub-profil. Der finder du også et eksempel på, hvordan man gør dette med App Router! Hvis du støder på problemer, er du velkommen til at kontakte os, og vi hjælper dig meget gerne.
TacoTranslate gør det muligt at lokalisere dine React-applikationer automatisk og hurtigt til og fra mere end 75 sprog. Kom i gang i dag!