TacoTranslate
/
DokumentasiePryse
 
Artikel
04 Mei

Die beste oplossing vir internasionalisering (i18n) in Next.js-toepassings

Is u op soek om u Next.js-toepassing na nuwe markte uit te brei? TacoTranslate maak dit ongelooflik maklik om u Next.js-projek te lokaliseer, wat u in staat stel om ’n wêreldwye gehoor te bereik sonder die moeilikheid.

Waarom kies jy TacoTranslate vir Next.js?

  • Naadlose Integrasie: Spesifiek ontwerp vir Next.js-toepassings, integreer TacoTranslate moeiteloos in jou bestaande werksvloei.
  • Outomatiese Stringversameling: Geen handmatige bestuur van JSON-lêers meer nie. TacoTranslate versamel strings outomaties van jou kodebas.
  • KI-aangedrewe Vertalings: Benut die krag van KI om konteksueel akkurate vertalings te voorsien wat by die toon van jou toepassing pas.
  • Onmiddellike Taalondersteuning: Voeg ondersteuning vir nuwe tale met net ’n klik by, wat jou toepassing wêreldwyd toeganklik maak.

Hoe dit werk

Naarmate die wêreld meer wêreldwyd word, word dit al hoe belangriker vir webontwikkelaars om toepassings te bou wat gebruikers van verskillende lande en kulture kan bedien. Een van die belangrikste maniere om dit te bereik is deur internasionlisering (i18n), wat jou toelaat om jou toepassing aan te pas by verskillende tale, geldeenhede en datumformate.

In hierdie tutoriaal gaan ons ondersoek hoe om internasionlisering by jou React Next.js-toepassing te voeg, met bediener-kant rendering. TL;DR: Sien die volledige voorbeeld hier.

Hierdie gids is vir Next.js-toepassings wat die Pages Router gebruik.
As jy die App Router gebruik, sien asseblief eerder hierdie gids.

Stap 1: Installeer 'n i18n-biblioteek

Om internasionale ondersteuning in jou Next.js-toepassing te implementeer, sal ons eers 'n i18n-biblioteek kies. Daar is verskeie populêre biblioteke, insluitend next-intl. In hierdie voorbeeld gaan ons egter TacoTranslate gebruik.

TacoTranslate vertaal jou stringe outomaties na enige taal met behulp van gevorderde KI, en bevry jou van die vervelige bestuur van JSON-lêers.

Kom ons installeer dit met npm in jou terminal:

npm install tacotranslate

Stap 2: Skep 'n gratis TacoTranslate-rekening

Nou dat jy die module geïnstalleer het, is dit tyd om jou TacoTranslate-rekening, ’n vertaalprojek, en geassosieerde API-sleutels te skep. Skep ’n rekening hier. Dit is gratis, en vereis nie dat jy ’n kredietkaart moet byvoeg nie.

Binne die TacoTranslate-toepassingskoppelvlak, skep 'n projek, en navigeer na die API-sleutels-oortjie. Skep een read sleutel, en een read/write sleutel. Ons sal dit as omgewingsveranderlikes stoor. Die read sleutel is wat ons public noem en die read/write sleutel is secret. Byvoorbeeld, jy kan dit byvoeg aan 'n .env lêer in die wortel van jou projek.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Maak seker dat jy nooit die geheime read/write API-sleutel lek na kliëntkant-produksie-omgewings nie.

Ons sal ook twee omgewingveranderlikes byvoeg: TACOTRANSLATE_DEFAULT_LOCALE en TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE: Die standaard terugvaltaal-kode. In hierdie voorbeeld stel ons dit op en vir Engels.
  • TACOTRANSLATE_ORIGIN: Die “lêergids” waar jou stringe gestoor sal word, soos die URL van jou webwerf. Lees meer oor oorspronge hier.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Stap 3: Opstel van TacoTranslate

Om TacoTranslate met jou toepassing te integreer, moet jy ’n kliënt skep met behulp van die API-sleutels van vroeër. Skep byvoorbeeld ’n lêer genaamd /tacotranslate-client.js.

/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;

Ons sal binnekort TACOTRANSLATE_API_KEY outomaties definieer.

Om die kliënt in ’n aparte lêer te skep maak dit makliker om later weer te gebruik. Nou, met behulp van ’n pasgemaakte /pages/_app.tsx, gaan ons die TacoTranslate verskaffer byvoeg.

/pages/_app.tsx
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>
	);
}

As jy reeds aangepaste pageProps en _app.tsx het, brei asseblief die definisie uit met die eienskappe en kode van hierbo.

Stap 4: Implementering van bediener-kant rendering

TacoTranslate maak voorsiening vir bediener-kant rendering van jou vertalings. Dit verbeter die gebruikerservaring aansienlik deur vertaalde inhoud onmiddellik te wys, in plaas van eers ’n kort flits van onvertalde inhoud. Daarbenewens kan ons netwerkversoeke aan die kliënt oorslaan, omdat ons reeds al die vertalings het wat ons benodig.

Ons begin deur /next.config.js te skep of te wysig.

/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'),
	});
};

Pas die isProduction kontrole aan om by jou opstelling te pas. As dit true is, sal TacoTranslate die publiekelike API-sleutel openbaar maak. As ons in ’n plaaslike, toets- of staging-omgewing is (isProduction is false), sal ons die geheime read/write API-sleutel gebruik om seker te maak nuwe stringe word gestuur vir vertaling.

Tot dusver het ons net die Next.js-toepassing opgestel met 'n lys van ondersteunde tale. Die volgende wat ons gaan doen, is om vertalings vir al jou bladsye te haal. Om dit te doen, sal jy óf getTacoTranslateStaticProps óf getTacoTranslateServerSideProps gebruik, gebaseer op jou behoeftes.

Hierdie funksies neem drie argumente: Een Next.js Static Props Context objek, konfigurasie vir TacoTranslate, en opsionele Next.js eienskappe. Let daarop dat revalidate op getTacoTranslateStaticProps standaard op 60 gestel is, sodat jou vertalings op datum bly.

Om een van die funksies op ’n bladsy te gebruik, kom ons veronderstel jy het ’n bladsy-lêer soos /pages/hello-world.tsx.

/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!"/>;
}

Jy behoort nou die Translate komponent te kan gebruik om stringe binne al jou React-komponente te vertaal.

import {Translate} from 'tacotranslate/react';

function Component() {
	return <Translate string="Hello, world!"/>
}

Stap 5: Ontplooi en toets!

Ons is klaar! Jou Next.js-toepassing sal nou outomaties vertaal word wanneer jy enige stringe aan 'n Translate komponent toevoeg. Let daarop dat slegs omgewings met read/write toestemmings op die API-sleutel in staat sal wees om nuwe stringe te skep wat vertaal moet word. Ons beveel aan om 'n geslote en beveiligde staging-omgewing te hê waar jy jou produksietoepassing kan toets met so 'n API-sleutel, en nuwe stringe kan byvoeg voordat dit regstreeks gaan. Dit sal voorkom dat enigiemand jou geheime API-sleutel steel, en moontlik jou vertaalprojek laat oorlaai deur nuwe, onverskepte stringe by te voeg.

Maak seker dat jy die volledige voorbeeld by ons GitHub-profiel nagaan. Daar sal jy ook ’n voorbeeld vind van hoe om dit te doen met die gebruik van die App Router! As jy enige probleme ervaar, voel vry om kontak te maak, en ons help jou graag.

TacoTranslate laat jou toe om jou React-toepassings outomaties vinnig te lokaliseer na en van enige taal. Begin vandag!

'n Produk van NattskiftetGemaak in Noorweë