TacoTranslate
/
DokumentationPriser
 
Vejledning
04. maj

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 giver dig mulighed for 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 det fulde eksempel her.

Denne vejledning er til Next.js-applikationer, der bruger Pages Router.
Hvis du bruger App Router, se denne vejledning i stedet.

Trin 1: Installer et i18n-bibliotek

For at implementere internationalisering i din Next.js-applikation skal vi først vælge 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 alle sprog ved hjælp af banebrydende AI og befrier dig for den tidskrævende håndtering af JSON-filer.

Lad os installere det med npm i din terminal:

npm install tacotranslate

Trin 2: Opret en gratis TacoTranslate-konto

Nu hvor du har installeret modulet, er det tid til at oprette din TacoTranslate-konto, et oversættelsesprojekt og de tilknyttede API-nøgler. Opret en konto her. Det er gratis, og du behøver ikke at angive et kreditkort.

Inde i TacoTranslate-applikationens brugergrænseflade skal du oprette et projekt og navigere til fanen for API-nøgler. Opret én read nøgle og én read/write nøgle. Vi gemmer dem som miljøvariabler. read nøglen er det, vi kalder public, og read/write nøglen er secret. For eksempel kan du tilføje dem til en .env fil i rodmappen af dit projekt.

.env
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 klient-side produktionsmiljøer.

Vi tilføjer også to ekstra miljøvariabler: TACOTRANSLATE_DEFAULT_LOCALE og TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Standard fallback-sprogkode. I dette eksempel sætter vi den til en 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.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Trin 3: Opsætning af TacoTranslate

Når du integrerer TacoTranslate med din applikation, skal du oprette en klient ved hjælp af API-nøglerne fra tidligere. Opret for eksempel en fil med navnet /tacotranslate-client.js.

/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 automatisk definere TACOTRANSLATE_API_KEY inden længe.

At oprette klienten i en separat fil gør det nemmere at bruge den igen senere. Nu, ved hjælp af en brugerdefineret /pages/_app.tsx, vil vi tilføje TacoTranslate provideren.

/pages/_app.tsx
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, udvid venligst definitionen med egenskaberne og koden ovenfor.

Trin 4: Implementering af rendering på serversiden

TacoTranslate understøtter rendering på serversiden af dine oversættelser. Dette forbedrer brugeroplevelsen betydeligt ved at vise oversat indhold med det samme i stedet for først et glimt af uoversat indhold. Derudover kan vi undgå netværksanmodninger i klienten, fordi vi allerede har alle de nødvendige oversættelser.

Vi starter med at oprette eller ændre /next.config.js.

/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 til din opsætning. Hvis true, vil TacoTranslate gøre den offentlige API-nøgle tilgængelig. Hvis vi er 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 for 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, konfiguration for TacoTranslate, og valgfrie Next.js-egenskaber. Bemærk, at revalidategetTacoTranslateStaticProps er sat til 60 som standard, så dine oversættelser holdes opdaterede.

For at bruge en af funktionerne i en side, lad os antage, at du har en sidefil som /pages/hello-world.tsx.

/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 blive oversat automatisk, når du tilføjer strenge til en Translate komponent. Bemærk, at kun miljøer med read/write tilladelser på API-nøglen kan oprette nye strenge, som skal oversættes. Vi anbefaler at have et lukket og sikret staging-miljø, hvor du kan teste din produktionsapplikation med en sådan API-nøgle og tilføje nye strenge, før du går live. Dette vil forhindre enhver enhver i at stjæle din hemmelige API-nøgle, og potentielt gøre dit oversættelsesprojekt større ved at tilføje nye, ikke-relaterede strenge.

Husk at tjekke det komplette eksempel på vores GitHub-profil. Der vil du også finde et eksempel på, hvordan man gør dette ved hjælp af 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 automatisk at lokalisere dine React-applikationer hurtigt til og fra over 75 sprog. Kom i gang i dag!

Et produkt fra NattskiftetFremstillet i Norge