Saltar al contenido
Saltar al contenido

Docs / Guías

Página traducida automáticamente

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

Entregar con Excel o CSV

Exporta las cadenas sin traducir a un libro de Excel o a archivos CSV para un traductor e importa el resultado con las mismas comprobaciones de seguridad.

Usa esto cuando una persona deba traducir algunas cadenas: textos de marketing, textos legales o los idiomas que más importan. Exportas las cadenas que necesitan traducción, un traductor las rellena e importas el archivo de vuelta a tus archivos de locale.

La exportación elige exactamente las claves que una ejecución automática traduciría (las nuevas y las modificadas), y la importación ejecuta las mismas comprobaciones de integridad que translate, así que un valor escrito a mano que rompe un placeholder se retiene y se informa en lugar de escribirse. Ninguno de los dos comandos llama a un proveedor ni necesita una clave de API.

Necesitas un proyecto verbatra con al menos un locale de destino.

El ciclo de ida y vuelta

# 1. Export the strings that need translating
verbatra export

# 2. A translator fills the Translation column and sends the file back

# 3. Import the filled workbook
verbatra import verbatra-translations.xlsx

La exportación escribe verbatra-translations.xlsx en el directorio de trabajo. La importación valida cada fila rellenada, escribe los valores que pasan y avanza el archivo de bloqueo exactamente para las claves que aceptó, como haría una ejecución de translate.

Qué acaba en el libro

El libro empieza con una hoja Instructions y luego una hoja por cada locale de destino, con el nombre de su locale (de, fr, ...). Todas las hojas de locale tienen las mismas columnas:

ColumnaEditablePropósito
Keynola ruta de la clave; lo único que vincula una fila con una cadena
Sourcenoel valor en el locale de origen
Current translationnoel valor de destino actual, si lo hay
Statusnonew, changed (el origen cambió desde que se tradujo) o unchanged (solo con --include-unchanged)
Translationsíla única celda que rellena el traductor
Source hashnooculta; detecta un origen que cambió después de exportar
Contextnola descripción de la clave, cuando el formato de origen la lleva; nunca se importa
Review statusnook, o review cuando una señal de revisión sugiere un segundo vistazo
Review reasonsnolos motivos de revisión detrás de un estado review

Todas las columnas salvo Translation están bloqueadas por la protección de hoja, y Translation usa el formato de texto de Excel, así que un valor como 007 o uno que empieza por = se queda como texto literal. Las columnas de revisión son orientativas: la importación nunca las lee.

La entrega

Dale al traductor estas reglas (la hoja Instructions las repite):

  • Rellena la columna Translation y nada más.
  • No renombres, borres ni reordenes las pestañas de idioma. Cada pestaña se asocia a un locale por su nombre exacto, así que una pestaña renombrada o que falta hace fallar ese locale.
  • Ordenar y filtrar filas no es problema, porque las filas se asocian por Key. Las columnas deben quedarse donde están.
  • Deja una celda vacía para "todavía sin traducir". Un libro rellenado a medias puede volver ahora y el resto más tarde.
  • Para vaciar un valor existente a propósito, escribe exactamente [[CLEAR]].

Qué acepta la importación

Cada fila rellenada se evalúa contra el proyecto actual antes de escribir nada:

  • Deriva del origen: si la cadena de origen cambió después de exportar, la fila se retiene, así nunca aterriza la traducción de un origen antiguo.
  • Integridad: los placeholders, el marcado en línea y la estructura ICU deben coincidir con el origen, como en cada ejecución. Consulta la puerta de integridad.
  • Valores degenerados: un bucle de repeticiones, una longitud desbocada o un valor vacío para un origen no vacío se retienen.
  • Claves desconocidas: una fila rellenada cuya clave no existe ni en el origen ni en el destino hace fallar la hoja de ese locale. Una clave que solo existe en el destino no se escribe.
  • Filas sin cambios (desde 0.13.0): en una entrega CSV, TSV o xlsx, una fila rellenada igual al valor de una clave al día se deja intacta y se informa como sin cambios, una vez que pasa la misma puerta.

