Config

withGTConfig

Referencia de API de withGTConfig(), anteriormente 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
});

Obsoleto

initGT es la forma obsoleta de configurar la biblioteca gt-next. Devuelve una función de callback 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 el locale predeterminado (también llamado idioma de contenido de respaldo predeterminado).
  • Establecer claves de API y 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, el almacenamiento en caché y el envío por lotes de solicitudes.
  • Configurar la validación en tiempo de compilación mediante el plugin de SWC.

withGTConfig debe usarse 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 CLI solo leerá la configuración del archivo gt.config.json, por lo que recomendamos usar el archivo gt.config.json como fuente de verdad para tu aplicación.

Puedes pasar directamente a withGTConfig, como props, opciones de configuración adicionales que no estén en el archivo gt.config.json.

Props requeridas

Prop

Type

Props recomendadas

Prop

Type

PropDescripción
defaultLocalelocale predeterminado de la aplicación. El inglés será el idioma de 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 ayudar en la traducción.

Props avanzadas

Prop

Type

PropDescription
projectIdID del proyecto, que se puede incluir aquí o como variable de entorno.
apiKeyAunque no se recomienda, una clave de API que se puede incluir aquí. También se puede incluir como variable de entorno.
devApiKeyAunque no se recomienda, una clave de API de desarrollo que se puede incluir aquí. También se puede incluir como variable de entorno.
preferredModelProviderTu proveedor de modelos de IA preferido. Actualmente solo están habilitados Anthropic u OpenAI. Déjalo en blanco y determinaremos el mejor proveedor caso por caso (traducción por traducción). 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é. Se puede personalizar 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 simultáneas 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 frecuencia 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 sin envolver en los componentes de traducción. Establécelo en "error" para hacer fallar las compilaciones, en "warn" para mostrar advertencias o en "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 hacer fallar las compilaciones, en "warn" para mostrar advertencias o en "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 las 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 aplica a las traducciones que ocurren en tiempo de ejecución. Si la traducción está en caché, el tiempo de respuesta es demasiado corto para justificar un comportamiento de carga.

Prop

Type

PropDescripción
methodEl método utilizado para renderizar la página. Las options 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 contenido en el idioma predeterminado mientras espera.
  • default: Para locales con el mismo idioma (p. ej., en-US y en-GB), se comporta como replace. Para locales con idiomas diferentes (p. ej., en-US y fr), se comporta como skeleton.

Timeout

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

Los timeouts están configurados 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 esqueleto mientras se cargan las traducciones. Si la carga de traducciones tarda más de 8 segundos, el método excederá 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 dinámicas de JSX
  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 definirse directamente en la configuración o 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 parece esta guía?