Najbolje rješenje za internacionalizaciju (i18n) u Next.js aplikacijama
Da li želite proširiti svoju Next.js aplikaciju na nova tržišta? TacoTranslate čini lokalizaciju vašeg Next.js projekta izuzetno jednostavnom, omogućavajući vam da doprete do globalne publike bez muke.
Zašto odabrati TacoTranslate za Next.js?
- Besprekorno integrisanje: Dizajnirano posebno za Next.js aplikacije, TacoTranslate se lako uklapa u vaš postojeći radni tok.
- Automatsko prikupljanje stringova: Nema više ručnog upravljanja JSON fajlovima. TacoTranslate automatski prikuplja stringove iz vašeg koda.
- Prijevodi pokretani AI-jem: Iskoristite moć AI-ja da pružite kontekstualno tačne prijevode koji odgovaraju tonu vaše aplikacije.
- Momentalna podrška za jezike: Dodajte podršku za nove jezike jednim klikom, čineći vašu aplikaciju globalno dostupnom.
Kako to funkcioniše
Kako svijet postaje sve globaliziraniji, postaje sve važnije za web developere da prave aplikacije koje mogu odgovarati korisnicima 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 vodiču, istražić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 vas da pogledate 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 primjeru koristit ćemo TacoTranslate.
TacoTranslate automatski prevodi vaše stringove na bilo koji jezik koristeći najsavremeniju AI tehnologiju, i oslobađa vas od dosadnog upravljanja JSON fajlovima.
Instalirajmo ga koristeći npm u vašem terminalu:
npm install tacotranslate
Korak 2: Kreirajte besplatan TacoTranslate nalog
Sada kada ste instalirali modul, vrijeme je da napravite svoj TacoTranslate nalog, projekat za prevod i pripadajuće API ključeve. Napravite nalog ovdje. Besplatno je, i ne zahtijeva da dodate kreditnu karticu.
Unutar TacoTranslate korisničkog interfejsa, kreirajte projekat i idite na karticu sa API ključevima. Kreirajte jedan read
ključ i jedan read/write
ključ. Sačuvat ć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
Obavezno nikada ne otkrivajte 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
: Podrazumijevani kod rezervne lokalizacije. U ovom primjeru, postavit ćemo ga naen
za engleski.TACOTRANSLATE_ORIGIN
: „Folder“ u kojem će vaše stringove biti pohranjeni, 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
Da biste integrisali TacoTranslate sa vašom aplikacijom, morat ćete kreirati klijenta koristeći API ključeve od ranije. Na primjer, kreirajte datoteku pod nazivom /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 posebnoj datoteci olakšava ponovnu upotrebu kasnije. Sada, koristeći prilagođeni /pages/_app.tsx
, dodaćemo 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
, molimo vas da proširite definiciju sa svojstvima i kodom iznad.
Korak 4: Implementacija server side renderinga
TacoTranslate omogućava renderovanje vaših prijevoda na serverskoj strani. Ovo značajno poboljšava korisničko iskustvo prikazujući prevedeni sadržaj odmah, umjesto prvobitnog treptaja neprevedenog sadržaja. Osim toga, možemo preskočiti mrežne zahtjeve na klijentu, jer već imamo sve potrebne prijevode.
Počet ćemo 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 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 da dohvatimo 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 objekat, konfiguraciju za TacoTranslate, i opcionalne Next.js osobine. Imajte na umu da je revalidate
na getTacoTranslateStaticProps
po defaultu postavljeno na 60, kako bi vaše prevode bile ažurne.
Da biste koristili bilo koju od ovih 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 tekstova unutar svih vaših React komponenti.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}
Korak 5: Implementirajte i testirajte!
Gotovo! Vaša Next.js aplikacija će sada biti automatski prevedena kada dodate bilo koje nizove u Translate
komponentu. Imajte na umu da samo okruženja sa read/write
dozvolama na API ključu mogu kreirati nove nizove za prevođenje. Preporučujemo da imate zatvoreno i sigurno staging okruženje gdje možete testirati vašu produkcijsku aplikaciju sa takvim API ključem, dodajući nove nizove prije nego što krenete uživo. Ovo će spriječiti bilo koga da ukrade vaš tajni API ključ, i potencijalno naduvava vaš prevodilački projekat dodavanjem novih, nepovezanih nizova.
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 nas kontaktirajte, i biće nam drago da pomognemo.
TacoTranslate vam omogućava da automatski lokalizujete vaše React aplikacije brzo na i sa bilo kojeg jezika. Započnite danas!