Config

withGTConfig

Referencia de API de withGTConfig(), antes initGT()

Descripción general

withGTConfig es la forma principal de configurar la biblioteca gt-next. Envuelve directamente un objeto NextConfig.

next.config.mjs
import { withGTConfig } from 'gt-next/config';

const nextConfig = {
    // tu next.config.js actual
}

export default withGTConfig(nextConfig, {
  // Opciones de configuración adicionales
});

Heredado

initGT es la forma heredada de configurar la biblioteca gt-next. Devuelve una función de devolución de llamada que luego se invoca sobre el objeto NextConfig. Las props de ambas funciones son las mismas, con la excepción de que withGTProps requiere que también se pase NextConfig.

Usa withGTConfig para:

  • Configurar los idiomas admitidos y la locale predeterminada (también llamada idioma de respaldo).
  • Establecer las API Keys y los IDs de proyecto para acceder a los servicios de GT.
  • Definir el comportamiento de carga.
  • Configurar los ajustes de timeout.
  • Configurar endpoints personalizados.
  • Personalizar el comportamiento de traducción, la caché y la agrupación de solicitudes.
  • Configurar la validación en tiempo de compilación mediante el plugin de SWC.

Debes usar withGTConfig en tu archivo next.config.js para habilitar la funcionalidad de traducción.

Referencia

De forma predeterminada, withGTConfig buscará un archivo gt.config.json en el mismo directorio que tu archivo next.config.js.

Este archivo JSON se cargará y se combinará con la configuración pasada a withGTConfig.

Consulta la referencia de gt.config.json para obtener más información sobre el archivo de configuración.

La herramienta de la CLI solo leerá la configuración del archivo gt.config.json, por lo que recomendamos usar gt.config.json como fuente de la verdad para tu aplicación.

Las opciones de configuración adicionales que no estén en gt.config.json se pueden pasar a withGTConfig directamente como props.

Props requeridas

Prop

Type

Props recomendadas

Prop

Type

PropDescription
defaultLocaleLocale predeterminado de la aplicación. El inglés será el contenido de respaldo predeterminado cuando no se especifique ninguno.
localesLista exclusiva de locales admitidos por la aplicación. Si se recibe una solicitud no admitida, se redirigirá al siguiente idioma preferido del navegador en la lista. Si no hay coincidencias, se usará el contenido de respaldo predeterminado defaultLocale.
descriptionDescripción en lenguaje natural del sitio, usada para facilitar la traducción.

Props avanzadas

Prop

Type

PropDescription
projectIdID del proyecto, que puede incluirse aquí o como variable de entorno.
apiKeyAunque no se recomienda, una clave de API que puede incluirse aquí. También puede incluirse como variable de entorno.
devApiKeyAunque no se recomienda, una clave de API de desarrollo que puede incluirse aquí. También puede incluirse como variable de entorno.
preferredModelProviderTu proveedor de modelos de IA preferido. Actualmente solo Anthropic u OpenAI están habilitados. Déjalo en blanco y determinaremos el mejor proveedor para cada traducción de forma individual. En periodos de alta demanda o cuando un proveedor esté deshabilitado, no podemos garantizar que se use tu proveedor preferido.
runtimeUrlURL base para la API de GT. Para desactivar la traducción automática, configúralo como una cadena vacía.
cacheUrlURL donde se almacenan las traducciones en caché. Puede personalizarse para apuntar a un servidor de caché propio.
cacheExpiryTimeTiempo en milisegundos antes de que caduquen las traducciones almacenadas en caché local.
renderSettingsObjeto que especifica el comportamiento de carga para las traducciones en tiempo de ejecución.
maxConcurrentRequestsNúmero máximo de solicitudes de traducción concurrentes permitidas a la API de GT.
maxBatchSizeNúmero máximo de traducciones que se agrupan antes de enviar una solicitud.
batchIntervalIntervalo en milisegundos entre solicitudes de traducción agrupadas. Ayuda a controlar la cadencia a la que se envían las solicitudes.
dictionaryRuta de configuración opcional para el diccionario. Similar a i18n, acepta una cadena para especificar una ruta personalizada. Los diccionarios llamados dictionary.js (o .jsx, .ts, .tsx, etc.) y ubicados en la raíz o en la carpeta src son compatibles de forma predeterminada.
dynamicJsxCheckLogLevelControla la validación del contenido dinámico no envuelto en componentes de traducción. Establécelo en "error" para fallar las compilaciones, "warn" para mostrar advertencias o "off" para desactivar la comprobación.
dynamicStringCheckLogLevelControla la validación de los argumentos de la función de traducción para garantizar que se usen literales de cadena. Establécelo en "error" para fallar las compilaciones, "warn" para mostrar advertencias o "off" para desactivar la comprobación.

