<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
Prop | Type | Default |
---|---|---|
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
Prop | Descripción |
---|---|
children | Cualquier 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.
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()
.
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.
{
"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>
.
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.
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"
).
<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
- Aprende más sobre el componente
<T>
para traducir texto y componentes. - Consulta los componentes y funciones de traducción:
<T>
,useGT()
, ouseTranslations()
.
¿Qué te parece esta guía?