Najbolje rešenje za internacionalizaciju (i18n) u Next.js aplikacijama
Želite li da proširite svoju Next.js aplikaciju na nova tržišta? TacoTranslate izuzetno olakšava lokalizaciju vašeg Next.js projekta, omogućavajući vam da bez muke doprete do globalne publike.
Zašto odabrati TacoTranslate za Next.js?
- Besprekorno integrisanje: Dizajniran posebno za Next.js aplikacije, TacoTranslate se lako uklapa u vaš postojeći tok rada.
- Automatsko prikupljanje stringova: Nema više ručnog upravljanja JSON fajlovima. TacoTranslate automatski prikuplja stringove iz vašeg koda.
- Prevodi pokretani veštačkom inteligencijom: Iskoristite moć veštačke inteligencije za kontekstualno tačne prevode koji odgovaraju tonu vaše aplikacije.
- Trenutna podrška za jezike: Dodajte podršku za nove jezike jednim klikom, čineći vašu aplikaciju dostupnom širom sveta.
Kako to funkcioniše
Kako se svet sve više globalizuje, sve je važnije da web programeri razvijaju aplikacije koje mogu da zadovolje potrebe korisnika iz različitih zemalja i kultura. Jedan od ključnih načina da se to postigne je internacionalizacija (i18n), koja vam omogućava da prilagodite aplikaciju različitim jezicima, valutama i formatima datuma.
U ovom vodiču istražićemo kako da dodate internacionalizaciju u vašu React Next.js aplikaciju, sa renderovanjem na serverskoj strani. TL;DR: Pogledajte kompletan primer ovde.
Ovo uputstvo je za Next.js aplikacije koje koriste Pages Router.
Ako koristite App Router, pogledajte umesto toga ovaj vodič.
Korak 1: Instalirajte i18n biblioteku
Da bismo implementirali internacionalizaciju u vašoj Next.js aplikaciji, prvo ćemo odabrati i18n biblioteku. Postoji nekoliko popularnih biblioteka, uključujući next-intl. Međutim, u ovom primeru koristićemo TacoTranslate.
TacoTranslate automatski prevodi vaše stringove na bilo koji jezik koristeći najsavremeniju veštačku inteligenciju i oslobađa vas od zamornog upravljanja JSON fajlovima.
Instalirajmo ga koristeći npm u vašem terminalu:
npm install tacotranslate
Korak 2: Kreirajte besplatan TacoTranslate nalog
Sada kada imate instaliran modul, vreme je da kreirate svoj TacoTranslate nalog, projekat za prevođenje i pripadajuće API ključeve. Kreirajte nalog ovde. Besplatno je i ne zahteva dodavanje kreditne kartice.
U korisničkom interfejsu TacoTranslate aplikacije, kreirajte projekat i pređite na karticu API ključeva. Napravite jedan read
ključ i jedan read/write
ključ. Sačuvaćemo ih kao promenljive okruženja. read
ključ je ono što zovemo public
a read/write
ključ je secret
. Na primer, možete ih dodati u .env
fajl u korenskom direktorijumu vašeg projekta.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
Vodite računa da tajni read/write
API ključ nikada ne procuri u produkcionim okruženjima na strani klijenta.
Takođe ćemo dodati još dve promenljive okruženja: TACOTRANSLATE_DEFAULT_LOCALE
i TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: Podrazumevani fallback (rezervni) kod lokaliteta. U ovom primeru postavićemo ga naen
za engleski.TACOTRANSLATE_ORIGIN
: „mapa“ u kojoj će vaši stringovi biti sačuvani, kao na primer URL vašeg sajta. Pročitajte više o originima ovde.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Korak 3: Podešavanje TacoTranslate-a
Da biste integrisali TacoTranslate u vašu aplikaciju, treba da kreirate klijenta pomoću API ključeva navedenih ranije. Na primer, kreirajte fajl nazvan /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;
Uskoro ćemo automatski definisati TACOTRANSLATE_API_KEY
.
Stvaranje klijenta u zasebnoj datoteci olakšava njegovo ponovno korišćenje kasnije. Sada ćemo, koristeći prilagođeni /pages/_app.tsx
, dodati TacoTranslate
provajder.
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>
);
}
Ako već imate prilagođene pageProps
i _app.tsx
, proširite definiciju dodavanjem svojstava i koda navedenih iznad.
Korak 4: Implementacija renderovanja na serverskoj strani
TacoTranslate omogućava renderovanje vaših prevoda na serverskoj strani. Ovo znatno poboljšava korisničko iskustvo prikazivanjem prevedenog sadržaja odmah, umesto da se prvo pojavi bljesak neprevedenog sadržaja. Pored toga, možemo izbeći mrežne zahteve na klijentu, jer već imamo sve potrebne prevode.
Počećemo kreiranjem ili izmenom /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'),
});
};
Prilagodite proveru isProduction
vašoj konfiguraciji. Ako je true
, TacoTranslate će prikazati javni API ključ. Ako smo u lokalnom, testnom ili staging okruženju (isProduction
is false
), koristićemo tajni API ključ read/write
kako bismo osigurali da se novi stringovi šalju na prevođenje.
Do sada smo u Next.js aplikaciju dodali samo listu podržanih jezika. Sledeće što ćemo uraditi je da preuzmemo prevode za sve vaše stranice. Za to ćete koristiti ili getTacoTranslateStaticProps
ili getTacoTranslateServerSideProps
u zavisnosti od vaših zahteva.
Ove funkcije primaju tri argumenta: jedan Next.js Static Props Context objekat, konfiguraciju za TacoTranslate i opciona Next.js svojstva. Imajte na umu da je revalidate
na getTacoTranslateStaticProps
podešen na 60 podrazumevano, tako da vaši prevodi ostanu ažurirani.
Da biste koristili bilo koju od ovih funkcija na stranici, pretpostavimo da imate fajl stranice kao /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!"/>;
}
Sada biste trebali moći da koristite Translate
komponentu za prevođenje stringova u svim vašim React komponentama.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}
Korak 5: Rasporedi i testiraj!
Završili smo! Vaša Next.js aplikacija će sada biti automatski prevedena kada dodate bilo koji string u komponentu Translate
. Imajte na umu da samo okruženja koja imaju dozvole read/write
na API ključu mogu da kreiraju nove stringove za prevođenje. Preporučujemo da imate zatvoreno i zaštićeno staging okruženje u kojem možete testirati vašu produkcijsku aplikaciju koristeći takav API ključ, dodajući nove stringove pre puštanja u produkciju. To će sprečiti bilo koga da ukrade vaš tajni API ključ i potencijalno sprečiti naduvavanje vašeg projekta za prevođenje dodavanjem novih, nepovezanih stringova.
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!