Devuelve

Una función (NextConfig) => NextConfig que amplía el objeto de configuración de Next.js con la configuración de GT especificada.

Excepciones

Lanza un Error si falta el projectId y se usan URL predeterminadas, o si se requiere la clave de API y esta falta.


Configuración de renderizado

La configuración de renderizado controla el comportamiento de las traducciones mientras se cargan. Esto solo se aplica a las traducciones que se realizan en tiempo de ejecución. Si la traducción está en caché, el tiempo de respuesta es tan bajo que no justifica un estado de carga.

Prop

Type

PropDescription
methodEl método usado para renderizar la página. Las opciones son skeleton, replace y default.
timeoutEl tiempo, en milisegundos, antes de que el método exceda el tiempo de espera. El valor predeterminado es 8000 ms.

Métodos de renderizado

  • skeleton: Renderiza un fragmento.
  • replace: Renderiza el contenido en el idioma predeterminado mientras se espera.
  • default: Para locales con el mismo idioma (p. ej., en-US y en-GB), se comporta como replace. Para locales con idiomas distintos (p. ej., en-US y fr), se comporta como skeleton.

Timeout

Los timeouts solo se aplican a las traducciones en tiempo de ejecución, es decir, a las traducciones que deben realizarse bajo demanda porque no han sido almacenadas en caché.

Los timeouts se establecen en 8 segundos de forma predeterminada. Esta decisión de diseño busca facilitar a los usuarios de Vercel, que tienen un timeout predeterminado de 10 segundos para las funciones serverless en el plan gratuito.


Ejemplos

Configuración de renderizado

Este ejemplo configura gt-next para mostrar un skeleton mientras se cargan las traducciones. Si la carga de traducciones tarda más de 8 segundos, el método superará el tiempo de espera y mostrará el contenido en el idioma predeterminado.

gt.config.json
{
  "defaultLocale": "en-US",
  "locales": ["en-US", "es", "fr"],
}
next.config.mjs
import { withGTConfig } from 'gt-next/config';

const nextConfig = {
  // Otras configuraciones de Next.js
};

export default withGTConfig(nextConfig, {
  renderSettings: {
    method: 'skeleton',
    timeout: 10000,
  },
});

Validación en tiempo de compilación

Este ejemplo configura el complemento de SWC para tratar las infracciones de contenido dinámico como errores de compilación en lugar de advertencias.

next.config.mjs
import { withGTConfig } from 'gt-next/config';

const nextConfig = {
  // Otras configuraciones de Next.js
};

export default withGTConfig(nextConfig, {
  // Fallar la compilación ante infracciones de JSX dinámico
  dynamicJsxCheckLogLevel: 'error',
  // Advertir sobre infracciones de cadenas dinámicas
  dynamicStringCheckLogLevel: 'warn',
});

Notas

  • withGTConfig integra la funcionalidad de traducción de GT en tu app de Next.js y debe usarse en el archivo de configuración raíz.
  • Parámetros como apiKey y projectId pueden configurarse directamente en la configuración o definirse como variables de entorno.
  • Parámetros avanzados como renderSettings y _batchInterval permiten un control granular del comportamiento y el rendimiento de la traducción.

Próximos pasos

¿Qué te ha parecido esta guía?

withGTConfig