Den beste løysinga for internasjonalisering (i18n) i Next.js-applikasjonar
Ønskjer du å utvide Next.js-applikasjonen din til nye marknader? TacoTranslate gjer det utruleg enkelt å lokalisere prosjektet ditt i Next.js, slik at du kan nå eit globalt publikum utan trøbbel.
Kvifor velje TacoTranslate for Next.js?
- Sømlaus integrasjon: Designa spesielt for Next.js-applikasjonar, integrerer TacoTranslate seg enkelt i den eksisterande arbeidsflyten din.
- Automatisk innsamling av strengar: Ikkje meir manuell handtering av JSON-filer. TacoTranslate samlar automatisk strengar frå kodebasen din.
- AI-drevne omsetjingar: Utnytt AI si kraft for å levere kontekstuelt presise omsetjingar som passar tona i applikasjonen din.
- Øyeblikkeleg språkstøtte: Legg til støtte for nye språk med berre eitt klikk, og gjer applikasjonen din globalt tilgjengeleg.
Korleis det fungerer
Etter kvart som verda blir meir globalisert, blir det stadig viktigare for nettutviklarar å byggje applikasjonar som kan møte brukarar frå ulike land og kulturar. Eit av hovudmidla for å oppnå dette er internasjonalisering (i18n), som let deg tilpasse applikasjonen din til ulike språk, valutaer og datoformat.
I denne rettleiinga skal vi utforske korleis du kan leggje til internasjonalisering i React Next.js-applikasjonen din, med server-side rendering. TL;DR: Sjå heile eksemplet her.
Denne rettleiinga er for Next.js-applikasjonar som brukar Pages Router.
Dersom du brukar App Router, sjå heller denne rettleiinga.
Steg 1: Installer eit i18n-bibliotek
For å implementere internasjonalisering i Next.js-applikasjonen din, skal vi fyrst velje eit i18n-bibliotek. Det finst fleire populære bibliotek, inkludert next-intl. I dette eksemplet vil vi bruke TacoTranslate.
TacoTranslate oversetter automatisk strengane dine til alle språk ved hjelp av banebrytande AI, og frigjer deg frå den tidkrevjande handteringa av JSON-filer.
Lat oss installere det med npm i terminalen din:
npm install tacotranslateSteg 2: Opprett ein gratis TacoTranslate-konto
No når du har installert modulen, er det på tide å opprette TacoTranslate-kontoen din, eit omsetjingsprosjekt og tilhøyrande API-nøklar. Opprett ein konto her. Det er gratis, og krev ikkje at du oppgir kredittkort.
I TacoTranslate-applikasjonen si brukargrensesnitt opprett eit prosjekt og gå til fana for API-nøklar. Opprett ein read nøkkel, og ein read/write nøkkel. Vi lagrar dei som miljøvariablar. Den read nøkkelen er det vi kallar public og read/write nøkkelen er secret. Til dømes kan du legge dei til i ei .env fil i rotmappa i prosjektet ditt.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010Pass på at du aldri lekkjer den hemmelege read/write API-nøkkelen i produksjonsmiljø på klientsida.
Vi vil òg leggje til to fleire miljøvariablar: TACOTRANSLATE_DEFAULT_LOCALE og TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: Standard fallback-lokalkode. I dette dømet set vi han tilenfor engelsk.TACOTRANSLATE_ORIGIN: Den “mappa” der strengane dine blir lagra, til dømes URL-en til nettsida di. Les meir om originar her.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comTrinn 3: Setje opp TacoTranslate
For å integrere TacoTranslate i applikasjonen din, må du opprette ein klient ved å bruke API-nøklane frå tidlegare. Til dømes opprett ei fil kalla /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 vil automatisk definere TACOTRANSLATE_API_KEY om litt.
Å opprette klienten i ein separat fil gjer det lettare å bruke han igjen seinare. No, ved å bruke ein tilpassa /pages/_app.tsx, skal vi leggje til TacoTranslate tilbydaren.
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>
);
}Dersom du allereie har tilpassa pageProps og _app.tsx, utvid definisjonen med eigenskapane og koden ovanfor.
Steg 4: Implementering av rendering på serversida
TacoTranslate gjer det mogleg å gjengi omsetjingane dine på serversida. Dette forbetrar brukaropplevinga mykje ved å vise omsett innhald med ein gong, i staden for først å vise eit kort glimt av ikkje-omsett innhald. I tillegg kan vi unngå nettverkskall frå klienten, fordi vi allereie har alle omsetjingane vi treng.
Vi startar med å opprette eller endre /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'),
});
};Endre isProduction‑sjekken slik at den passar oppsettet ditt. Hvis true, vil TacoTranslate vise den offentlege API-nøkkelen. Hvis vi er i eit lokalt, test- eller staging-miljø (isProduction is false), vil vi bruke den hemmelege read/write API-nøkkelen for å sørgje for at nye strengar blir sendt til omsetjing.
Hittil har vi berre sett opp Next.js-applikasjonen med ei liste over støtta språk. Det neste vi skal gjere er å hente omsetjingar for alle sidene dine. For å gjere det, vil du bruke anten getTacoTranslateStaticProps eller getTacoTranslateServerSideProps basert på krava dine.
Desse funksjonane tek tre argument: Eitt Next.js Static Props Context objekt, konfigurasjon for TacoTranslate, og valfrie Next.js-eigenskapar. Merk at revalidate på getTacoTranslateStaticProps er sett til 60 som standard, slik at omsetjingane dine held seg oppdaterte.
For å bruke ein av funksjonane i ei side, la oss anta at du har ei sidefil 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 no kunne bruke Translate komponenten for å omsetje strengar i alle React-komponentane dine.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}Steg 5: Distribuer og test!
Vi er ferdige! Next.js-applikasjonen din vil no bli automatisk omsett når du legg til strengar i ein Translate komponent. Merk at berre miljø med read/write rettar på API-nøkkelen vil kunne opprette nye strengar som skal omsetjast. Vi anbefaler å ha eit lukka og sikra staging-miljø der du kan teste produksjonsapplikasjonen din med ei slik API-nøkkel, og leggje til nye strengar før du set applikasjonen i produksjon. Dette vil hindre at nokon nokon steler den hemmelege API-nøkkelen din, og potensielt føre til at oversettingsprosjektet ditt veks ved å leggje til nye, ikkje-relaterte strengar.
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!