# 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()`