Kako implementirati internacionalizaciju u Next.js aplikaciji koja koristi Pages Router
Učinite svoju React aplikaciju pristupačnijom i dosegnite nova tržišta pomoću internacionalizacije (i18n).
Kako svijet postaje sve više globaliziran, postaje sve važnije za web developere da kreiraju aplikacije koje mogu zadovoljiti korisnike iz različitih zemalja i kultura. Jedan od ključnih načina da se to postigne je kroz internacionalizaciju (i18n), koja vam omogućava da prilagodite svoju aplikaciju različitim jezicima, valutama i formatima datuma.
U ovom tutorijalu, istražit ćemo kako dodati internacionalizaciju vašoj React Next.js aplikaciji, sa server side renderingom. TL;DR: Pogledajte kompletan primjer ovdje.
Ovaj vodič je za Next.js aplikacije koje koriste Pages Router.
Ako koristite App Router, molimo pogledajte ovaj vodič.
KORAK 1: Instalirajte i18n biblioteku
Da bismo implementirali internacionalizaciju u vašu Next.js aplikaciju, prvo ćemo odabrati i18n biblioteku. Postoji nekoliko popularnih biblioteka, uključujući next-intl. Međutim, u ovom primjeru ćemo koristiti TacoTranslate.
TacoTranslate automatski prevodi vaše stringove na bilo koji jezik koristeći naprednu AI tehnologiju, te vas oslobađa dosadnog upravljanja JSON fajlovima.
Instalirajmo ga koristeći npm u vašem terminalu:
npm install tacotranslate
Korak 2: Napravite besplatan TacoTranslate nalog
Sada kada imate instaliran modul, vrijeme je da kreirate svoj TacoTranslate nalog, projekat za prevod i povezane API ključeve. Kreirajte nalog ovdje. Besplatno je, i ne zahtijeva da dodate kreditnu karticu.
U korisničkom sučelju aplikacije TacoTranslate, kreirajte projekat i idite na tab API ključeva. Kreirajte jedan read
ključ i jedan read/write
ključ. Sačuvaćemo ih kao varijable okruženja. read
ključ nazivamo public
, a read/write
ključ je secret
. Na primjer, možete ih dodati u .env
fajl u korijenu vašeg projekta.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
Budite sigurni da nikada ne otkrivate tajni read/write
API ključ u produkcionim okruženjima na strani klijenta.
Također ćemo dodati još dvije varijable okruženja: TACOTRANSLATE_DEFAULT_LOCALE
i TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: Zadani kod podrazumijevane lokalizacije. U ovom primjeru, postavit ćemo ga naen
za engleski jezik.TACOTRANSLATE_ORIGIN
: “Folder” u kojem će biti pohranjeni vaši stringovi, kao što je URL vaše web stranice. Pročitajte više o originima ovdje.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Korak 3: Postavljanje TacoTranslate
Da biste integrisali TacoTranslate sa vašom aplikacijom, potrebno je da kreirate klijenta koristeći API ključeve od ranije. Na primjer, napravite 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 definirati TACOTRANSLATE_API_KEY
.
Kreiranje klijenta u zasebnoj datoteci olakšava njegovo ponovno korištenje kasnije. Sada, koristeći prilagođeni /pages/_app.tsx
, dodaćemo TacoTranslate
providera.
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
, molimo proširite definiciju sa svojstvima i kodom iznad.
Korak 4: Implementacija server side renderinga
TacoTranslate omogućava server side rendering vaših prijevoda. Ovo znatno poboljšava korisničko iskustvo prikazujući prevedeni sadržaj odmah, umjesto prvobitnog prikaza nepregledanog sadržaja. Također, možemo izostaviti mrežne zahtjeve na klijentu, jer već imamo sve potrebne prijevode.
Počet ćemo tako što ćemo kreirati ili izmijeniti /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'),
});
};
Izmijenite provjeru isProduction
kako bi odgovarala vašim postavkama. Ako true
, TacoTranslate će prikazati javni API ključ. Ako smo u lokalnom, testnom ili staging okruženju (isProduction
is false
), koristit ćemo tajni read/write
API ključ kako bismo bili sigurni da su novi nizovi poslani na prijevod.
Do sada smo postavili Next.js aplikaciju samo sa listom podržanih jezika. Sljedeće što ćemo uraditi je dohvatiti prijevode za sve vaše stranice. Za to ćete koristiti ili getTacoTranslateStaticProps
ili getTacoTranslateServerSideProps
u zavisnosti od vaših potreba.
Ove funkcije primaju tri argumenta: jedan Next.js Static Props Context objekat, konfiguraciju za TacoTranslate, i opcionalne Next.js osobine. Imajte na umu da je revalidate
na getTacoTranslateStaticProps
po defaultu postavljen na 60, kako bi vaše prevode držao ažurnima.
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 koristiti Translate
komponentu za prevođenje nizova unutar svih vaših React komponenti.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}
Korak 5: Deployajte i testirajte!
Gotovi smo! Vaša React aplikacija će sada biti automatski prevedena kada dodate bilo koji tekst u Translate
komponentu. Imajte na umu da samo okruženja sa read/write
dozvolama na API ključu mogu kreirati nove tekstove za prevod. Preporučujemo da imate zatvoreno i sigurno testno okruženje gdje možete testirati vašu produkcijsku aplikaciju sa takvim API ključem, dodajući nove tekstove prije puštanja u rad. Ovo će spriječiti bilo koga da ukrade vaš tajni API ključ i potencijalno nabujaju vaš prevodilački projekat dodavanjem novih, nepovezanih tekstova.
Obavezno pogledajte kompletan primjer na našem GitHub profilu. Tamo ćete također pronaći primjer kako to uraditi koristeći App Router!
Ako naiđete na bilo kakve probleme, slobodno nam se obratite, i biće nam zadovoljstvo pomoći vam.
TacoTranslate vam omogućava automatsku lokalizaciju vaših React aplikacija brzo na i sa bilo kojeg jezika. Započnite danas!