Cea mai bună soluție pentru internaționalizare (i18n) în aplicațiile Next.js
Vrei să-ți extinzi aplicația Next.js pe piețe noi? TacoTranslate face extrem de ușoară localizarea proiectului tău Next.js, permițându-ți să ajungi la un public global fără bătăi de cap.
De ce să alegi TacoTranslate pentru Next.js?
- Integrare perfectă: Conceput special pentru aplicațiile Next.js, TacoTranslate se integrează fără efort în fluxul dvs. de lucru existent.
- Colectare automată a șirurilor de caractere: Nu mai trebuie să gestionați manual fișierele JSON. TacoTranslate colectează automat șirurile din codul dvs.
- Traduceri bazate pe AI: Valorificați puterea AI pentru a oferi traduceri contextuale și precise, care se potrivesc tonului aplicației dvs.
- Suport instantaneu pentru limbi: Adăugați suport pentru limbi noi cu un singur clic, făcând aplicația dvs. accesibilă la nivel global.
Cum funcționează
Pe măsură ce lumea devine tot mai globalizată, devine din ce în ce mai important ca dezvoltatorii web să creeze aplicații care să se adreseze utilizatorilor din diferite țări și culturi. Unul dintre modurile cheie de a realiza acest lucru este internaționalizarea (i18n), care îți permite să adaptezi aplicația la diferite limbi, valute și formate de dată.
În acest tutorial, vom explora cum să adaugi internaționalizare aplicației tale React Next.js, cu redare pe server. TL;DR: Vezi exemplul complet aici.
Acest ghid este pentru aplicațiile Next.js care folosesc Pages Router.
Dacă folosiți App Router, consultați în schimb acest ghid.
Pasul 1: Instalați o bibliotecă i18n
Pentru a implementa internaționalizarea în aplicația dvs. Next.js, mai întâi vom alege o bibliotecă i18n. Există mai multe biblioteci populare, inclusiv next-intl. Totuși, în acest exemplu vom folosi TacoTranslate.
TacoTranslate traduce automat șirurile dvs. în orice limbă folosind AI de ultimă generație și vă scutește de gestionarea obositoare a fișierelor JSON.
Să-l instalăm folosind npm în terminalul dvs.:
npm install tacotranslate
Pasul 2: Creează un cont TacoTranslate gratuit
Acum că ai instalat modulul, este timpul să îți creezi contul TacoTranslate, un proiect de traducere și cheile API asociate. Creează un cont aici. Este gratuit și nu necesită să adaugi un card de credit.
În interfața aplicației TacoTranslate, creează un proiect și navighează la fila pentru chei API. Creează o cheie read
și o cheie read/write
. Le vom salva ca variabile de mediu. Cheia read
este ceea ce numim public
, iar cheia read/write
este secret
. De exemplu, le poți adăuga într-un fișier .env
în rădăcina proiectului tău.
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010
Asigurați-vă că nu divulgați niciodată cheia API secretă read/write
în mediile de producție pe partea clientului.
De asemenea, vom adăuga două variabile de mediu în plus: TACOTRANSLATE_DEFAULT_LOCALE
și TACOTRANSLATE_ORIGIN
.
TACOTRANSLATE_DEFAULT_LOCALE
: Codul implicit al localizării de rezervă. În acest exemplu, îl vom seta laen
pentru engleză.TACOTRANSLATE_ORIGIN
: „folderul” în care vor fi stocate șirurile tale, de exemplu URL-ul site-ului tău. Citește mai multe despre origini aici.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com
Pasul 3: Configurarea TacoTranslate
Pentru a integra TacoTranslate cu aplicația dvs., va trebui să creați un client folosind cheile API menționate mai sus. De exemplu, creați un fișier numit /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;
Vom defini automat TACOTRANSLATE_API_KEY
în curând.
Crearea clientului într-un fișier separat îl face mai ușor de reutilizat ulterior. Acum, folosind un /pages/_app.tsx
personalizat, vom adăuga providerul TacoTranslate
.
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>
);
}
Dacă aveți deja personalizate pageProps
și _app.tsx
, vă rugăm să extindeți definiția cu proprietățile și codul de mai sus.
Pasul 4: Implementarea randării pe server
TacoTranslate permite redarea traducerilor pe server. Acest lucru îmbunătățește considerabil experiența utilizatorului, afișând conținutul tradus imediat, în locul unui scurt moment în care se vede conținut netradus. În plus, putem evita cererile de rețea pe client, deoarece avem deja toate traducerile de care avem nevoie.
Vom începe prin a crea sau a modifica /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'),
});
};
Modifică verificarea isProduction
pentru a se potrivi configurației tale. Dacă true
, TacoTranslate va afișa cheia publică API. Dacă ne aflăm într-un mediu local, de test sau staging (isProduction
is false
), vom folosi cheia secretă read/write
API pentru a ne asigura că noile șiruri sunt trimise pentru traducere.
Până acum, am configurat aplicația Next.js doar cu o listă de limbi acceptate. Următorul lucru pe care îl vom face este să preluăm traducerile pentru toate paginile tale. Pentru a face asta, vei folosi fie getTacoTranslateStaticProps
, fie getTacoTranslateServerSideProps
în funcție de cerințele tale.
Aceste funcții primesc trei argumente: un obiect Next.js Static Props Context, configurarea pentru TacoTranslate și proprietăți opționale Next.js. Valoarea revalidate
pentru getTacoTranslateStaticProps
este setată la 60 în mod implicit, astfel încât traducerile dvs. să rămână la zi.
Pentru a folosi oricare dintre funcții într-o pagină, să presupunem că aveți un fișier de pagină precum /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!"/>;
}
Ar trebui acum să puteți folosi componenta Translate
pentru a traduce șiruri de text în toate componentele dvs. React.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}
Pasul 5: Implementați și testați!
Am terminat! Aplicația dvs. Next.js va fi acum tradusă automat atunci când adăugați orice șiruri într-o Translate
componentă. Rețineți că numai mediile cu permisiuni read/write
asupra cheii API vor putea crea noi șiruri care să fie traduse. Vă recomandăm să aveți un mediu de staging închis și securizat în care să vă testați aplicația de producție cu o astfel de cheie API, adăugând noi șiruri înainte de a lansa în producție. Acest lucru va împiedica pe oricine oricine să fure cheia dvs. API secretă și, potențial, să umfle proiectul dvs. de traducere prin adăugarea de șiruri noi, nerelevante.
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!