# General Translation React SDKs (gt-react, gt-next, gt-react-native): Uso de Cache Components
URL: https://generaltranslation.com/es/docs/react/nextjs/cache-components.mdx
---
title: Uso de Cache Components
description: Cómo usar Cache Components de Next.js con funciones de solicitud compatibles con la configuración regional y traducciones almacenadas localmente.
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
---
Cache Components permite prerenderizar y almacenar en caché contenido localizado del servidor. La configuración regional, la región y las traducciones deben resolverse sin cabeceras de solicitud, cookies ni el cargador remoto de traducciones predeterminado.
*Nota: Esta guía usa Next.js 16 o una versión posterior, en la que Cache Components se configura con `cacheComponents: true`.*
## Habilita Cache Components [#enable]
Habilita Cache Components en `next.config.ts`. Conserva [`withGTConfig`](/docs/react/nextjs/config) alrededor de la configuración de 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);
```
Cuando Cache Components está habilitada, `gt-next`:
* Requiere una función personalizada de [`loadTranslations`](/docs/react/reference/functions/load-translations). El cargador remoto predeterminado no es seguro durante el prerendering.
* Advierte si faltan las funciones personalizadas de solicitud [`getLocale`](/docs/react/nextjs/reference/functions/get-locale) y [`getRegion`](/docs/react/nextjs/reference/functions/get-region).
* Deshabilita el hot reload de traducción en tiempo de ejecución durante el desarrollo porque realiza solicitudes dinámicas.
* Deja que Next.js gestione la invalidación de la caché en lugar de aplicar la caducidad habitual de la caché de General Translation.
## Resuelve los valores de la solicitud [#request-values]
Coloca el segmento `[locale]` en la raíz del árbol del App Router. El layout raíz debe ser `app/[locale]/layout.tsx`, sin ningún `app/layout.tsx` por encima.
Crea `getLocale.ts` en la raíz del proyecto:
```ts title="getLocale.ts"
import { locale } from 'next/root-params';
export default async function getLocale() {
return await locale();
}
```
Crea `getRegion.ts` junto a este archivo. Devuelve una región fija si tu salida depende de ella, o `undefined` para desactivar la detección de región:
```ts title="getRegion.ts"
export default async function getRegion() {
return undefined;
}
```
`withGTConfig` detecta ambos archivos automáticamente. Si están en otra ubicación, configura [`getLocalePath` y `getRegionPath`](/docs/react/nextjs/config#request-function-paths).
No llames a `headers()` ni a `cookies()` desde estas funciones de solicitud. Las API de solicitud dinámicas no pueden ejecutarse dentro de un límite de `"use cache"`. En su lugar, lee la configuración regional de `next/root-params` y devuelve una región fija.
## Almacena las traducciones localmente [#local-translations]
Genera los archivos de traducción antes de compilar Next.js y luego cárgalos desde tu 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` detecta `loadTranslations.ts` en la raíz del proyecto o en `src/`. También puedes configurar [`loadTranslationsPath`](/docs/react/nextjs/config#load-translations-path).
Configura la salida de la CLI para que coincida con el cargador y ejecuta [`npx gt translate`](/docs/cli/reference/commands/translate) antes de `next build`. Consulta [Almacenar traducciones localmente](/docs/react/guides/storing-translations) para conocer el workflow completo.
## Almacena en caché el contenido traducido [#cache-content]
Resuelve la configuración regional fuera de la función almacenada en caché y pásala como argumento serializable. Los argumentos de la función forman parte de la clave de caché de Cache Components, lo que mantiene separadas las entradas de las distintas configuraciones regionales.
```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 ;
}
```
Aplica el mismo patrón a cualquier región u otro valor de la solicitud que cambie la traducción renderizada. Nunca permitas que dos configuraciones regionales compartan una entrada de caché.
## 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