TacoTranslate
/
DokumentationPriser
 
Artikel
04. maj

Den bedste løsning til internationalisering (i18n) i Next.js-apps

Vil du udvide din Next.js-applikation til nye markeder? TacoTranslate gør det utroligt nemt at lokalisere dit Next.js-projekt, så du kan nå et globalt publikum uden besvær.

Hvorfor vælge TacoTranslate til Next.js?

  • Sømløs integration: Udviklet specifikt til Next.js-applikationer, integrerer TacoTranslate sig ubesværet i din eksisterende arbejdsgang.
  • Automatisk indsamling af tekststrenge: Ingen manuel håndtering af JSON-filer længere. TacoTranslate indsamler automatisk tekststrenge fra din kodebase.
  • AI-drevne oversættelser: Udnyt AI's kraft til at levere kontekstuelt præcise oversættelser, der passer til tonen i din applikation.
  • Øjeblikkelig sprogunderstøttelse: Tilføj understøttelse af nye sprog med blot et klik, så din applikation bliver globalt tilgængelig.

Sådan fungerer det

Efterhånden som verden bliver mere globaliseret, bliver det stadigt 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 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 gengivelse på serversiden. TL;DR: Se hele eksemplet her.

Denne vejledning er til Next.js-applikationer, der bruger Pages Router.
Hvis du bruger App Router, se venligst 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 tekststrenge til ethvert sprog ved hjælp af avanceret AI, og befrier dig fra det tidskrævende arbejde med at administrere 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 tilhørende API-nøgler. Opret en konto her. Det er gratis, og kræver ikke, at du tilføjer et kreditkort.

Inde i TacoTranslate-applikationens brugerflade skal du oprette et projekt og gå til fanen for API-nøgler. Opret én read nøgle og én 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 projektets rodmappe.

.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 klientside-produktionsmiljøer.

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

  • TACOTRANSLATE_DEFAULT_LOCALE: Den standardmæssige fallback-lokalekode. I dette eksempel sætter vi den til en for engelsk.
  • TACOTRANSLATE_ORIGIN: Den “folder”, hvor dine strenge vil blive gemt, for eksempel URL'en på 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

For at integrere TacoTranslate med din applikation skal du oprette en klient ved hjælp af de API-nøgler, du oprettede 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 snart.

Oprettelse af klienten i en separat fil gør det nemmere at bruge den igen senere. Nu ved at bruge en brugerdefineret /pages/_app.tsx, tilføjer vi 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 tilpassede pageProps og _app.tsx, så udvid definitionen med egenskaberne og koden ovenfor.

Trin 4: Implementering af server-side rendering

TacoTranslate muliggør rendering på serversiden af dine oversættelser. Det forbedrer brugeroplevelsen betydeligt ved at vise oversat indhold med det samme i stedet for først at vise et kort glimt af uoversat indhold. Derudover kan vi springe netværksanmodninger over på klienten, fordi vi allerede har alle de oversættelser, vi behøver.

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 checket til din opsætning. Hvis true, vil TacoTranslate gøre den offentlige API-nøgle synlig. 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 sendes 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 vil 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 valgfri Next.js-egenskaber. Bemærk, at revalidategetTacoTranslateStaticProps er sat til 60 som standard, så dine oversættelser forbliver opdaterede.

For at bruge en af funktionerne på 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 skulle 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 Next.js-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 vil kunne oprette nye strenge, der skal oversættes. 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 strenge, 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.

Be sure to check out the complete example over at our GitHub profile. There, you’ll also find an example of how to do this using the App Router! If you encounter any problems, feel free to reach out, and we’ll be more than happy to help.

TacoTranslate lets you automatically localize your React applications quickly to and from over 75 languages. Get started today!

Et produkt fra NattskiftetFremstillet i Norge