Den bästa lösningen för internationalisering (i18n) i Next.js-appar
Vill du expandera din Next.js-applikation till nya marknader? TacoTranslate gör det otroligt enkelt att lokalisera ditt Next.js-projekt, vilket gör att du kan nå en global publik utan krångel.
Varför välja TacoTranslate för Next.js?
- Sömlös integration: Specifikt utformad för Next.js-applikationer, TacoTranslate integreras enkelt i ditt befintliga arbetsflöde.
- Automatisk insamling av strängar: Slipp manuell hantering av JSON-filer. TacoTranslate samlar automatiskt in strängar från din kodbas.
- AI-drivna översättningar: Utnyttja kraften i AI för att leverera kontextuellt korrekta översättningar som passar din applikations ton.
- Omedelbart språkstöd: Lägg till stöd för nya språk med bara ett klick och gör din applikation globalt tillgänglig.
Hur det fungerar
När världen blir mer globaliserad blir det allt viktigare för webbutvecklare att skapa applikationer som kan tillgodose användare från olika länder och kulturer. Ett av de viktigaste sätten att uppnå detta är genom internationalisering (i18n), vilket gör att du kan anpassa din applikation till olika språk, valutor och datumformat.
I den här guiden kommer vi att utforska hur du lägger till internationalisering i din React Next.js-applikation, med serverrendering. TL;DR: Se hela exemplet här.
Denna guide är för Next.js-applikationer som använder Pages Router.
Om du använder App Router, vänligen se denna guide istället.
Steg 1: Installera ett i18n-bibliotek
För att implementera internationalisering i din Next.js-applikation kommer vi först att välja ett i18n-bibliotek. Det finns flera populära bibliotek, inklusive next-intl. Men i detta exempel kommer vi att använda TacoTranslate.
TacoTranslate översätter automatiskt dina strängar till vilket språk som helst med hjälp av avancerad AI och frigör dig från det tråkiga hanterandet av JSON-filer.
Låt oss installera det med hjälp av npm i din terminal:
npm install tacotranslate
Steg 2: Skapa ett gratis TacoTranslate-konto
Nu när du har installerat modulen är det dags att skapa ditt TacoTranslate-konto, ett översättningsprojekt och tillhörande API-nycklar. Skapa ett konto här. Det är gratis och kräver inte att du lägger till ett kreditkort.
Inom TacoTranslate-applikationens användargränssnitt, skapa ett projekt och navigera till fliken för API-nycklar. Skapa en read
nyckel och en read/write
nyckel. Vi kommer att spara dem som miljövariabler. read
nyckeln är vad vi kallar public
och read/write
nyckeln är secret
. Till exempel kan du lägga till dem i en .env
fil i roten av ditt projekt.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
Se till att aldrig läcka den hemliga read/write
API-nyckeln till produktionsmiljöer på klientsidan.
Vi kommer också att lägga till två ytterligare miljövariabler: TACOTRANSLATE_DEFAULT_LOCALE
och TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: Standardvärdet för reservspråkkoden. I detta exempel sätter vi den tillen
för engelska.TACOTRANSLATE_ORIGIN
: "mappen" där dina strängar kommer att sparas, till exempel URL:en till din webbplats. Läs mer om origins här.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Steg 3: Konfigurera TacoTranslate
För att integrera TacoTranslate med din applikation behöver du skapa en klient med hjälp av API-nycklarna från tidigare. Skapa till exempel en fil med namnet /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 kommer snart automatiskt att definiera TACOTRANSLATE_API_KEY
.
Att skapa klienten i en separat fil gör det enklare att använda den igen senare. Nu, med en anpassad /pages/_app.tsx
, lägger vi till TacoTranslate
providern.
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>
);
}
Om du redan har anpassade pageProps
och _app.tsx
, vänligen utöka definitionen med egenskaperna och koden från ovan.
Steg 4: Implementera server-side rendering
TacoTranslate möjliggör server-side rendering av dina översättningar. Detta förbättrar användarupplevelsen avsevärt genom att visa översatt innehåll omedelbart, istället för att först visa en blink av oöversatt innehåll. Dessutom kan vi hoppa över nätverksförfrågningar på klienten, eftersom vi redan har alla översättningar vi behöver.
Vi börjar med att skapa eller modifiera /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'),
});
};
Ändra isProduction
kontrollen så att den passar din inställning. Om true
kommer TacoTranslate att visa den offentliga API-nyckeln. Om vi befinner oss i en lokal, test- eller mellanlagringsmiljö (isProduction
is false
) använder vi den hemliga API-nyckeln för read/write
för att se till att nya strängar skickas för översättning.
Hittills har vi bara ställt in Next.js-applikationen med en lista över stödjade språk. Nästa steg är att hämta översättningar för alla dina sidor. För att göra det kommer du att använda antingen getTacoTranslateStaticProps
eller getTacoTranslateServerSideProps
beroende på dina behov.
Dessa funktioner tar tre argument: Ett Next.js Static Props Context objekt, konfiguration för TacoTranslate, och valfria Next.js-egenskaper. Observera att revalidate
på getTacoTranslateStaticProps
är satt till 60 som standard, så att dina översättningar hålls uppdaterade.
För att använda någon av funktionerna på en sida, låt oss anta att du har en sidfil som /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 kunna använda Translate
komponenten för att översätta strängar inom alla dina React-komponenter.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}
Steg 5: Distribuera och testa!
Vi är klara! Din Next.js-applikation kommer nu automatiskt att översättas när du lägger till några strängar i en Translate
komponent. Observera att endast miljöer med read/write
behörigheter på API-nyckeln kommer att kunna skapa nya strängar att översättas. Vi rekommenderar att ha en sluten och säker staging-miljö där du kan testa din produktionsapplikation med en sådan API-nyckel, och lägga till nya strängar innan du går live. Detta förhindrar att någon stjäl din hemliga API-nyckel och potentiellt överbelastar ditt översättningsprojekt genom att lägga till nya, orelaterade strängar.
Se till att kolla in det kompletta exemplet på vår GitHub-profil. Där hittar du också ett exempel på hur du gör detta med App Router! Om du stöter på några problem, tveka inte att kontakta oss, så hjälper vi dig mer än gärna.
TacoTranslate låter dig automatiskt lokalisera dina React-applikationer snabbt till och från vilket språk som helst. Kom igång idag!