Najbolje rješenje za internacionalizaciju (i18n) u Next.js aplikacijama
Želite li proširiti svoju Next.js aplikaciju na nova tržišta? TacoTranslate izuzetno olakšava lokalizaciju vašeg Next.js projekta, omogućujući vam da dosegnete globalnu publiku bez poteškoća.
Zašto odabrati TacoTranslate za Next.js?
- Besprijekorna integracija: Dizajniran posebno za Next.js aplikacije, TacoTranslate se bez napora uklapa u vaš postojeći radni proces.
- Automatsko prikupljanje stringova: Više nema ručnog upravljanja JSON datotekama. TacoTranslate automatski prikuplja stringove iz vaše baze koda.
- Prijevodi pokretani AI-jem: Iskoristite snagu AI-a za pružanje kontekstualno točnih prijevoda koji odgovaraju tonu vaše aplikacije.
- Trenutna podrška za jezike: Dodajte podršku za nove jezike jednim klikom, čineći vašu aplikaciju globalno dostupnom.
Kako to funkcionira
Kako svijet postaje sve globaliziraniji, postaje sve važnije da web programeri razvijaju 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ćuje da prilagodite svoju aplikaciju različitim jezicima, valutama i formatima datuma.
U ovom ćemo tutorijalu istražiti kako dodati internacionalizaciju svojoj React Next.js aplikaciji, s renderiranjem na strani poslužitelja. TL;DR: Pogledajte cijeli primjer ovdje.
Ovaj vodič je za Next.js aplikacije koje koriste Pages Router.
Ako koristite App Router, molimo pogledajte ovaj vodič umjesto toga.
Korak 1: Instalirajte i18n biblioteku
Za implementaciju internacionalizacije u vašoj Next.js aplikaciji, prvo ćemo odabrati i18n biblioteku. Postoji nekoliko popularnih biblioteka, uključujući next-intl. Međutim, u ovom primjeru koristit ćemo TacoTranslate.
TacoTranslate automatski prevodi vaše nizove na bilo koji jezik koristeći najmoderniju AI tehnologiju, čime vas oslobađa zamornog upravljanja JSON datotekama.
Instalirajmo ga pomoću npm u vašem terminalu:
npm install tacotranslate
Korak 2: Kreirajte besplatan TacoTranslate račun
Sada kada ste instalirali modul, vrijeme je da napravite svoj TacoTranslate račun, projekt prijevoda i pripadajuće API ključeve. Registrirajte se ovdje. Besplatno je i ne zahtijeva unos kreditne kartice.
Unutar korisničkog sučelja aplikacije TacoTranslate, kreirajte projekt i otvorite karticu za API ključeve. Kreirajte jedan read
ključ i jedan read/write
ključ. Spremit ćemo ih kao varijable okoline. read
ključ nazivamo public
(javni), a read/write
ključ nazivamo secret
(tajni). Na primjer, možete ih dodati u .env
datoteku u korijenu vašeg projekta.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
Nikada nemojte otkriti tajni read/write
API ključ u produkcijskim 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 jezika za povratak. U ovom primjeru, postavit ćemo ga naen
za engleski.TACOTRANSLATE_ORIGIN
: „Mapa“ gdje će se spremati vaše nizove, poput URL-a 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
Za integraciju TacoTranslate s vašom aplikacijom, morat ćete kreirati klijenta koristeći API ključeve spomenute ranije. Na primjer, kreirajte datoteku nazvanu /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 ponovno korištenje kasnije. Sada, koristeći prilagođeni /pages/_app.tsx
, dodati ćemo 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>
);
}
Ako već imate prilagođene pageProps
i _app.tsx
, molimo proširite definiciju s gore navedenim svojstvima i kodom.
Korak 4: Implementacija renderiranja na strani poslužitelja
TacoTranslate omogućuje renderiranje prijevoda na strani poslužitelja. To znatno poboljšava korisničko iskustvo prikazivanjem prevedenog sadržaja odmah, umjesto da se prvo prikaže neprevedeni sadržaj. Osim toga, možemo preskočiti mrežne zahtjeve na klijentu jer već imamo sve potrebne prijevode.
Počet ćemo s kreiranjem ili izmjenom /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 se nalazimo u lokalnom, testnom ili pripremnom okruženju (isProduction
is false
), upotrijebit ćemo tajni read/write
API ključ da bismo bili sigurni da se novi nizovi šalju na prijevod.
Do sada smo samo postavili Next.js aplikaciju s popisom podržanih jezika. Sljedeće što ćemo učiniti je dohvatiti prijevode za sve vaše stranice. Za to ćete koristiti ili getTacoTranslateStaticProps
ili getTacoTranslateServerSideProps
ovisno o vašim zahtjevima.
Ove funkcije primaju tri argumenta: jedan Next.js Static Props Context objekt, konfiguraciju za TacoTranslate i opcionalna Next.js svojstva. Imajte na umu da je revalidate
na getTacoTranslateStaticProps
postavljen na 60 prema zadanim postavkama, kako bi vaši prijevodi ostali ažurni.
Da biste koristili bilo koju od funkcija na stranici, pretpostavimo da imate datoteku stranice poput /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: Postavite i testirajte!
Gotovi smo! Vaša Next.js aplikacija sada će se automatski prevoditi kada dodate bilo koje nizove unutar Translate
komponente. Imajte na umu da će samo okruženja s read/write
dozvolama na API ključu moći kreirati nove nizove za prijevod. Preporučujemo da imate zatvoreno i sigurno staging okruženje u kojem možete testirati svoju produkcijsku aplikaciju s takvim API ključem, dodajući nove nizove prije nego što krenete u produkciju. To će spriječiti bilo koga da ukrade vaš tajni API ključ i potencijalno napuše vaš projekt prijevoda dodavanjem novih, nepovezanih nizova.
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!