TacoTranslate
/
DocumentationTarification
 
Article
04 mai

La meilleure solution pour l'internationalisation (i18n) dans les applications Next.js

Vous cherchez à étendre votre application Next.js vers de nouveaux marchés ? TacoTranslate facilite incroyablement la localisation de votre projet Next.js, vous permettant d’atteindre un public mondial sans tracas.

Pourquoi choisir TacoTranslate pour Next.js ?

  • Intégration transparente : Conçu spécifiquement pour les applications Next.js, TacoTranslate s'intègre parfaitement à votre flux de travail existant.
  • Collecte automatique des chaînes : Fini la gestion manuelle des fichiers JSON. TacoTranslate collecte automatiquement les chaînes de votre base de code.
  • Traductions alimentées par l'IA : Exploitez la puissance de l'IA pour fournir des traductions contextuellement précises qui correspondent au ton de votre application.
  • Support instantané des langues : Ajoutez la prise en charge de nouvelles langues en un clic, rendant votre application accessible à l'échelle mondiale.

Comment ça marche

À mesure que le monde devient de plus en plus globalisé, il est de plus en plus important pour les développeurs web de créer des applications capables de répondre aux besoins d’utilisateurs de différents pays et cultures. L’un des moyens clés pour y parvenir est l’internationalisation (i18n), qui vous permet d’adapter votre application à différentes langues, monnaies et formats de date.

Dans ce tutoriel, nous allons explorer comment ajouter l’internationalisation à votre application React Next.js, avec le rendu côté serveur. TL;DR: Voir l’exemple complet ici.

Ce guide s'adresse aux applications Next.js utilisant le Pages Router.
Si vous utilisez le App Router, veuillez consulter ce guide à la place.

Étape 1 : Installer une bibliothèque i18n

Pour implémenter l'internationalisation dans votre application Next.js, nous commencerons par choisir une bibliothèque i18n. Il existe plusieurs bibliothèques populaires, y compris next-intl. Cependant, dans cet exemple, nous utiliserons TacoTranslate.

TacoTranslate traduit automatiquement vos chaînes dans n'importe quelle langue grâce à une IA de pointe, et vous libère de la gestion fastidieuse des fichiers JSON.

Installons-le en utilisant npm dans votre terminal :

npm install tacotranslate

Étape 2 : Créez un compte TacoTranslate gratuit

Maintenant que vous avez installé le module, il est temps de créer votre compte TacoTranslate, un projet de traduction, et les clés API associées. Créez un compte ici. C'est gratuit, et cela ne nécessite pas d’ajouter une carte bancaire.

Dans l'interface utilisateur de l'application TacoTranslate, créez un projet et naviguez jusqu'à son onglet des clés API. Créez une clé read et une clé read/write. Nous les enregistrerons en tant que variables d'environnement. La clé read correspond à ce que nous appelons public et la clé read/write est secret. Par exemple, vous pouvez les ajouter dans un fichier .env à la racine de votre projet.

.env
TACOTRANSLATE_PUBLIC_API_KEY=123456
TACOTRANSLATE_SECRET_API_KEY=789010

Veillez à ne jamais divulguer la clé API secrète read/write dans les environnements de production côté client.

Nous ajouterons également deux autres variables d'environnement : TACOTRANSLATE_DEFAULT_LOCALE et TACOTRANSLATE_ORIGIN.

  • TACOTRANSLATE_DEFAULT_LOCALE : Le code de la locale par défaut utilisée en secours. Dans cet exemple, nous le définissons sur en pour l’anglais.
  • TACOTRANSLATE_ORIGIN : Le « dossier » où vos chaînes seront stockées, comme l’URL de votre site web. En savoir plus sur les origins ici.
.env
TACOTRANSLATE_DEFAULT_LOCALE=en
TACOTRANSLATE_ORIGIN=your-website-url.com

Étape 3 : Configuration de TacoTranslate

Pour intégrer TacoTranslate à votre application, vous devrez créer un client en utilisant les clés API mentionnées précédemment. Par exemple, créez un fichier nommé /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;

Nous définirons automatiquement TACOTRANSLATE_API_KEY sous peu.

Créer le client dans un fichier séparé facilite sa réutilisation ultérieure. Maintenant, en utilisant un /pages/_app.tsx personnalisé, nous allons ajouter le fournisseur TacoTranslate.

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

Si vous avez déjà des pageProps et _app.tsx personnalisés, veuillez étendre la définition avec les propriétés et le code indiqués ci-dessus.

Étape 4 : Mise en œuvre du rendu côté serveur

TacoTranslate permet le rendu côté serveur de vos traductions. Cela améliore considérablement l'expérience utilisateur en affichant immédiatement le contenu traduit, au lieu d'un bref affichage de contenu non traduit. De plus, nous pouvons éviter les requêtes réseau côté client, car nous disposons déjà de toutes les traductions dont nous avons besoin.

Nous commencerons par créer ou modifier /next.config.js.

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

Modifiez la vérification de l' isProduction en fonction de votre configuration. Si true, TacoTranslate affichera la clé API publique. Si nous sommes dans un environnement local, de test ou de test (isProduction is false), nous utiliserons la clé API secrète read/write pour nous assurer que les nouvelles chaînes sont envoyées pour traduction.

Jusqu'à présent, nous avons seulement configuré l'application Next.js avec une liste de langues prises en charge. La prochaine étape consiste à récupérer les traductions pour toutes vos pages. Pour ce faire, vous utiliserez soit getTacoTranslateStaticProps soit getTacoTranslateServerSideProps en fonction de vos besoins.

Ces fonctions prennent trois arguments : un objet Next.js Static Props Context, une configuration pour TacoTranslate, et des propriétés Next.js optionnelles. Notez que revalidate sur getTacoTranslateStaticProps est défini à 60 par défaut, afin que vos traductions restent à jour.

Pour utiliser l'une ou l'autre de ces fonctions dans une page, supposons que vous avez un fichier de page comme /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!"/>;
}

Vous devriez maintenant pouvoir utiliser le composant Translate pour traduire les chaînes dans tous vos composants React.

import {Translate} from 'tacotranslate/react';

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

Étape 5 : Déployer et tester !

Nous avons terminé ! Votre application Next.js sera désormais traduite automatiquement lorsque vous ajoutez des chaînes à un composant Translate. Notez que seuls les environnements disposant des permissions read/write sur la clé API pourront créer de nouvelles chaînes à traduire. Nous recommandons d’avoir un environnement de préproduction fermé et sécurisé où vous pourrez tester votre application de production avec une clé API de ce type, en ajoutant de nouvelles chaînes avant la mise en ligne. Cela empêchera toute personne de voler votre clé API secrète et d’éventuellement alourdir votre projet de traduction en ajoutant de nouvelles chaînes non liées.

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!

Un produit de NattskiftetFabriqué en Norvège