# General Translation Integrations: API de Harvest
URL: https://generaltranslation.com/es/docs/integrations/rrweb/reference/harvest.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Asigna los nodos de texto grabados a los catálogos de configuración regional publicados. Referencia de la API para la recolección de gt-rrweb.

Importa los valores de harvest desde `gt-rrweb/harvest`. La mayoría de las aplicaciones configuran la recolección mediante [`GTRecorder`](/docs/integrations/rrweb/reference/recorder#gt-recorder); la API directa admite flujos de grabación personalizados.

## Descripción general [#overview]

| API                                             | Descripción                                                                                                                           |
| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| [`harvestLocales`](#harvest-locales)            | Genera overlays para las configuraciones regionales de destino solicitadas, excluyendo la configuración regional de origen seleccionada. |
| [`harvestHash`](#harvest-hash)                  | Genera overlays con una configuración regional de origen y un cargador explícitos.                                                          |
| [`flattenEntry`](#flatten-entry)                | Aplana el GTJSON traducido en nodos hoja renderizados.                                                                                |
| [`collectRecordedText`](#recorded-text)         | Recopila los nodos de texto grabados según el id de nodo de rrweb.                                                                    |
| [`recordingHasHashes`](#recording-hashes)       | Comprueba si el flujo contiene translation hashes.                                                                                    |
| [`collectHashNodes`](#hash-nodes)               | Recopila los nodos de traducción hasheados y el texto descendiente.                                                                   |
| [`overlayFromDict`](#overlay-dict)              | Alinea los nodos hasheados con un catálogo de traducción.                                                                                |
| [`stringOverlay`](#string-overlay)              | Empareja las cadenas de origen sin envolver mediante el hash del mensaje.                                                             |
| [`HarvestOptions` y tipos relacionados](#types) | Describen cargadores, overlays, catálogos y valores de GTJSON.                                                                            |

## `harvestLocales` [#harvest-locales]

```ts
function harvestLocales(
  events: eventWithTime[],
  locales: string[],
  options?: HarvestOptions
): Promise<LocaleTextOverlay>;
```

`locales[0]` es la configuración regional de origen alternativa. La función omite la configuración regional de origen seleccionada y carga cada catálogo de destino restante mediante `options.loadTranslations`; sin un cargador, devuelve un overlay vacío. Al recolectar un bundle del grabador, la fuente explícita o derivada de la cookie debe coincidir con `locales[0]`, ya que el grabador incrusta esa primera entrada como fuente de reproducción.

| Option             | Description                                                                                | Type                                       | Optional | Default                                                                        |
| ------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------ | -------- | ------------------------------------------------------------------------------ |
| `loadTranslations` | Carga un catálogo publicado de hash a contenido según la configuración regional.           | `(locale: string) => Promise<unknown>`     | Sí       | —                                                                              |
| `hashMessage`      | Asigna las cadenas de origen simples a los hashes que ya utiliza el catálogo.              | `(message: string) => string \| undefined` | Sí       | —                                                                              |
| `sourceLocale`     | Identifica la configuración regional visible en la grabación.                              | `string`                                   | Sí       | La cookie de configuración regional configurada y, en su defecto, `locales[0]` |
| `localeCookieName` | Indica el nombre de la cookie utilizada para detectar la configuración regional de origen. | `string`                                   | Sí       | —                                                                              |

Las entradas de [`<T>`](/docs/react/reference/components/t) se alinean mediante el attribute `data-_gt-hash` que se emite cuando [`_tagIds`](/docs/react/reference/config#tag-ids) está habilitado. Las entradas sin traducir, las entradas de rama o Plural sin una forma única y las estructuras cuyos conteos de nodos hoja difieren se mantienen en la configuración regional de origen.

El contenido alternativo basado en cookie solo se aplica cuando `localeCookieName` está definido. El package no asume un nombre de cookie específico del framework. Cuando se omiten tanto `sourceLocale` como `localeCookieName`, se utiliza `locales[0]`.

`hashMessage` es un punto de integración avanzado para quien ya dispone de un generador de hashes de mensajes públicos compatible. `gt-rrweb` no exporta ese generador, por lo que una configuración habitual del grabador debería basarse en los hashes de [`<T>`](/docs/react/reference/components/t).

## `harvestHash` [#harvest-hash]

```ts
function harvestHash(
  events: eventWithTime[],
  locales: string[],
  options: {
    source: string;
    loadTranslations: TranslationsLoader;
    hashMessage?: (message: string) => string | undefined;
  }
): Promise<LocaleTextOverlay>;
```

`harvestHash` es la estrategia de hash de bajo nivel que utiliza `harvestLocales`. Requiere una configuración regional de origen explícita y un cargador de catálogo.

## `flattenEntry` [#flatten-entry]

```ts
function flattenEntry(
  entry: GtJsxChildren | null | undefined
): GtLeaf[] | null;
```

`flattenEntry(entry)` devuelve el texto traducido y los nodos hoja de variables en el orden del documento. Las variables y los componentes sin hijos que renderizan valores se convierten en marcadores de posición que conservan el valor grabado; las entradas de tipo plural y rama devuelven `null`, ya que no identifican una única forma renderizada.

## `collectRecordedText` [#recorded-text]

```ts
function collectRecordedText(events: eventWithTime[]): Map<number, string>;
```

`collectRecordedText(events)` devuelve el texto más reciente que no sea solo espacios en blanco para cada ID de nodo de rrweb, obtenido de los snapshots completos y las mutaciones. El texto compuesto únicamente por espacios en blanco se omite, y una mutación posterior con texto no vacío reemplaza el texto anterior del mismo ID.

## `recordingHasHashes` [#recording-hashes]

```ts
function recordingHasHashes(events: eventWithTime[]): boolean;
```

`recordingHasHashes(events)` indica si la grabación incluye hashes de mensajes de GT.

## `collectHashNodes` [#hash-nodes]

```ts
function collectHashNodes(events: eventWithTime[]): Array<{
  hash: string;
  textNodes: Array<{ id: number; text: string }>;
}>;
```

`collectHashNodes(events)` devuelve cada translation hash grabado más externo junto con los ID de sus nodos de texto descendientes y el texto de origen, en el orden del documento. Un hash anidado dentro de otro nodo con hash no se devuelve por separado.

## `overlayFromDict` [#overlay-dict]

```ts
function overlayFromDict(
  hashNodes: ReturnType<typeof collectHashNodes>,
  dict: TranslationDict
): Record<number, string>;
```

`overlayFromDict(hashNodes, dict)` alinea cada nodo de hash con un `TranslationDict`. Omite las traducciones ausentes, los plurales y las ramas, y las discrepancias estructurales, en lugar de asignar el texto a un nodo incorrecto.

## `stringOverlay` [#string-overlay]

```ts
function stringOverlay(
  recorded: Map<number, string>,
  covered: Set<number>,
  dict: TranslationDict,
  hashMessage: (message: string) => string | undefined
): Record<number, string>;
```

`stringOverlay(recorded, covered, dict, hashMessage)` gestiona el texto simple que aún no cubre un nodo [`<T>`](/docs/react/reference/components/t) con hash. Solo aplica las entradas del catálogo cuyo valor sea una cadena y deja en la configuración regional de origen las cadenas renderizadas que estén vacías, sin cambios, ausentes o interpoladas.

## Types [#types]

| Type                 | Definición                                                                                                      |
| -------------------- | --------------------------------------------------------------------------------------------------------------- |
| `HarvestOptions`     | Cargador de catálogo, generador de hashes de mensajes, source locale y nombre de cookie opcionales que acepta `harvestLocales`. |
| `LocaleTextOverlay`  | `Record<string, Record<number, string>>`                                                                        |
| `TranslationsLoader` | `(locale: string) => Promise<unknown>`                                                                          |
| `TranslationDict`    | `Record<string, GtJsxChildren \| null>`                                                                         |
| `GtJsxChildren`      | Un child de GTJSON o un array de children.                                                                      |
| `GtJsxChild`         | `string \| GtElement \| GtVariable`                                                                             |
| `GtLeaf`             | `{ text: string } \| { variable: true }`                                                                        |

Los tipos helper de GTJSON describen la representación compacta del catálogo que consumen las funciones de overlay. Son útiles para implementar herramientas de harvest personalizadas; la configuración normal del grabador no los necesita.

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
