Hoe internationalisatie te implementeren in een Next.js-applicatie die de Pages Router gebruikt
Maak uw React-applicatie toegankelijker en bereik nieuwe markten met internationalisatie (i18n).
Naarmate de wereld meer globaliseert, wordt het voor webontwikkelaars steeds belangrijker om applicaties te bouwen die tegemoetkomen aan gebruikers uit verschillende landen en culturen. Een van de belangrijkste manieren om dit te bereiken is internationalisatie (i18n), waarmee je je applicatie kunt aanpassen aan verschillende talen, valuta en datumnotaties.
In deze handleiding laten we zien hoe je internationalisatie kunt toevoegen aan je React Next.js-applicatie, inclusief 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 uw 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 uw strings automatisch naar elke taal met behulp van geavanceerde AI en neemt u het vervelende beheer van JSON-bestanden uit handen.
Laten we het installeren met npm in uw terminal:
npm install tacotranslateStap 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 niet dat je een creditcard toevoegt.
Maak in de TacoTranslate-applicatie UI een project aan en navigeer naar het tabblad met API-sleutels. Maak één read sleutel en één read/write sleutel aan. We slaan ze op als omgevingsvariabelen. De read sleutel is wat we public noemen en de read/write sleutel is secret. Je kunt ze bijvoorbeeld toevoegen aan een .env bestand in de root van je project.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Zorg ervoor dat je de geheime read/write API-sleutel nooit lekt 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 openvoor Engels.TACOTRANSLATE_ORIGIN: De “folder” waar uw strings worden opgeslagen, zoals de URL van uw website. Lees hier meer over origins.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comStap 3: TacoTranslate instellen
Om TacoTranslate met je applicatie te integreren, moet je een client aanmaken met behulp van de eerder genoemde API-sleutels. Maak bijvoorbeeld een bestand met de naam /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 aangepast /pages/_app.tsx, de TacoTranslate provider toe.
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 hebt, breid dan de definitie uit met de hierboven gegeven eigenschappen en code.
Stap 4: Server-side rendering implementeren
TacoTranslate maakt server-side rendering van je vertalingen mogelijk. Dit verbetert de gebruikerservaring aanzienlijk doordat vertaalde inhoud direct wordt weergegeven, in plaats van eerst een korte flits van niet-vertaalde inhoud te tonen. Bovendien kunnen we netwerkverzoeken aan de clientzijde overslaan, omdat we al over alle benodigde vertalingen beschikken.
We beginnen met het aanmaken of wijzigen van /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 check aan zodat deze bij je setup past. Als true, zal TacoTranslate de openbare API-sleutel tonen. Als we in een lokale, test- of staging-omgeving zitten (isProduction is false), zullen we de geheime read/write API-sleutel gebruiken om ervoor te zorgen dat nieuwe strings naar vertaling worden gestuurd.
Tot nu toe hebben we de Next.js-applicatie alleen ingesteld met een lijst van ondersteunde talen. De volgende stap is dat we vertalingen voor al je pagina's ophalen. Hiervoor gebruik je ofwel getTacoTranslateStaticProps of getTacoTranslateServerSideProps, op basis van je vereisten.
Deze functies nemen drie argumenten: een Next.js Static Props Context object, configuratie voor TacoTranslate, en optionele Next.js-eigenschappen. Let op dat revalidate op getTacoTranslateStaticProps standaard is ingesteld op 60, zodat je vertalingen up-to-date blijven.
Om een van beide functies in een pagina te gebruiken, laten we aannemen dat je een pagina-bestand hebt zoals /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 het Translate component moeten kunnen gebruiken om tekst binnen 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 React-applicatie wordt nu automatisch vertaald zodra je strings toevoegt aan een Translate component. Houd er rekening mee dat alleen omgevingen met read/write machtigingen op de API-sleutel nieuwe strings kunnen aanmaken om te laten vertalen. We raden aan een gesloten en beveiligde staging-omgeving te hebben waarin je je productieapplicatie kunt testen met zo'n API-sleutel en nieuwe strings kunt toevoegen voordat je live gaat. Dit voorkomt dat iemand je geheime API-sleutel steelt en mogelijk je vertaalproject opblaast door nieuwe, niet-gerelateerde strings toe te voegen.
Zorg ervoor dat je het volledige voorbeeld bekijkt op ons GitHub-profiel. Daar vind je ook een voorbeeld van hoe je dit doet met de App Router! Als je problemen tegenkomt, neem dan gerust contact met ons op, we helpen je graag.
TacoTranslate stelt je in staat je React-applicaties snel en automatisch te lokaliseren van en naar meer dan 75 talen. Begin vandaag nog!