Présentation

Présentation du SDK Next.js de General Translation

Introduction

Le SDK Next.js de General Translation est une bibliothèque open source d’internationalisation (i18n) pour les applications Next.js.

Il propose un ensemble complet d’outils pour internationaliser votre application Next.js de façon simple et maintenable, avec une parité fonctionnelle par rapport aux autres bibliothèques i18n populaires. Reposant sur le React SDK, il offre en plus des fonctionnalités spécifiques à Next.js.

Le SDK peut être utilisé de manière autonome, sans la plateforme General Translation, et se comporte comme les autres bibliothèques i18n.

Il s’intègre toutefois à notre plateforme pour des fonctionnalités avancées :

  • Rechargement à chaud des traductions en développement
  • Traductions automatiques par IA
  • Synchronisation des traductions avec la plateforme General Translation
  • Intégration native avec notre CDN de traduction (Content Delivery Network)
  • Traduction à la demande des composants React en production (côté serveur)

Concepts

Il existe 6 concepts clés à connaître sur le SDK.

Initialisation avec withGTConfig

Le composant <GTProvider>

Le composant <T>

Le hook useGT

La fonction msg pour les chaînes partagées

(Optionnel) Le hook useTranslations

Initialisation avec withGTConfig

La fonction withGTConfig initialise le SDK dans votre application Next.js.

Ajoutez-la à votre fichier next.config.[js|ts] pour configurer le SDK :

next.config.ts
import { withGTConfig } from 'gt-next/config';

const nextConfig = {
  // Vos options next.config.ts
};

export default withGTConfig(nextConfig, {
  // Votre configuration GT
});

Consultez la Référence de l’API withGTConfig pour en savoir plus.

Le composant <GTProvider>

Le composant <GTProvider> fournit le contexte de traduction à votre application, notamment la langue en cours et les traductions associées.

import { GTProvider } from 'gt-next';

export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        <GTProvider>
          {children}
        </GTProvider>
      </body>
    </html>
  );
}

Important : Le provider doit envelopper l’ensemble de votre application et être placé aussi haut que possible dans l’arborescence des composants, par exemple dans le layout racine.

Le provider n’est requis que pour les fonctionnalités côté client. Les applications exclusivement côté serveur n’en ont pas besoin, mais il peut tout de même être inclus.

Consultez la Référence de l’API de GTProvider pour plus d’informations.

Le composant <T>

Le composant <T> est la méthode recommandée pour traduire le contenu de votre application.

C’est un composant React qui peut encapsuler n’importe quel élément JSX et qui rendra automatiquement le contenu de l’élément dans une langue prise en charge.

Nous recommandons d’utiliser le composant <T> autant que possible, car il offre la plus grande flexibilité pour les traductions.

Contrairement aux chaînes, le composant <T> peut être utilisé pour traduire du contenu HTML, ce qui le rend bien plus puissant que les traductions de chaînes.

Exemples

<T>
  <div>Bonjour le monde !</div>
</T>
<T>
  <div>
    <h1> Voici une image </h1>
    <img src="https://example.com/image.png" alt="Exemple" />
  </div>
</T>
<T>
  Le formatage peut être effectué facilement avec le composant `<T>`.
  <Num>{1000}</Num>
  <DateTime>{new Date()}</DateTime>
  <Currency currency="USD">{1000}</Currency>
</T>

Le composant <T> fonctionne avec des composants variables comme <Num>, <DateTime> et <Currency> pour le formatage dynamique du contenu.

Consultez le guide du composant <T> pour découvrir les différentes façons d’utiliser le composant <T>.

Le hook useGT

Le hook useGT est un hook React qui s’utilise de façon similaire au composant <T>, avec quelques compromis.

Ce hook retourne une fonction permettant de traduire des chaînes.

const t = useGT();

t('Bonjour le monde !');

Par rapport au composant <T>, le hook useGT offre davantage de flexibilité dans votre codebase.

Par exemple, si vous avez une structure de données complexe avec des chaînes imbriquées, il serait plus difficile d’utiliser un composant <T>.

const t = useGT();
const data = {
  title: t('Bonjour le monde !'),
  description: t('Ceci est une description'),
};

Consultez le guide des chaînes pour en savoir plus sur le hook useGT.

La fonction msg

La fonction msg sert à marquer pour traduction les chaînes utilisées dans plusieurs composants ou stockées dans des objets de configuration.

Elle est particulièrement utile pour le contenu partagé, comme les libellés de navigation, les messages de formulaire ou tout texte apparaissant à plusieurs endroits dans votre application.

// Marquer les chaînes pour la traduction
import { msg } from 'gt-next';

const navItems = [
  { label: msg('Accueil'), href: '/' },
  { label: msg('À propos'), href: '/about' },
  { label: msg('Contact'), href: '/contact' }
];
// Décoder et utiliser les chaînes marquées
import { useMessages } from 'gt-next';

function Navigation() {
  const m = useMessages();
  
  return (
    <nav>
      {navItems.map(item => (
        <a key={item.href} href={item.href}>
          {m(item.label)}
        </a>
      ))}
    </nav>
  );
}

La fonction msg encode des chaînes avec des métadonnées de traduction, et useMessages (ou getMessages pour les composants serveur) les décode.

Utilisez msg pour le contenu partagé devant être traduit de manière cohérente dans l’ensemble de votre application. Pour le contenu propre à un composant, privilégiez <T> ou useGT.

Consultez le guide chaînes partagées pour en savoir plus sur la fonction msg.

Le hook useTranslations

Le hook useTranslations est un hook React qui retourne une fonction permettant de récupérer les traductions associées à une clé donnée.

dictionary.ts
const dictionary = {
  hello: {
    world: 'Bonjour le monde !',
  },
};
App.tsx
const translate = useTranslations();
translate('bonjour.monde');

Ce comportement est similaire à d’autres bibliothèques de traduction, comme react-i18next et next-intl.

Nous déconseillons d’utiliser le hook useTranslations dans votre application. Un recours fréquent à useTranslations rendra votre codebase plus difficile à maintenir et entraînera une dette technique importante.

Nous recommandons plutôt d’utiliser le composant <T> ou le hook useGT.

Si vous migrez depuis une autre bibliothèque i18n, le hook useTranslations est un remplacement plug-and-play et peut être utile pour migrer votre codebase de manière progressive.

Consultez le guide dictionaries pour en savoir plus sur le hook useTranslations.

Consultez la Référence de l’API useTranslations pour plus d’informations.


Prochaines étapes

Que pensez-vous de ce guide ?

Présentation