# gt-next: General Translation Next.js SDK: Inicio rápido de Next.js
URL: https://generaltranslation.com/es/docs/next.mdx
---
title: Inicio rápido de Next.js
description: Agrega varios idiomas a tu aplicación de Next.js en menos de 10 minutos
---
Al final de esta guía, tu aplicación de Next.js mostrará contenido en varios idiomas, con un selector de idioma que tus usuarios podrán usar.
**Prerrequisitos:**
* Una aplicación 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). En esta guía se explica la configuración manual.
***
## Paso 1: Instala los paquetes
`gt-next` es la biblioteca que hace funcionar las traducciones en tu aplicación. `gt` es la herramienta CLI 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 tu archivo de configuración de Next.js
`gt-next` usa un plugin de Next.js llamado **`withGTConfig`** para configurar la internacionalización en tiempo de compilación. Úsalo para envolver tu configuración existente 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 lo conecta todo en segundo plano. No necesitas hacer ningún otro cambio en tu configuración de Next.js.
***
## Paso 3: Crea un archivo de configuración para las traducciones
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 aplicación (tu idioma de origen).
* **`locales`** — los idiomas a los que quieres traducir. Elige cualquiera de la [lista de configuraciones regionales compatibles](/docs/platform/supported-locales).
* **`files.gt.output`** — donde la CLI guarda los archivos de traducción. `[locale]` se reemplaza por cada código de idioma (p. ej., `public/_gt/es.json`).
Agrega `public/_gt/` a tu **`.gitignore`** — estos archivos se generan, no se escriben manualmente:
```txt title=".gitignore"
public/_gt/
```
***
## Paso 4: Agrega el GTProvider a tu layout
El componente **`GTProvider`** permite que toda tu aplicación acceda a las traducciones. Debe envolver tu 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 de servidor**: carga las traducciones en el servidor y las transmite a tus componentes de cliente.
***
## Paso 5: Marca el contenido para su traducción
Ahora, envuelve el texto que quieras traducir con el componente **``**. `` significa "translate":
```tsx title="app/page.tsx"
import { T } from 'gt-next';
export default function Home() {
return (
bienvenido a mi aplicación
este contenido se traducir automáticamente
);
}
```
Puedes envolver dentro de `` tanto JSX como quieras, ya sea mucho o poco. Todo lo que contiene —texto, elementos anidados e incluso formato— se traduce como una sola unidad.
***
## Paso 6: Agregar un selector de idioma
Agrega 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 de tu `gt.config.json`.
***
## Paso 7: Configura las variables de entorno (opcional)
Para ver traducciones en desarrollo, necesitas claves API de General Translation. Estas permiten 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 gratuitas en [dash.generaltranslation.com](https://dash.generaltranslation.com/signup) o ejecuta:
```bash
npx gt auth
```
En 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 hagas commit de ella en el control de versiones.
Sí. Sin claves 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 manualmente tus propios archivos de traducción
* 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 que 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 menú desplegable de idioma para cambiar entre idiomas. Deberías ver tu contenido traducido.
En desarrollo, las traducciones se realizan bajo demanda, así que es posible que veas un breve indicador de carga la primera vez que cambies a un idioma nuevo. En producción, las traducciones se generan por adelantado y se cargan al instante.
***
## Paso 9: Traducir 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 de servidor como en componentes de 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 los 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: Desplegar a producción
En producción, las traducciones se generan por adelantado en tiempo de compilación (sin llamadas a la API en tiempo real). Agrega el comando `translate` a tu script de compilación:
```json title="package.json"
{
"scripts": {
"build": "npx gt translate && next build"
}
}
```
Establece las variables de entorno de **producción** en tu proveedor de hosting (Vercel, Netlify, etc.):
```bash
GT_PROJECT_ID=your-project-id
GT_API_KEY=gtx-api-your-production-key
```
Las claves de producción empiezan por `gtx-api-` (no `gtx-dev-`). Obtén una en [dash.generaltranslation.com](https://dash.generaltranslation.com). Nunca la prefijes con `NEXT_PUBLIC_`.
Eso es todo: tu aplicación 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 sobrescribir 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 mediante la API). Esta demora **no existe en producción**: todas las traducciones se generan por adelantado con `npx gt translate`.
El texto ambiguo puede dar lugar a traducciones inexactas. Por ejemplo, "apple" podría referirse a la fruta o a la empresa. Añade una prop `context` para dar más contexto:
```jsx
Apple
```
Tanto `` como `useGT()` y `getGT()` admiten la opción `context`.
***
## Siguientes pasos
* [**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 Variable**](/docs/next/guides/variables) — Maneja contenido dinámico con ``, ``, `` y ``
* [**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()`