# General Translation React SDKs (gt-react, gt-next, gt-react-native): Utiliser les Cache Components
URL: https://generaltranslation.com/fr/docs/react/nextjs/cache-components.mdx
---
title: Utiliser les Cache Components
description: Comment utiliser les Cache Components de Next.js avec des fonctions de requête compatibles avec les paramètres régionaux et des traductions stockées localement.
related:
links:
- /docs/react/nextjs/app-router-middleware
- /docs/react/nextjs/app-router-static-site-generation
- /docs/react/nextjs/registering-request-locales
- /docs/react/nextjs/locale-alias-seo
---
Les Cache Components peuvent prérendre et mettre en cache du contenu localisé côté serveur. Le paramètre régional, la région et les traductions doivent tous pouvoir être résolus sans en-têtes de requête, cookies ni loader de traduction distant par défaut.
*Remarque : ce guide utilise Next.js 16 ou une version ultérieure, où les Cache Components se configurent avec `cacheComponents: true`.*
## Activer les Cache Components [#enable]
Activez les Cache Components dans `next.config.ts`. Conservez [`withGTConfig`](/docs/react/nextjs/config) autour de la configuration Next.js :
```ts title="next.config.ts"
import type { NextConfig } from 'next';
import { withGTConfig } from 'gt-next/config';
const nextConfig: NextConfig = {
cacheComponents: true,
};
export default withGTConfig(nextConfig);
```
Lorsque les Cache Components sont activés, `gt-next` :
* Nécessite une fonction [`loadTranslations`](/docs/react/reference/functions/load-translations) personnalisée. Le loader distant par défaut n’est pas sûr lors du prérendu.
* Émet un avertissement si les fonctions de requête personnalisées [`getLocale`](/docs/react/nextjs/reference/functions/get-locale) et [`getRegion`](/docs/react/nextjs/reference/functions/get-region) sont absentes.
* Désactive le hot reload des traductions au Runtime en développement, car il génère des requêtes dynamiques.
* Laisse Next.js gérer l’invalidation du cache au lieu d’appliquer l’expiration habituelle du cache de General Translation.
## Résoudre les valeurs de la requête [#request-values]
Placez le segment `[locale]` à la racine de l’arborescence App Router. Le layout racine doit être `app/[locale]/layout.tsx`, sans `app/layout.tsx` au-dessus.
Créez `getLocale.ts` à la racine du projet :
```ts title="getLocale.ts"
import { locale } from 'next/root-params';
export default async function getLocale() {
return await locale();
}
```
Créez `getRegion.ts` à côté. Renvoyez une région fixe si votre sortie en dépend, ou `undefined` pour désactiver la détection de région :
```ts title="getRegion.ts"
export default async function getRegion() {
return undefined;
}
```
`withGTConfig` détecte automatiquement les deux fichiers. S’ils se trouvent ailleurs, définissez [`getLocalePath` et `getRegionPath`](/docs/react/nextjs/config#request-function-paths).
N’appelez pas `headers()` ni `cookies()` dans ces fonctions de requête. Les API de requête dynamiques ne peuvent pas s’exécuter dans une limite `"use cache"`. Lisez le paramètre régional dans `next/root-params` et renvoyez plutôt une région fixe.
## Stocker les traductions localement [#local-translations]
Générez les fichiers de traduction avant le build de Next.js, puis chargez-les depuis votre bundle :
```ts title="loadTranslations.ts"
export default async function loadTranslations(locale: string) {
try {
const translations = await import(`./public/_gt/${locale}.json`);
return translations.default;
} catch {
return {};
}
}
```
`withGTConfig` détecte `loadTranslations.ts` à la racine du projet ou dans `src/`. Vous pouvez également définir [`loadTranslationsPath`](/docs/react/nextjs/config#load-translations-path).
Configurez la sortie de la CLI pour qu’elle corresponde au loader, puis exécutez [`npx gt translate`](/docs/cli/reference/commands/translate) avant `next build`. Consultez [Stocker les traductions localement](/docs/react/guides/storing-translations) pour le workflow complet.
## Mettre en cache le contenu traduit [#cache-content]
Résolvez le paramètre régional en dehors de la fonction mise en cache et transmettez-le en tant qu’argument sérialisable. Les arguments de la fonction font partie de la clé de cache de Cache Components, ce qui permet de distinguer les entrées selon le paramètre régional.
```tsx title="app/[locale]/page.tsx"
import { T } from 'gt-next';
import { getLocale } from 'gt-next/server';
import { cacheLife, cacheTag } from 'next/cache';
async function CachedContent({ locale }: { locale: string }) {
'use cache';
cacheLife('hours');
cacheTag(`home-${locale}`);
return Welcome to our site;
}
export default async function Page() {
const locale = await getLocale();
return ;
}
```
Appliquez la même approche à toute région ou autre valeur de requête qui modifie la traduction affichée. Ne laissez jamais deux paramètres régionaux partager la même entrée de cache.
## Next steps
- /docs/react/nextjs/app-router-middleware
- /docs/react/nextjs/app-router-static-site-generation
- /docs/react/nextjs/registering-request-locales
- /docs/react/nextjs/locale-alias-seo