Cea mai bună soluție pentru internaționalizare (i18n) în aplicațiile Next.js
Doriți să vă extindeți aplicația Next.js pe piețe noi? TacoTranslate face incredibil de ușoară localizarea proiectului dumneavoastră Next.js, permițându-vă să ajungeți 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 dumneavoastră de lucru existent.
- Colectare automată a șirurilor: Nu mai trebuie să gestionați manual fișiere JSON. TacoTranslate colectează automat șirurile din codul dumneavoastră.
- Traduceri bazate pe inteligența artificială: Valorificați puterea inteligenței artificiale pentru a oferi traduceri contextuale și precise, care se potrivesc tonului aplicației dumneavoastră.
- Suport instantaneu pentru limbi: Adăugați suport pentru limbi noi cu doar un clic, făcând aplicația dumneavoastră accesibilă la nivel global.
Cum funcționează
Pe măsură ce lumea devine mai globalizată, este din ce în ce mai important ca dezvoltatorii web să construiască aplicații care pot deservi utilizatori din diferite țări și culturi. Una dintre principalele modalități de a realiza acest lucru este internaționalizarea (i18n), care vă permite să vă adaptați aplicația la diferite limbi, valute și formate de dată.
În acest tutorial, vom explora cum să adăugăm internaționalizare aplicației dvs. React Next.js, folosind randare pe server. TL;DR: Vezi exemplul complet aici.
Acest ghid este pentru aplicațiile Next.js care folosesc Pages Router.
Dacă utilizați App Router, vă rugăm să consultați acest ghid.
Pasul 1: Instalați o bibliotecă i18n
Pentru a implementa internaționalizarea în aplicația ta 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 tale în orice limbă folosind AI de ultimă generație și te scapă de gestionarea obositoare a fișierelor JSON.
Să-l instalăm folosind npm în terminalul tău:
npm install tacotranslatePasul 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ă adăugarea unui card de credit.
În interfața aplicației TacoTranslate, creează un proiect și navighează la fila cheilor 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=789010Asigură-te că nu dezvălui niciodată cheia API secretă read/write în mediile de producție pe partea clientului.
Vom adăuga, de asemenea, încă două variabile de mediu: TACOTRANSLATE_DEFAULT_LOCALE și TACOTRANSLATE_ORIGIN.
TACOTRANSLATE_DEFAULT_LOCALE: Codul implicit pentru localizarea de rezervă. În acest exemplu, îl vom seta laenpentru limba engleză.TACOTRANSLATE_ORIGIN: „folderul” în care vor fi stocate șirurile tale, cum ar fi URL‑ul site-ului tău. Află mai multe despre origini aici.
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.comPasul 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 scurt timp.
Crearea clientului într-un fișier separat face mai ușoară reutilizarea ulterioară. 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 pageProps și _app.tsx personalizate, 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 imediat conținutul tradus, în loc să apară mai întâi o scurtă perioadă cu 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 crearea sau modificarea /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 configurării tale. Dacă true, TacoTranslate va afișa cheia publică a API-ului. Dacă suntem într-un mediu local, de testare sau de staging (isProduction is false), vom folosi cheia secretă read/write a API-ului 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 suportate. 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, configurația pentru TacoTranslate și proprietăți opționale Next.js. Reține că revalidate pentru getTacoTranslateStaticProps este setat la 60 în mod implicit, astfel încât traducerile tale să rămână actualizate.
Pentru a folosi oricare dintre funcții într-o pagină, să presupunem că ai 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 în toate componentele React.
import {Translate} from 'tacotranslate/react';
function Component() {
return <Translate string="Hello, world!"/>
}Pasul 5: Publică și testează!
Am terminat! Aplicația dvs. Next.js va fi acum tradusă automat când adăugați orice șiruri de text într-un component Translate. Rețineți că numai mediile cu permisiuni read/write pe cheia 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 o lansa. Aceasta va împiedica pe oricine să vă fure cheia API secretă și, eventual, să supraîncărceze proiectul de traduceri prin adăugarea de șiruri noi, neconectate.
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!