Components

<GTProvider>

Referencia de API para el componente <GTProvider>

Descripción general

El componente <GTProvider> proporciona el contexto de Traducción General (GT) a sus elementos hijos, permitiéndoles acceder a contenido traducido. Es necesario para cualquier traducción del lado del cliente en tu aplicación.

Cuándo usarlo

  • Envuelve toda tu aplicación en <GTProvider> para habilitar las traducciones en el cliente.
  • Al trabajar con diccionarios, puedes especificar opcionalmente un id para limitar los datos del diccionario enviados al cliente, optimizando el rendimiento para diccionarios grandes.
  • El componente <GTProvider> se utiliza tanto para uso en línea con <T> como para diccionarios.

Referencia

Props

PropTypeDefault
metadata??
object
-
devApiKey??
string
-
_versionId??
string
-
renderSettings??
RenderSettings
defaultRenderSettings
runtimeUrl??
string
'https://runtime.gtx.dev'
cacheUrl??
string
'https://cdn.gtx.dev'
locale??
string
-
defaultLocale??
string
libraryDefaultLocale
locales??
string[]
-
dictionary??
Dictionary
defaultDictionary
id??
string
undefined
projectId?
string
-
children?
ReactNode
-

Descripción

PropDescripción
childrenCualquier componente o los padres de cualquier componente que necesite traducir o acceder a información de traducción en el lado del cliente. Estos deberían incluir cualquier componente que use <T>, useGT, u otras utilidades de traducción.
projectId?El ID del proyecto requerido para los servicios en la nube de General Translation.
id?El ID de un diccionario anidado para limitar los datos enviados al cliente. Esto es útil para proyectos grandes con diccionarios extensos.
dictionary?El diccionario de traducción para el proyecto.
locales?La lista de locales aprobados para el proyecto.
defaultLocale?El locale predeterminado a usar si no se encuentra ningún otro locale.
locale?El locale actual, si ya está establecido.
cacheUrl?La URL del servicio de caché para obtener traducciones.
runtimeUrl?La URL del servicio de tiempo de ejecución para obtener traducciones.
renderSettings?La configuración para renderizar traducciones.
_versionId?El ID de versión para obtener traducciones.
devApiKey?La clave API para entornos de desarrollo.
metadata?Metadatos adicionales para pasar al contexto.

Devuelve

React.JSX.Element|undefined que contiene los hijos que se pasaron a este componente.

Ejemplos

Uso básico

Envuelve tu aplicación en <GTProvider> para agregar traducción a tu app. No olvides agregar una lista de locales soportados para habilitar la traducción.

index.js
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import "./index.css";
import App from "./App.tsx";
import { GTProvider } from "gt-react";

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <GTProvider locales={['es', 'fr']}> // Enable Spanish and French // [!code highlight]
      <App />
    </GTProvider> // [!code highlight]
  </StrictMode>
);

Diccionarios

También puedes pasar un diccionario al componente <GTProvider> y luego acceder a él con el hook useTranslations().

index.js
import dictionary from "./dictionary.js";

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <GTProvider locales={['es', 'fr']} dictionary={dictionary}> // [!code highlight]
      <App />
    </GTProvider>
  </StrictMode>
);

Para más información sobre el uso de diccionarios, consulta esta guía.

Agregando configuración

Si no te gusta pasar props directamente al componente <GTProvider>, puedes crear un archivo de configuración y pasarlo al componente. También se integra directamente con el comando gtx-cli translate, por lo que no tienes que especificar cosas como locales manualmente como parámetro.

gt.config.json
{
  "projectId": "your-project-id",
  "locales": ["es", "fr"],
  "defaultLocale": "en-US",
  "_versionId": "translation-version-id" // allows for rolling back to previous translations (autogenerated by the CLI)
}

Todo lo que tienes que hacer es pasar esto al componente <GTProvider>.

index.js
import config from "../gt.config.json";

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <GTProvider {...config}> // [!code highlight]
      <App />
    </GTProvider>
  </StrictMode>
);

Cargador de traducción personalizado

Puedes usar la prop loadTranslations para cargar traducciones desde una fuente personalizada. Esto es útil cuando necesitas cargar traducciones desde una fuente diferente, como una API personalizada.

index.js
import loadTranslations from "./loadTranslations";

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <GTProvider locales={['es', 'fr']} loadTranslations={loadTranslations}> // [!code highlight]
      <App />
    </GTProvider>
  </StrictMode>
);

Configuración de renderizado

La configuración de renderizado controla el comportamiento de carga para las traducciones. Hay dos campos: timeout y method.

  • timeout es el número de milisegundos a esperar para que una traducción se cargue antes de mostrar un fallback (por defecto: 8000ms).
  • method es el método a usar para cargar traducciones ("skeleton", "replace", o "default").
index.js
<GTProvider renderSettings={{ method: "skeleton", timeout: 1000 }}>
  <App />
</GTProvider>

Cada configuración de renderizado dicta un comportamiento de carga diferente: "skeleton" retornará null hasta que las traducciones se carguen. "replace" retornará el contenido de fallback hasta que las traducciones se carguen. "default" retornará null hasta que las traducciones se carguen, a menos que el locale de fallback tenga el mismo idioma que el locale actual (es decir, en-US y en-GB). En este caso, retornará el contenido de fallback inmediatamente hasta que las traducciones se carguen.


Notas

  • El <GTProvider> debe envolver todos los componentes <T> y otras funciones relacionadas con la traducción. Aprende más aquí.

Próximos pasos

¿Qué te parece esta guía?