# gt-next: General Translation Next.js SDK: Guía rápida de Next.js
URL: https://generaltranslation.com/es/docs/next.mdx
---
title: Guía rápida de Next.js
description: Agrega varios idiomas a tu app de Next.js en menos de 10 minutos
---
Al final de esta guía, tu app de Next.js mostrará contenido en varios idiomas e incluirá un selector de idioma con el que tus usuarios podrán interactuar.
**Requisitos previos:**
* Una app de Next.js que use el **App Router** (Next.js 13+)
* Node.js 18+
**¿Quieres una configuración automática?** Ejecuta `npx gt@latest` para configurar todo con el [Asistente de configuración](/docs/cli/init). Esta guía explica cómo hacerlo manualmente.
***
## Paso 1: Instala los paquetes
`gt-next` es la biblioteca que habilita las traducciones en tu aplicación. `gt` es la herramienta de línea de comandos que prepara las traducciones para producción.
```bash
npm i gt-next
npm i -D gt
```
```bash
yarn add gt-next
yarn add --dev gt
```
```bash
bun add gt-next
bun add --dev gt
```
```bash
pnpm add gt-next
pnpm add --save-dev gt
```
***
## Paso 2: Configura la configuración de Next.js
`gt-next` usa un plugin de Next.js llamado **`withGTConfig`** para configurar la internacionalización en la fase de compilación. Envuelve con él tu configuración actual de Next.js:
```ts title="next.config.ts"
import { withGTConfig } from 'gt-next/config';
const nextConfig = {};
export default withGTConfig(nextConfig);
```
Este plugin lee tu configuración de traducción y se encarga de conectarlo todo en segundo plano. No hace falta ningún otro cambio en tu configuración de Next.js.
***
## Paso 3: Crea un archivo de configuración de traducción
Crea un archivo **`gt.config.json`** en la raíz de tu proyecto. Esto le indica a la biblioteca qué idiomas admites:
```json title="gt.config.json"
{
"defaultLocale": "en",
"locales": ["es", "fr", "ja"],
"files": {
"gt": {
"output": "public/_gt/[locale].json"
}
}
}
```
* **`defaultLocale`** — el idioma en el que está escrita tu app (tu idioma de origen).
* **`locales`** — los idiomas a los que quieres traducir. Elige cualquiera de la [lista de configuraciones regionales admitidas](/docs/platform/supported-locales).
* **`files.gt.output`** — dónde el CLI guarda los archivos de traducción. `[locale]` se sustituye por cada código de idioma (por ejemplo, `public/_gt/es.json`).
Agrega `public/_gt/` a tu **`.gitignore`** — estos archivos se generan; no se escriben a mano:
```txt title=".gitignore"
public/_gt/
```
***
## Paso 4: Añade GTProvider a tu layout
El componente **`GTProvider`** le da acceso a las traducciones a toda tu aplicación. Debe envolver la aplicación en el layout raíz:
```tsx title="app/layout.tsx"
import { GTProvider } from 'gt-next';
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
{children}
);
}
```
`GTProvider` es un **componente del servidor**: carga las traducciones en el servidor y se las pasa a tus componentes cliente.
***
## Paso 5: Marca el contenido para traducir
Ahora, envuelve cualquier texto que quieras traducir con el componente **``**. `` significa "traducir":
```tsx title="app/page.tsx"
import { T } from 'gt-next';
export default function Home() {
return (
Welcome to my app
This content will be translated automatically.
);
}
```
Puedes envolver dentro de `` tanto o tan poco JSX como quieras. Todo lo que contiene —texto, elementos anidados e incluso el formato— se traduce como una sola unidad.
***
## Paso 6: Agrega un selector de idioma
Añade un **``** para que los usuarios puedan cambiar de idioma:
```tsx title="app/page.tsx"
import { T, LocaleSelector } from 'gt-next';
export default function Home() {
return (
Bienvenido a mi aplicación
Este contenido se traducirá automáticamente.
);
}
```
`LocaleSelector` renderiza un menú desplegable con los idiomas definidos en tu `gt.config.json`.
***
## Paso 7: Configura las variables de entorno (opcional)
Para ver las traducciones durante el desarrollo, necesitas claves de API de General Translation. Estas habilitan la **traducción bajo demanda**: tu aplicación traduce el contenido en tiempo real mientras desarrollas.
Crea un archivo **`.env.local`**:
```bash title=".env.local"
GT_API_KEY="your-api-key"
GT_PROJECT_ID="your-project-id"
```
Obtén tus claves gratis en [dash.generaltranslation.com](https://dash.generaltranslation.com/signup) o ejecuta:
```bash
npx gt auth
```
Para desarrollo, usa una clave que empiece por `gtx-dev-`. Las claves de producción (`gtx-api-`) son solo para CI/CD.
Nunca expongas `GT_API_KEY` en el navegador ni la subas al control de versiones.
Sí. Sin claves de API, `gt-next` funciona como una biblioteca de i18n estándar. No tendrás traducción bajo demanda en desarrollo, pero aun así puedes:
* Proporcionar tus propios archivos de traducción manualmente
* Usar todos los componentes (``, ``, `LocaleSelector`, etc.)
* Ejecutar `npx gt generate` para crear plantillas de archivos de traducción y luego traducirlas tú mismo
***
## Paso 8: Comprueba cómo funciona
Inicia tu servidor de desarrollo:
```bash
npm run dev
```
```bash
yarn dev
```
```bash
bun dev
```
```bash
pnpm dev
```
Abre [http://localhost:3000](http://localhost:3000) y usa el selector de idioma para cambiar de idioma. Deberías ver el contenido traducido.
En desarrollo, las traducciones se realizan bajo demanda; es posible que veas un breve estado de carga la primera vez que cambies a un idioma nuevo. En producción, las traducciones se generan con antelación y se cargan al instante.
***
## Paso 9: Traduce cadenas (no solo JSX)
Para cadenas simples —como los atributos `placeholder`, los valores de `aria-label` o el texto `alt`— usa el hook **`useGT`**. Funciona tanto en componentes del servidor como del cliente:
```tsx title="app/contact/page.tsx"
import { useGT } from 'gt-next';
export default function ContactPage() {
const gt = useGT();
return (
);
}
```
Si prefieres usar `async/await` en componentes del servidor, importa `getGT` desde `gt-next/server`:
```tsx
import { getGT } from 'gt-next/server';
export default async function Page() {
const gt = await getGT();
return {gt('Hello')}
;
}
```
***
## Paso 10: Implementa en producción
En producción, las traducciones se generan previamente durante la compilación (sin llamadas a la API en tiempo real). Añade el comando `translate` a tu script de compilación:
```json title="package.json"
{
"scripts": {
"build": "npx gt translate && next build"
}
}
```
Configura las variables de entorno de **producción** en tu proveedor de alojamiento (Vercel, Netlify, etc.):
```bash
GT_PROJECT_ID=your-project-id
GT_API_KEY=gtx-api-your-production-key
```
Las claves de producción comienzan con `gtx-api-` (no `gtx-dev-`). Obtén una en [dash.generaltranslation.com](https://dash.generaltranslation.com). No le antepongas nunca `NEXT_PUBLIC_`.
Eso es todo: tu app ya es multilingüe. 🎉
***
## Solución de problemas
`gt-next` almacena la preferencia de idioma del usuario en una cookie llamada `generaltranslation.locale`. Si antes probaste con otro idioma, esta cookie puede anular tu selección. Borra las cookies y vuelve a intentarlo.
* [Chrome](https://support.google.com/chrome/answer/95647)
* [Firefox](https://support.mozilla.org/en-US/kb/delete-cookies-remove-info-websites-stored)
* [Safari](https://support.apple.com/en-mn/guide/safari/sfri11471/16.0/mac/11.0)
Esto es normal. En desarrollo, las traducciones se realizan bajo demanda (tu contenido se traduce en tiempo real a través de la API). Esta demora **no existe en producción**: todas las traducciones se generan de antemano con `npx gt translate`.
Un texto ambiguo puede dar lugar a traducciones imprecisas. Por ejemplo, "apple" podría referirse a la fruta o a la empresa. Agrega una prop `context` para ayudar:
```jsx
Apple
```
Tanto `` como `useGT()` y `getGT()` admiten la opción `context`.
***
## Próximos pasos
**Míralo en acción:** Explora [aplicaciones de ejemplo funcionales](/docs/next/tutorials/examples) para ver patrones de `gt-next` en proyectos reales, o ve directamente al [catálogo de aplicaciones](https://app-catalog.generaltranslation.dev).
* [**Guía del componente ``**](/docs/next/guides/t) — Aprende sobre variables, plurales y patrones avanzados de traducción
* [**Guía de traducción de cadenas**](/docs/next/guides/strings) — Profundiza en `useGT` y `getGT`
* [**Componentes de variable**](/docs/next/guides/variables) — Maneja contenido dinámico con ``, ``, `` y ``
* [**Pluralización**](/docs/next/api/components/plural) — Maneja formas plurales con el componente ``
* [**Traducir metadatos de página**](/docs/next/api/strings/get-gt#metadata) — Traduce títulos, descripciones y etiquetas OG con `getGT`
* [**Despliegue en producción**](/docs/next/tutorials/quickdeploy) — Configuración de CI/CD, almacenamiento en caché y optimización del rendimiento
* [**Cadenas compartidas**](/docs/next/guides/shared-strings) — Traduce texto en arrays, objetos de configuración y datos compartidos con `msg()`