Solución de problemas

Síntomas, causas y soluciones para los errores que verbatra levanta de verdad.

Página traducida automáticamente

Esta página fue traducida automáticamente, así que puede contener errores o sonar un poco raro. La versión en inglés es la fuente de la verdad. Lee el original en inglés.

Cada entrada de abajo corresponde a un código o mensaje de error real. Los fallos de toda la ejecución llevan un código estable (SdkError); bifurca o busca por el código, no por el texto del mensaje. Para saber cómo los fallos se asignan a códigos de salida de la CLI, consulta CI y códigos de salida; para la tabla completa de códigos, consulta la Referencia del SDK.

La configuración es inválida (CONFIG_INVALID)

Síntoma: The verbatra configuration is invalid: ..., listando un problema por campo.

Causa: la configuración se encontró pero falla la validación de esquema: un campo obligatorio ausente, un files.pattern sin el token {locale}, un locale de origen listado en targetLocales, o una clave de nivel superior no reconocida. Una clave no reconocida gana la pista API keys are read from the environment, not the config: el esquema es estricto precisamente para que un secreto no pueda esconderse en un archivo confirmado.

Solución: corrige el campo que nombra el mensaje. Consulta Archivo de configuración para el esquema completo. Si el mensaje es No verbatra configuration found... (CONFIG_NOT_FOUND), ejecuta verbatra init o pasa --config <path>.

No hay adaptador para el formato (UNKNOWN_FORMAT)

Síntoma: No adapter is registered for format "..." seguido de la lista soportada.

Causa: el format de la configuración no es uno de los ocho ids de formato registrados. Esto se comprueba antes de leer ningún archivo.

Solución: usa uno de los ids de Formatos, por ejemplo i18next-json o xliff.

El locale solicitado no está configurado (UNKNOWN_LOCALE)

Síntoma: Requested locale not in the configured target locales: ... Configured targets: ...

Causa: un valor de --locales (o una entrada locales/locale del SDK) nombra un locale que no está en targetLocales. Los filtros de locale seleccionan de la lista configurada; nunca añaden a ella.

Solución: añade el locale a targetLocales en la configuración, o corrige la errata del filtro.

El archivo de origen falta o no parsea (SOURCE_UNREADABLE, SOURCE_INVALID)

Síntoma: The source locale file was not found at <path>. o The source locale file at <path> could not be read: ...

Causa: files.pattern con el locale de origen sustituido no apunta a un archivo existente (SOURCE_UNREADABLE), o el archivo existe pero el adaptador lo rechaza, por ejemplo JSON inválido o un problema estructural (SOURCE_INVALID, envolviendo el mensaje del adaptador).

Solución: comprueba la ruta que imprime el mensaje; es el patrón resuelto contra el directorio de trabajo, así que un --cwd equivocado es una causa frecuente. Para los rechazos estructurales, mira la entrada INVALID_STRUCTURE más abajo.

Falta la clave de API (PROVIDER_CONSTRUCTION_FAILED)

Síntoma: Failed to construct provider "anthropic": The ANTHROPIC_API_KEY environment variable is not set. (o la variable correspondiente de tu proveedor).

Causa: el proveedor lee su clave del entorno cuando se construye, y la variable nombrada no está definida o está vacía. Los mensajes de error nombran la variable pero nunca contienen el valor de una clave, y las claves nunca se leen de la configuración ni de los argumentos de la CLI.

Solución: define la variable que nombra el mensaje. La CLI carga .env y .env.local desde el directorio de trabajo; el SDK no, así que en tu propio script usa node --env-file=.env o exporta la variable. openai-compatible solo levanta esto cuando la configuración nombra un apiKeyEnvVar que no está definido; sin uno, recurre a un marcador sin clave para servidores locales.

Límites de tasa, tiempos de espera y fallos de autenticación a mitad de ejecución (RATE_LIMITED, TIMEOUT, AUTH_FAILED)

Síntoma: la ejecución termina, pero algunas claves no se tradujeron: aparecen bajo el providerFailures de un locale, con un aviso SUB_BATCH_FAILED que lleva el código del proveedor. El locale sigue contando como exitoso, así que el código de salida se queda en 0.

Causa: una llamada al proveedor falló después de la construcción: HTTP 429 (RATE_LIMITED), un tiempo de espera de red o de solicitud (TIMEOUT), o HTTP 401/403 (AUTH_FAILED, una clave inválida o revocada).

Solución: no se pierde nada. Las claves afectadas conservan su línea base anterior en el bloqueo y se recogen de nuevo en la siguiente ejecución, así que para RATE_LIMITED o TIMEOUT simplemente vuelve a ejecutar más tarde. AUTH_FAILED no se resuelve reintentando: reemplaza la clave detrás de la variable de entorno. Un maxBatchSize más pequeño también reduce el radio de impacto de una sola solicitud fallida.

