Den bästa lösningen för internationalisering (i18n) i Next.js-appar
Vill du utvidga din Next.js-applikation till nya marknader? TacoTranslate gör det otroligt enkelt att lokalisera ditt Next.js-projekt, så att du kan nå en global publik utan krångel.
Varför välja TacoTranslate för Next.js?
- Sömlös integration: Skräddarsydd för Next.js-applikationer, integreras TacoTranslate sömlöst i ditt befintliga arbetsflöde.
- Automatisk insamling av strängar: Ingen manuell hantering av JSON-filer längre. TacoTranslate samlar automatiskt in strängar från din kodbas.
- AI-drivna översättningar: Utnyttja AI:s kraft för att leverera kontextuellt korrekta översättningar som passar tonen i din applikation.
- Omedelbart språkstöd: Lägg till stöd för nya språk med ett klick, vilket 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 bygga 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 handledningen kommer vi att utforska hur du lägger till internationalisering i din React Next.js-applikation, med server-side rendering. 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, se denna guide istället.
Steg 1: Installera ett i18n-bibliotek
För att implementera internationalisering i din Next.js-applikation väljer vi först ett i18n-bibliotek. Det finns flera populära bibliotek, inklusive next-intl. I det här exemplet kommer vi dock att använda TacoTranslate.
TacoTranslate översätter automatiskt dina strängar till vilket språk som helst med hjälp av avancerad AI, och befriar dig från det tidskrävande arbetet med att hantera JSON-filer.
Låt oss installera det med npm i din terminal:
npm install tacotranslateSteg 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.
I TacoTranslate-applikationens användargränssnitt skapar du ett projekt och navigerar till fliken API-nycklar. Skapa en read nyckel och en read/write nyckel. Vi sparar 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 projektets rot.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Se till att aldrig läcka den hemliga read/write API-nyckeln till klientsidans produktionsmiljöer.
Vi kommer också att lägga till två ytterligare miljövariabler: TACOTRANSLATE_DEFAULT_LOCALE och TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: Den förvalda fallback-lokalkoden. I det här exemplet sätter vi den tillenför engelska.TACOTRANSLATE_ORIGIN: Den “mapp” där dina strängar kommer att lagras, till exempel webbadressen till din webbplats. Läs mer om origins här.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comSteg 3: Konfigurera TacoTranslate
För att integrera TacoTranslate med din applikation behöver du skapa en klient med de tidigare nämnda API-nycklarna. Till exempel skapa en fil som heter /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 automatiskt att definiera TACOTRANSLATE_API_KEY inom kort.
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 provider.
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 som anges ovan.
Steg 4: Implementera serversidig 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 kort stund med oöversatt innehåll. Dessutom kan vi hoppa över nätverksförfrågningar på klientsidan, eftersom vi redan har alla översättningar vi behöver.
Vi börjar med att skapa eller ändra /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 konfiguration. Om true, kommer TacoTranslate att visa den publika API-nyckeln. Om vi är i en lokal, test- eller stagingmiljö (isProduction is false), använder vi den hemliga read/write API-nyckeln för att se till att nya strängar skickas för översättning.
Hittills har vi bara konfigurerat Next.js-applikationen med en lista över språk som stöds. 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 krav.
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 i en sida, anta att du har en fil 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 i 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 att översättas automatiskt när du lägger till strängar i en Translate komponent. Observera att endast miljöer med read/write behörigheter för API-nyckeln kommer att kunna skapa nya strängar att översätta. Vi rekommenderar att ha en stängd och säkrad stagingmiljö 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 kommer att förhindra någon någon från att stjäla din hemliga API-nyckel, och potentiellt blåsa upp ditt översättningsprojekt genom att lägga till nya, orelaterade strängar.
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!