Wie man Internationalisierung in einer Next.js-Anwendung implementiert, die den Pages Router verwendet
Machen Sie Ihre React-Anwendung zugänglicher und erschließen Sie neue Märkte mit Internationalisierung (i18n).
Da die Welt immer stärker globalisiert wird, ist es für Webentwickler zunehmend wichtiger, Anwendungen zu erstellen, die Nutzer aus verschiedenen Ländern und Kulturen ansprechen können. Eine der wichtigsten Möglichkeiten, dies zu erreichen, ist die Internationalisierung (i18n), die es Ihnen ermöglicht, Ihre Anwendung an verschiedene Sprachen, Währungen und Datumsformate anzupassen.
In diesem Tutorial zeigen wir, wie Sie Internationalisierung in Ihre React Next.js-Anwendung integrieren, inklusive serverseitigem Rendering. TL;DR: Das vollständige Beispiel finden Sie hier.
Dieser Leitfaden ist für Next.js-Anwendungen, die den Pages Router verwenden.
Wenn Sie den App Router verwenden, lesen Sie stattdessen bitte diesen Leitfaden.
Schritt 1: Installieren Sie eine i18n-Bibliothek
Um Internationalisierung in Ihrer Next.js-Anwendung zu implementieren, wählen wir zunächst eine i18n-Bibliothek. Es gibt mehrere beliebte Bibliotheken, darunter next-intl. In diesem Beispiel verwenden wir jedoch TacoTranslate.
TacoTranslate übersetzt Ihre Strings automatisch in jede Sprache mithilfe modernster KI und befreit Sie von der mühsamen Verwaltung von JSON-Dateien.
Installieren wir es mit npm in Ihrem Terminal:
npm install tacotranslate
Schritt 2: Erstellen Sie ein kostenloses TacoTranslate-Konto
Jetzt, da Sie das Modul installiert haben, ist es Zeit, Ihr TacoTranslate-Konto, ein Übersetzungsprojekt und die zugehörigen API-Schlüssel zu erstellen. Erstellen Sie hier ein Konto. Es ist kostenlos und erfordert keine Angabe einer Kreditkarte.
Erstellen Sie in der TacoTranslate-Anwendung ein Projekt und navigieren Sie zum Tab „API keys“. Erstellen Sie einen read
Schlüssel und einen read/write
Schlüssel. Wir speichern sie als Umgebungsvariablen. Der read
Schlüssel ist das, was wir public
nennen, und der read/write
Schlüssel ist secret
. Zum Beispiel könnten Sie sie in eine .env
Datei im Stammverzeichnis Ihres Projekts hinzufügen.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
Stellen Sie sicher, dass der geheime read/write
API-Schlüssel niemals in clientseitige Produktionsumgebungen offengelegt wird.
Wir fügen außerdem zwei weitere Umgebungsvariablen hinzu: TACOTRANSLATE_DEFAULT_LOCALE
und TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: Der standardmäßige Fallback-Sprachcode. In diesem Beispiel setzen wir ihn aufen
für Englisch.TACOTRANSLATE_ORIGIN
: Der „Ordner“, in dem Ihre Strings gespeichert werden, zum Beispiel die URL Ihrer Website. Erfahren Sie hier mehr über Origins.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Schritt 3: TacoTranslate einrichten
Um TacoTranslate in Ihre Anwendung zu integrieren, müssen Sie einen Client erstellen, der die zuvor genannten API-Schlüssel verwendet. Erstellen Sie zum Beispiel eine Datei namens /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;
Wir werden in Kürze automatisch TACOTRANSLATE_API_KEY
definieren.
Das Erstellen des Clients in einer separaten Datei erleichtert die spätere Wiederverwendung. Nun fügen wir in einer benutzerdefinierten /pages/_app.tsx
den TacoTranslate
Provider hinzu.
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>
);
}
Wenn Sie bereits benutzerdefinierte pageProps
und _app.tsx
haben, erweitern Sie bitte die Definition um die oben genannten Eigenschaften und den Code.
Schritt 4: Serverseitiges Rendering implementieren
TacoTranslate ermöglicht das serverseitige Rendering Ihrer Übersetzungen. Das verbessert die Nutzererfahrung erheblich, da übersetzte Inhalte sofort angezeigt werden, anstatt dass zunächst ein kurzes Aufblitzen unübersetzter Inhalte zu sehen ist. Außerdem können wir Netzwerkanfragen vom Client aus überspringen, da uns bereits alle benötigten Übersetzungen vorliegen.
Wir beginnen damit, /next.config.js
zu erstellen oder zu ändern.
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'),
});
};
Passen Sie die isProduction
‑Prüfung an Ihre Konfiguration an. Wenn true
, wird TacoTranslate den öffentlichen API‑Schlüssel anzeigen. Wenn wir uns in einer lokalen, Test- oder Staging‑Umgebung befinden (isProduction
is false
), verwenden wir den geheimen read/write
API‑Schlüssel, um sicherzustellen, dass neue Strings zur Übersetzung gesendet werden.
Bis jetzt haben wir die Next.js-Anwendung nur mit einer Liste unterstützter Sprachen eingerichtet. Als Nächstes werden wir Übersetzungen für alle Ihre Seiten abrufen. Dafür verwenden Sie je nach Ihren Anforderungen entweder getTacoTranslateStaticProps
oder getTacoTranslateServerSideProps
.
Diese Funktionen nehmen drei Argumente entgegen: ein Next.js Static Props Context Objekt, die Konfiguration für TacoTranslate und optionale Next.js-Eigenschaften. Beachten Sie, dass revalidate
bei getTacoTranslateStaticProps
standardmäßig auf 60 gesetzt ist, damit Ihre Übersetzungen auf dem neuesten Stand bleiben.
Um eine der beiden Funktionen auf einer Seite zu verwenden, nehmen wir an, Sie haben eine Seiten-Datei wie /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!"/>;
}
Sie sollten nun die Translate
Komponente verwenden können, um Zeichenketten in allen Ihren React-Komponenten zu übersetzen.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}
Schritt 5: Bereitstellen und testen!
Fertig! Ihre React-Anwendung wird jetzt automatisch übersetzt, sobald Sie beliebige Zeichenketten in eine Translate
Komponente einfügen. Beachten Sie, dass nur Umgebungen mit read/write
Berechtigungen für den API‑Schlüssel neue zu übersetzende Zeichenketten erstellen können. Wir empfehlen, eine geschlossene und gesicherte Staging‑Umgebung einzurichten, in der Sie Ihre Produktionsanwendung mit einem solchen API‑Schlüssel testen und neue Zeichenketten hinzufügen, bevor Sie live gehen. Dadurch wird verhindert, dass jemand Ihren geheimen API‑Schlüssel stiehlt und möglicherweise Ihr Übersetzungsprojekt aufbläht, indem neue, nicht verwandte Zeichenketten hinzugefügt werden.
Schauen Sie sich unbedingt das vollständige Beispiel auf unserem GitHub-Profil an: das vollständige Beispiel. Dort finden Sie auch ein Beispiel dafür, wie Sie dies mit dem App Router machen können! Wenn Sie auf Probleme stoßen, können Sie sich gerne an uns wenden, und wir helfen Ihnen gerne weiter.
TacoTranslate ermöglicht es Ihnen, Ihre React-Anwendungen automatisch und schnell in über 75 Sprachen zu lokalisieren. Jetzt loslegen!