# General Translation React SDKs (gt-react, gt-next): Configuración de General Translation URL: https://generaltranslation.com/es/docs/react/guides/configuring.mdx --- title: Configuración de General Translation description: "Cómo configurar General Translation en React: esta guía abarca la inicialización, el proveedor, las credenciales y la entrega de traducciones en React, Next.js, TanStack Start y React Native." related: links: - /docs/react/guides/translating-jsx - /docs/react/guides/translating-strings - /docs/react/guides/managing-locales - /docs/react/guides/storing-translations --- React con renderizado en el servidor y cada integración con frameworks necesitan configuración, además de un `GTProvider` que ponga las traducciones a disposición de tus componentes. Las SPA de React se inicializan directamente con `initializeGTSPA`; sigue la [SPA Quickstart de React](/docs/react/react-spa-quickstart) para esa configuración. *Nota: `gt-react`, `gt-tanstack-start` y `gt-react-native` no leen `gt.config.json` automáticamente; impórtalo y pasa sus campos a la llamada de inicialización. En Next.js, el plugin `withGTConfig` lee `gt.config.json` por ti.* ## Inicializa la biblioteca [#initialize] Configura General Translation una sola vez, antes del primer renderizado. Llama a [`initializeGT`](/docs/react/reference/config#initialize) una vez en un módulo que se cargue tanto en el servidor como en el cliente. Tu framework determina la configuración regional de la solicitud y proporciona las traducciones correspondientes durante el renderizado en el servidor. ```tsx title="src/routes/root.tsx" import { initializeGT } from 'gt-react'; import gtConfig from '../../gt.config.json'; const loadTranslations = (locale: string) => import(`../_gt/${locale}.json`).then((m) => m.default); initializeGT({ ...gtConfig, loadTranslations }); ``` Los callbacks [`loadTranslations`](/docs/react/reference/functions/load-translations) y [`loadDictionary`](/docs/react/reference/functions/load-dictionary), las credenciales y la configuración regional van en la llamada de inicialización, no en `GTProvider`. Next.js no requiere una llamada de inicialización manual. Agrega el plugin `withGTConfig` a `next.config.ts`; lee `gt.config.json` y conecta la traducción en tiempo de compilación y de solicitud. ```ts title="next.config.ts" import { withGTConfig } from 'gt-next/config'; const nextConfig = {}; export default withGTConfig(nextConfig, { // opciones como `dictionary`, `loadTranslationsPath` y anulaciones de configuración regional }); ``` Llama a `initializeGT` una vez durante el arranque del servidor y del cliente, expandiendo tu configuración. ```tsx import { initializeGT } from 'gt-tanstack-start'; import gtConfig from '../gt.config.json'; const loadTranslations = (locale: string) => import(`./_gt/${locale}.json`).then((m) => m.default); initializeGT({ ...gtConfig, loadTranslations }); ``` Usa `parseLocale` de `gt-tanstack-start` en una función del servidor para determinar la configuración regional de la solicitud a partir de las cookies y la cabecera `accept-language`. Llama a `initializeGT` una vez al iniciar la aplicación, expandiendo tu configuración. ```tsx import { initializeGT } from 'gt-react-native'; import gtConfig from '../gt.config.json'; const loadTranslations = (locale: string) => import(`./_gt/${locale}.json`).then((m) => m.default); initializeGT({ ...gtConfig, loadTranslations }); ``` ## Agrega el proveedor [#provider] Envuelve tu app en `GTProvider` para que los componentes puedan leer las traducciones. Carga en el servidor las traducciones de la configuración regional activa y luego pasa ambos valores al proveedor. La API exacta del loader depende de tu framework. ```tsx title="src/routes/root.tsx" import { GTProvider, getTranslationsSnapshot, parseLocale } from 'gt-react'; export async function loadRoot(request: Request) { const locale = parseLocale(request); return { locale, translations: await getTranslationsSnapshot(locale), }; } export function Root({ locale, translations, children }) { return ( {children} ); } ``` El proveedor también acepta `region` y `enableI18n` (el valor predeterminado es `true`). Cuando `enableI18n` es `false` o la configuración regional activa coincide con la configuración regional predeterminada, el contenido se renderiza en el idioma de origen. Envuelve tu layout raíz con [``](/docs/react/reference/components/gt-provider). Lee la configuración regional de la solicitud y las traducciones desde el plugin, así que no necesita las props `locale` ni `translations`. ```tsx title="app/layout.tsx" import { GTProvider, useLocale } from 'gt-next'; export default function RootLayout({ children }: { children: React.ReactNode }) { const locale = useLocale(); return ( {children} ); } ``` Pasa la `locale` activa y sus `translations`. Ambas son obligatorias. ```tsx import { GTProvider, getTranslationsSnapshot } from 'gt-tanstack-start'; const translations = await getTranslationsSnapshot(locale); ; ``` Envuelve tu app en ``. Carga por sí solo las traducciones de la configuración regional activa, así que `translations` no es obligatoria; `locale` es opcional y, de forma predeterminada, usa la configuración regional del dispositivo. ```tsx import { GTProvider } from 'gt-react-native'; ; ``` **Cambió en v11 (React):** el proveedor de `gt-react` ya no recibe `config`, `loadTranslations` ni credenciales como props. Esa configuración ahora se define en la llamada de inicialización; el proveedor solo recibe la `locale` y las `translations` ya resueltas. Consulta la [referencia de Configuración](/docs/react/reference/config) para ver todas las opciones del proveedor y de inicialización. ## Agregar credenciales [#credentials] La entrega de traducciones y las funciones de desarrollo usan un ID del proyecto y una clave de API, configurados mediante variables de entorno. Expón el ID del proyecto y la clave de API de desarrollo siguiendo la convención de variables de entorno del cliente de tu framework, y luego pásalos a `initializeGT`. Nunca expongas una clave de API de producción. Configúralos en tu entorno; el plugin los lee automáticamente. `GT_API_KEY` (la clave de producción) se usa en el servidor y la CLI en CI. Usa el prefijo `NEXT_PUBLIC_` solo para los valores que deban llegar al navegador. ```bash title=".env.local" GT_PROJECT_ID="..." GT_DEV_API_KEY="gtx-dev-..." ``` Configúralos mediante las variables de entorno públicas de tu empaquetador y pásalos a la llamada de inicialización. ```bash title=".env (Vite)" VITE_GT_PROJECT_ID="..." VITE_GT_DEV_API_KEY="gtx-dev-..." ``` Configúralos mediante las variables de entorno públicas de tu empaquetador y pásalos a la llamada de inicialización. ```bash title=".env (Expo)" EXPO_PUBLIC_GT_PROJECT_ID="..." EXPO_PUBLIC_GT_DEV_API_KEY="gtx-dev-..." ``` *Nota: Expón al cliente únicamente una clave de API de desarrollo. Las claves de API de producción las usa la CLI en CI; nunca se envían al cliente.* ## Elige cómo se entregan las traducciones [#delivery] General Translation resuelve las traducciones en uno de estos modos, según tu configuración. Esto funciona igual en todos los frameworks: * **Archivos locales:** proporciona `loadTranslations` para importar archivos JSON incluidos en el bundle. Consulta [Almacenar traducciones localmente](/docs/react/guides/storing-translations). * **CDN de General Translation:** proporciona un `projectId` (sin un loader personalizado) para cargar traducciones desde la CDN de GT en runtime. * **Endpoint personalizado:** configura un `cacheUrl` personalizado para cargar desde tu propio servidor. Durante el desarrollo, proporcionar un `projectId` y una clave de API de desarrollo habilita la traducción on-demand y el hot reload, para que las nuevas cadenas se traduzcan mientras trabajas. En producción, las traducciones provienen de tus archivos pre-generados o de la CDN. ## Next steps - /docs/react/guides/translating-jsx - /docs/react/guides/translating-strings - /docs/react/guides/managing-locales - /docs/react/guides/storing-translations