Config

withGTConfig()

Referencia de API para 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 = {
    // your existing next.config.js
}

export default withGTConfig(nextConfig, {
  // Additional configuration options
});

Obsoleto

initGT() es la forma antigua de configurar la biblioteca gt-next. Devuelve una función de callback que luego se llama sobre el objeto NextConfig. Las props para ambas funciones son las mismas, con la excepción de que withGTProps requiere que también se pase NextConfig.

Utiliza withGTConfig() para:

  • Configurar los idiomas soportados y el locale predeterminado (también conocido como idioma de respaldo).
  • Establecer claves API e IDs de proyecto para acceder a los servicios de GT.
  • Definir el comportamiento de carga.
  • Configurar los ajustes de tiempo de espera.
  • Configurar endpoints personalizados.
  • Personalizar el comportamiento de traducción, el almacenamiento en caché y el agrupamiento de solicitudes.

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

Referencia

Por defecto, withGTConfig() buscará un archivo gt.config.json en el mismo directorio que tu archivo next.config.js.

Este archivo json se cargará y se fusionará 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 desde el archivo gt.config.json, por lo que recomendamos usar el archivo gt.config.json como fuente de verdad para tu aplicación.

Las opciones de configuración adicionales que no estén en el archivo gt.config.json pueden pasarse directamente a withGTConfig() como props.

Props requeridas

PropTypeDefault
nextConfig?
NextConfig
-

Props recomendadas

PropTypeDefault
description??
string
undefined
locales??
string[]
undefined
defaultLocale??
string
locales[0] || 'en'
PropDescripción
defaultLocaleLocalización predeterminada para la aplicación. El inglés será el idioma de respaldo cuando no se especifique ninguno.
localesUna lista exclusiva de localizaciones soportadas para la aplicación. Si se recibe una solicitud no soportada, se redirigirá al siguiente idioma preferido del navegador en la lista. Se usará defaultLocale como respaldo si no se encuentra ninguna coincidencia.
descriptionUna descripción en lenguaje natural del sitio, utilizada para ayudar en la traducción.

Props avanzadas

PropTypeDefault
dictionary??
string
-
i18n??
string
-
maxBatchSize??
number
25
batchInterval??
number
50
maxConcurrentRequests??
number
100
renderSettings??
RenderSettings
-
cacheExpiryTime??
number
60000
cacheUrl??
string
-
runtimeUrl??
string
-
preferredModelProvider??
"anthropic" | "openai"
-
devApiKey??
string
-
apiKey??
string
-
projectId??
string
-
PropDescripción
projectIdID del proyecto, que puede incluirse aquí o como una variable de entorno.
apiKeyAunque no se recomienda, una clave API que puede incluirse aquí. También puede incluirse como una variable de entorno.
devApiKeyAunque no se recomienda, una clave API de desarrollo que puede incluirse aquí. También puede incluirse como una variable de entorno.
preferredModelProviderTu proveedor de modelo de IA preferido. Actualmente solo están habilitados Anthropic o OpenAI. Déjalo en blanco y determinaremos el mejor proveedor para cada traducción. En periodos de alta demanda o cuando un proveedor esté deshabilitado, no podemos garantizar que se utilice tu proveedor preferido.
runtimeUrlURL base para la API de GT. Para desactivar la traducción automática, establece esto como una cadena vacía.
cacheUrlURL donde se almacenan las traducciones en caché. Puede personalizarse para apuntar a un servidor de caché personalizado.
cacheExpiryTimeTiempo en milisegundos antes de que caduquen las traducciones almacenadas localmente en caché.
renderSettingsUn objeto 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 para agrupar antes de enviar una solicitud.
batchIntervalIntervalo en milisegundos entre solicitudes de traducción agrupadas. Ayuda a controlar la velocidad a la que se envían las solicitudes.
i18nRuta de configuración opcional para funciones personalizadas getLocale(). Si se proporciona como una cadena, se resolverá como una ruta. De lo contrario, se usan los valores predeterminados (recomendado).
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 por defecto.

Retorna

Una función (NextConfig) => NextConfig que mejora el objeto de configuración de Next.js con los ajustes de GT especificados.

Excepciones

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


Configuración de renderizado

La configuración de renderizado controla el comportamiento de las traducciones mientras se están cargando. Esto solo aplica a las traducciones que se realizan en tiempo de ejecución. Si la traducción está en caché, el tiempo de respuesta es demasiado bajo como para justificar un comportamiento de carga.

PropTypeDefault
timout?
number
8000
method?
"skeleton" | "replace" | "default"
default
PropDescripción
methodEl método utilizado para renderizar la página. Las opciones son skeleton, replace y default.
timeoutEl tiempo en milisegundos antes de que el método agote 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 espera.
  • default: Para configuraciones regionales con el mismo idioma (por ejemplo, en-US y en-GB) se comporta como replace. Para configuraciones regionales con diferentes idiomas (por ejemplo, en-US y fr), se comporta como skeleton.

Tiempo de espera

Los tiempos de espera solo aplican a traducciones en tiempo de ejecución, o traducciones que deben realizarse bajo demanda porque no han sido almacenadas en caché.

Por defecto, los tiempos de espera se establecen en 8 segundos. Esta decisión de diseño es para facilitar a los usuarios de vercel, quienes tienen un tiempo de espera predeterminado de 10 segundos para 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 traducción tarda más de 8 segundos, el método agotará 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 = {
  // Your other next.js configurations
};

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

Configuración de getLocale()

i18n es una cadena que especifica una ruta personalizada a un archivo que define una función getLocale(). Puedes especificar un comportamiento personalizado para determinar la configuración regional del usuario creando un archivo que exporte una función llamada getLocale().

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

const nextConfig = {};

export default withGTConfig(nextConfig, {
  defaultLocale: "en-US", // the default language of your app, usually "en" or "en-US"
  i18n: "./i18n.js"
});
myapp/i18n.js
import { cookies } from "next/headers";

export async function getLocale() {
  const cookieStore = await cookies();
  return cookieStore.get('myCustomLocaleCookie') || 'en';
}

Notas

  • withGTConfig() integra la funcionalidad de traducción de GT en tu aplicación Next.js y debe usarse en el archivo de configuración raíz.
  • Parámetros como apiKey y projectId pueden establecerse directamente en la configuración o como variables de entorno.
  • Parámetros avanzados como renderSettings y _batchInterval permiten un control detallado sobre el comportamiento y el rendimiento de la traducción.

Próximos pasos

¿Qué te parece esta guía?