Una fila retenida o en blanco conserva su línea base en el bloqueo, así que la clave se vuelve a exportar hasta que se resuelve; una fila en blanco cuyo origen derivó también genera BLANK_ROW_BASELINE_RETAINED. Una fila ilegible o una clave repetida se informan sin hacer fallar la hoja. Cada hoja es un locale en el resumen de la ejecución, y la importación usa los mismos códigos de salida que translate, así que una entrega encaja en las mismas comprobaciones de CI que una ejecución automática. verbatra import tiene los detalles.

Primero un dry run

Previsualiza lo que escribiría un libro devuelto, sin tocar ningún archivo:

verbatra import verbatra-translations.xlsx --dry-run

CSV y TSV en lugar de un libro

Si un proveedor de servicios o un pipeline quiere texto plano, --format csv o --format tsv escribe las mismas columnas como un archivo por locale:

# write handoff/de.csv and handoff/fr.csv
verbatra export --format csv --out handoff

# import every locale file in the directory back
verbatra import handoff --format csv

El locale sale del nombre del archivo, así que conserva los nombres con los que se exportaron. Frente al libro:

  • Nada está protegido. Todas las columnas son editables y Source hash está visible. Un hash editado nunca se da por bueno: la fila se compara con el origen actual y se retiene como deriva.
  • No hay hoja Instructions. Pasa tú mismo al traductor las reglas de arriba.
  • Las fórmulas se desactivan. Un valor que empieza por =, +, -, @, un tabulador o un retorno de carro se escribe con un apóstrofo delante, para que una hoja de cálculo lo mantenga como texto; la importación vuelve a quitar el apóstrofo. Aun así, trata un archivo devuelto como entrada no confiable.
  • Una reexportación más estrecha retira los archivos antiguos. Un archivo que quedó de una exportación anterior más amplia se rechaza al importar en lugar de aplicarse. No se borra nada.

XLIFF para una herramienta TAO

Si una agencia trabaja en una herramienta TAO como Trados, memoQ u OmegaT, exporta XLIFF: consulta Entregar a una agencia.

TMX es otro camino

Una entrega lleva a una persona las cadenas pendientes de cada locale. verbatra tmx mueve toda la memoria de traducción entre herramientas como un único archivo multilingüe, así que no es un valor de export --format.

Seleccionar qué exportar

Por defecto, la exportación incluye solo las cadenas que faltan y las modificadas:

# Only the German and French sheets
verbatra export --locales de,fr

# Also include strings that are already up to date
verbatra export --include-unchanged

# Write to a specific path
verbatra export --out handoff/round-2.xlsx

Usa --include-unchanged cuando un traductor quiere un locale completo como contexto. --out debe quedarse dentro del proyecto y no puede nombrar un archivo del que dependa el proyecto. Consulta verbatra export para cada opción y regla.

Las columnas de revisión

Las dos columnas se calculan al exportar a partir del origen y los valores actuales, así que una fila sin traducción siempre es ok. Review reasons escribe cada motivo en minúsculas con guiones (length-ratio-outlier), salvo los dos que solo ve una ejecución (provider-degraded, fuzzy-cache-reuse), que nunca aparecen. Añade icu-arms con las ramas que faltan o sobran cuando las ramas ICU de un valor no encajan con el idioma de destino; la puerta de integridad rechaza ese valor, así que corrígelo antes de que la fila vuelva. Para quitar una señal, corrige la traducción.

Desde el SDK

Los dos comandos envuelven exportWorkbook e importWorkbook:

import { exportWorkbook, importWorkbook, loadConfig } from "@verbatra/sdk";

const config = await loadConfig();

await exportWorkbook({ config, format: "csv", out: "handoff" });

const summary = await importWorkbook({ config, workbook: "handoff", format: "csv" });

importWorkbook devuelve el mismo RunSummary que translate.

Relacionado

Editar en GitHub

En esta página