El archivo de bloqueo está corrupto (LOCK_FILE_INVALID)

Síntoma: The lock-file at <path> is not valid JSON., ... has an unexpected shape., ... has version N, but this version of verbatra supports version 1., o ... exceeds the maximum allowed size ...

Causa: verbatra.lock.json fue editado a mano, truncado, producido por una versión incompatible o dañado en un merge.

Solución: restaura el archivo desde el control de versiones; eso mantiene intacta cada línea base. Borrarlo también quita el error, pero pierde el registro de qué versión del origen produjo cada traducción, así que las ediciones del origen hechas antes del borrado ya no se detectan como obsoletas. Consulta El archivo de bloqueo.

Otro proceso tiene el bloqueo de escritura (LOCK_CONTENDED)

Síntoma: Could not acquire the write lock at <path>: another process may be holding it. If no verbatra process is currently running, this lock file was likely left behind by one that was killed; delete it and retry.

Causa: las escrituras a un locale se serializan a través de un archivo de bloqueo por locale. Un translate, watch, import o una escritura de Studio concurrentes lo tienen, o un proceso matado dejó atrás el archivo de bloqueo.

Solución: exactamente lo que dice el mensaje: espera a que termine la otra ejecución o, si no hay ninguna en marcha, borra el archivo de bloqueo en la ruta impresa y reintenta.

Claves con puntos o claves YAML colisionan (INVALID_STRUCTURE)

Síntoma: A dotted key and a nested key path resolve to the same path. (o la variante de hoja literal), o para YAML: A mapping key is a map or sequence (expected scalar keys).

Causa: dos entradas de un archivo resuelven a la misma clave efectiva, por ejemplo una clave literal "a.b" junto a un a: { b: ... } anidado, cosa que verbatra rechaza en lugar de descartar una en silencio; o un archivo YAML usa una clave de mapeo compuesta, que no tiene una forma de cadena fiel.

Solución: renombra una de las claves en colisión, o reemplaza la clave YAML compuesta por un escalar. Cuando el archivo es tu locale de origen, esto aflora envuelto en SOURCE_INVALID. Consulta Formatos para las reglas de claves de cada formato.

La ejecución se quedó corta con algunas claves (presupuesto de tokens)

Síntoma: un aviso BUDGET_TOKENS_EXCEEDED: The run's cumulative token usage (N) reached the configured budget of M tokens (behavior: ...); con budgetBehavior: "stop", las claves también aparecen bajo budgetWithheld.

Causa: se cruzó el techo de maxTokens configurado. Con "warn" (el valor por defecto) la ejecución continúa sin cambios; con "stop" cada clave aún no intentada se retiene durante el resto de la ejecución. El presupuesto nunca cambia el código de salida.

Solución: esto es la salvaguarda funcionando. Las claves retenidas conservan sus líneas base y se traducen en la siguiente ejecución; sube maxTokens o cambia a "warn" si quieres completarlo en una sola ejecución. Un presupuesto contra DeepL o una ejecución en seco informa supported: false y nunca salta, porque no existe uso de tokens que medir.

Studio: el puerto ya está en uso

Síntoma: port 5849 is already in use (o el valor de tu --port).

Causa: otro proceso, a menudo una instancia anterior de Studio, está ligado al puerto. Studio usa por defecto el 5849 en 127.0.0.1.

Solución: detén el otro proceso, o arranca Studio en otro puerto: verbatra studio --port 6000.

Studio: @verbatra/studio no está instalado

Síntoma: Verbatra Studio requires @verbatra/studio. Install it with: pnpm add -D @verbatra/studio

Causa: @verbatra/studio es un paquete aparte que el comando studio carga dinámicamente, así que el resto de la CLI funciona sin él.

Solución: instálalo como dice la pista y vuelve a ejecutar verbatra studio.

Studio: faltan las acciones de retraducir y traducir

Síntoma: editar traducciones funciona, pero las acciones de retraducir y traducir pendientes no aparecen.

Causa: el gasto de proveedor es una capacidad que concedes al arrancar. Sin ella, los métodos con puerta de gasto ni siquiera se registran; la edición local de archivos siempre está activa y no necesita opción alguna.

Solución: reinicia Studio con verbatra studio --allow-spend, o define VERBATRA_STUDIO_ALLOW_SPEND=1 (también true, yes u on). Las acciones rápidas y repetidas también pueden toparse con el propio limitador de Studio, METHOD_RATE_LIMITED: Too many calls to this method; wait before retrying.; eso se despeja solo. Consulta Revisión en Studio.

Edit on GitHub