TacoTranslate
/
DocumentatiePrijzen
 
Artikel
04 mei

De beste oplossing voor internationalisatie (i18n) in Next.js-apps

Wilt u uw Next.js-applicatie naar nieuwe markten uitbreiden? TacoTranslate maakt het uiterst eenvoudig om uw Next.js-project te lokaliseren, zodat u een wereldwijd publiek kunt bereiken zonder gedoe.

Waarom TacoTranslate kiezen voor Next.js?

  • Naadloze integratie: Speciaal ontworpen voor Next.js-toepassingen, integreert TacoTranslate moeiteloos in je bestaande workflow.
  • Automatische verzameling van strings: Geen gedoe meer met het handmatig beheren van JSON-bestanden. TacoTranslate verzamelt automatisch strings uit je codebase.
  • AI-gestuurde vertalingen: Benut de kracht van AI om contextueel nauwkeurige vertalingen te leveren die passen bij de toon van je applicatie.
  • Directe taalondersteuning: Voeg met één klik ondersteuning voor nieuwe talen toe, waardoor je applicatie wereldwijd toegankelijk wordt.

Hoe het werkt

Naarmate de wereld meer globaliseert, wordt het voor webontwikkelaars steeds belangrijker om applicaties te bouwen die gebruikers uit verschillende landen en culturen kunnen bedienen. Een van de belangrijkste manieren om dit te bereiken is internationalisatie (i18n), waarmee je je applicatie kunt aanpassen aan verschillende talen, valuta en datumformaten.

In deze tutorial onderzoeken we hoe je internationalisatie toevoegt aan je React Next.js-applicatie, met server-side rendering. TL;DR: Bekijk hier het volledige voorbeeld.

Deze gids is voor Next.js-applicaties die de Pages Router gebruiken.
Als u de App Router gebruikt, raadpleeg dan in plaats daarvan deze gids.

Stap 1: Installeer een i18n-bibliotheek

Om internationalisatie in je Next.js-applicatie te implementeren, kiezen we eerst een i18n-bibliotheek. Er zijn verschillende populaire bibliotheken, waaronder next-intl. In dit voorbeeld gebruiken we echter TacoTranslate.

TacoTranslate vertaalt je strings automatisch naar elke taal met behulp van geavanceerde AI en bespaart je het omslachtige beheer van JSON-bestanden.

Laten we het installeren met npm in je terminal:

npm install tacotranslate

Stap 2: Maak een gratis TacoTranslate-account aan

Nu je de module hebt geïnstalleerd, is het tijd om je TacoTranslate-account, een vertaalproject en de bijbehorende API-sleutels aan te maken. Maak hier een account aan. Het is gratis, en vereist geen creditcard.

Open in de TacoTranslate-applicatie UI een project en navigeer naar het tabblad API-sleutels. Maak één read sleutel en één read/write sleutel. We slaan ze op als omgevingsvariabelen. De read sleutel is wat we public noemen en de read/write sleutel is secret. Voeg ze bijvoorbeeld toe aan een .env bestand in de root van je project.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Zorg ervoor dat je de geheime read/write API-sleutel nooit onthult in client-side productieomgevingen.

We voegen ook twee extra omgevingsvariabelen toe: TACOTRANSLATE_DEFAULT_LOCALE en TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: De standaard fallback-localecode. In dit voorbeeld stellen we deze in op en voor Engels.
  • TACOTRANSLATE_ORIGIN: De “map” waar je strings worden opgeslagen, zoals de URL van je website. Lees hier meer over origins.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Stap 3: TacoTranslate instellen

Om TacoTranslate met je applicatie te integreren, moet je een client aanmaken met de eerder genoemde API-sleutels. Maak bijvoorbeeld een bestand met de naam /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;

We zullen binnenkort automatisch TACOTRANSLATE_API_KEY definiëren.

Het aanmaken van de client in een apart bestand maakt het later gemakkelijker om deze opnieuw te gebruiken. Nu voegen we, met een aangepaste /pages/_app.tsx, de TacoTranslate provider toe.

/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>
	);
}

Als je al aangepaste pageProps en _app.tsx, breid dan de definitie uit met de hierboven genoemde eigenschappen en code.

Stap 4: Server-side rendering implementeren

TacoTranslate maakt server-side rendering van je vertalingen mogelijk. Dit verbetert de gebruikerservaring aanzienlijk door vertaalde inhoud onmiddellijk weer te geven, in plaats van eerst een korte flits van niet-vertaalde inhoud. Bovendien kunnen we netwerkverzoeken aan de client overslaan, omdat we al alle vertalingen hebben die we nodig hebben.

We beginnen met het aanmaken of wijzigen van /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'),
	});
};

Pas de isProduction controle aan op je configuratie. Als true, zal TacoTranslate de publieke API-sleutel tonen. Als we ons in een lokale, test- of stagingomgeving bevinden (isProduction is false), zullen we de geheime read/write API-sleutel gebruiken om ervoor te zorgen dat nieuwe strings voor vertaling worden verzonden.

Tot nu toe hebben we de Next.js-applicatie alleen ingesteld met een lijst van ondersteunde talen. De volgende stap is het ophalen van vertalingen voor al je pagina's. Hiervoor gebruik je ofwel getTacoTranslateStaticProps of getTacoTranslateServerSideProps, afhankelijk van je behoeften.

Deze functies nemen drie argumenten: één Next.js Static Props Context object, configuratie voor TacoTranslate, en optionele Next.js-eigenschappen. Merk op dat revalidate op getTacoTranslateStaticProps standaard op 60 is ingesteld, zodat je vertalingen up-to-date blijven.

Om een van beide functies op een pagina te gebruiken, laten we aannemen dat je een paginabestand hebt zoals /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!"/>;
}

Je zou nu de Translate component moeten kunnen gebruiken om strings in al je React-componenten te vertalen.

import {Translate} from 'tacotranslate/react';

function Component() {
	return <Translate string="Hello, world!"/>
}

Stap 5: Uitrollen en testen!

We zijn klaar! Je Next.js-applicatie wordt nu automatisch vertaald wanneer je strings toevoegt aan een Translate component. Let op: alleen omgevingen met read/write machtigingen op de API-sleutel kunnen nieuwe strings aanmaken die vertaald moeten worden. We raden aan een besloten en beveiligde staging-omgeving te hebben waarin je je productieapplicatie kunt testen met zo'n API-sleutel, en nieuwe strings toe te voegen voordat je live gaat. Dit voorkomt dat iemand je geheime API-sleutel steelt en dat je vertaalproject mogelijk wordt opgeblazen door het toevoegen van nieuwe, niet-gerelateerde strings.

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!

Een product van NattskiftetGemaakt in Noorwegen