---
title: "Trabajar sin traducción automática"
description: "Desactiva por política la traducción automática de verbatra: ninguna cadena llega a un servicio de traducción y cada texto viene de una persona."
type: "how-to"
---
# Trabajar sin traducción automática

Desactiva por política la traducción automática de verbatra: ninguna cadena llega a un servicio de traducción y cada texto viene de una persona.

<AvailableFrom version="0.12.0" />

Usa esto cuando un NDA, un contrato con un cliente o una norma de la empresa prohíbe enviar cadenas a cualquier servicio de IA o de traducción. Con el proveedor en `none`, cada comando que podría gastar o enviar algo trabaja solo con datos locales o se niega. Todo lo que no necesita proveedor (el diff, el archivo de bloqueo, la memoria de traducción, la exportación y la importación, las comprobaciones, los tipos, la pseudolocalización, la extracción) funciona igual que antes.

Necesitas un proyecto verbatra, o una carpeta en la que vayas a ejecutar `verbatra init`.

## Configúralo [#configúralo]

```bash
verbatra init --provider none
```

Eso escribe una configuración cuyo bloque de proveedor es solo esto, y ningún `.env.example`, porque nunca se lee una clave de API:

```ts title="verbatra.config.ts"
provider: { id: "none" }
```

En un proyecto existente, sustituye el bloque `provider` por `{ id: "none" }`. [`verbatra doctor`](https://verbatra.kreitz-webdev.de/es/docs/cli/doctor.md) informa entonces de "machine translation disabled by policy" y pasa sus comprobaciones de proveedor y de clave de API sin buscar ninguna clave.

## Qué hace cada comando [#qué-hace-cada-comando]

| Comando | Con `provider: { id: "none" }` |
| --- | --- |
| `translate`, `watch` | rellenan una clave solo con un acierto exacto de la [memoria de traducción](https://verbatra.kreitz-webdev.de/es/docs/the-cache.md), nunca uno aproximado; cualquier otra clave que falte o haya cambiado se lista como `unfilled`, no se toca y se vuelve a ofrecer en la siguiente ejecución. `translate` sale con `3` mientras quede alguna clave |
| `export`, `import`, `tmx` | sin cambios: la entrega y la memoria de traducción son la vía por la que entran las traducciones humanas |
| `check`, `diff`, `doctor`, `pseudo`, `types`, `extract` | sin cambios; ninguno llama a un proveedor |
| `studio`, `mcp` | las lecturas y ediciones locales funcionan; las acciones que gastan con el proveedor nunca se ofrecen, ni siquiera con `--allow-spend` |
| [`retranslateEntry`](https://verbatra.kreitz-webdev.de/es/docs/sdk/review.md#retranslateentry) del SDK | falla con [`MACHINE_TRANSLATION_DISABLED`](https://verbatra.kreitz-webdev.de/es/docs/error-codes.md#machine_translation_disabled) antes de leer o bloquear nada |

En ninguna de estas rutas se construye un proveedor, contenga lo que contenga el entorno, y no se hace ninguna petición de red.

## Cambiar desde un proveedor automático [#cambiar-desde-un-proveedor-automático]

La memoria de traducción guarda el trabajo solo humano en un compartimento propio, separado de todo lo que produjo un proveedor automático, así que pasar a `none` empieza con una memoria vacía. Cambiar `tone` o el glosario nunca toca ese compartimento.

Si quieres llevarte traducciones anteriores, muévelas de forma explícita, sabiendo que importas salida automática a una memoria que por lo demás es solo humana. Exporta antes de cambiar: justo después del cambio, `tmx export` escribe el compartimento solo humano, que todavía está vacío.

```bash
# 1. Still on the old provider: export its memory
verbatra tmx export

# 2. Switch the config to provider: { id: "none" }

# 3. Import it into the human-only bucket
verbatra tmx import verbatra-memory.tmx
```

Consulta [`verbatra tmx`](https://verbatra.kreitz-webdev.de/es/docs/cli/tmx.md) para el nombre del archivo y las opciones.

## El ciclo del día a día [#el-ciclo-del-día-a-día]

```bash
# 1. After source strings change, see what needs a human
verbatra translate          # exits 3 and lists the unfilled keys

# 2. Hand them to your translators
verbatra export

# 3. Bring the filled workbook back
verbatra import verbatra-translations.xlsx

# 4. Gate CI on it
verbatra check
```

El paso 1 es opcional, porque `verbatra diff` y `verbatra check` muestran las mismas claves pendientes. Aun así merece la pena: rellena cada clave que la memoria de traducción ya cubre, así tus traductores solo ven lo que es realmente nuevo. Para la entrega en sí, consulta [Entregar con Excel o CSV](https://verbatra.kreitz-webdev.de/es/docs/manual-translation.md) o [Entregar a una agencia](https://verbatra.kreitz-webdev.de/es/docs/translation-agency.md).

## En CI [#en-ci]

`translate` sale con `3` cuando hay claves esperando a una persona ([códigos de salida](https://verbatra.kreitz-webdev.de/es/docs/cli/output.md#códigos-de-salida)), así que un pipeline puede hacer fallar la compilación, abrir una solicitud de traducción o solo informar. La [GitHub Action](https://verbatra.kreitz-webdev.de/es/docs/github-action.md#modo-solo-humano) da el paso por bueno con la salida `3` y pone su salida `needs-human` a `"true"` para que un paso posterior actúe.

## Relacionado [#relacionado]

- [Códigos de salida](https://verbatra.kreitz-webdev.de/es/docs/cli/output.md#códigos-de-salida): el contrato completo de códigos de salida.
- [La caché de traducción](https://verbatra.kreitz-webdev.de/es/docs/the-cache.md): la memoria con la que rellena `translate`.
- [Proveedores](https://verbatra.kreitz-webdev.de/es/docs/providers.md): `none` junto a los proveedores de traducción.
- [Tratamiento de datos y privacidad](https://verbatra.kreitz-webdev.de/es/docs/data-handling.md): qué sale de la máquina con cada proveedor.
