Cómo traducir un archivo CSV
TABLE OF CONTENTS
CSV parece sencillo, pero su traducción puede salir mal rápidamente: las columnas pueden desplazarse, las comillas romperse, los caracteres no latinos volverse ilegibles o los IDs “traducirse” a algo inutilizable. Esta guía muestra un flujo de trabajo seguro y práctico para traducir un archivo CSV preservando su estructura, además de una lista de verificación de QA y soluciones para problemas comunes.
Si quieres la opción más simple, utiliza un traductor compatible con CSV (Método 1) en lugar de copiar el texto CSV en un traductor genérico.
Antes de importar el archivo traducido, ejecuta la lista de verificación de QA de esta guía para detectar problemas de columnas o codificación a tiempo.
Qué Hace Que La Traducción de CSV Sea Difícil
CSV es texto plano, pero contiene reglas de estructura:
- Delimitador: normalmente coma (
,), a veces punto y coma (;) en algunos idiomas. - Comillas: los valores de texto pueden estar entre comillas dobles (
"). Las comillas dentro de los valores deben escaparse (comúnmente""). - Saltos de línea dentro de celdas: permitidos, pero solo si la celda está correctamente entrecomillada.
- Codificación: tu archivo puede ser UTF‑8, UTF‑8 con BOM o codificaciones heredadas.
- Tipos de datos mixtos: números, fechas, SKUs, IDs, URLs y marcadores de posición a menudo deben permanecer sin cambios.
Las herramientas de traducción que tratan el CSV como “solo texto” pueden modificar accidentalmente los caracteres de estructura (delimitadores/comillas/saltos de línea) o transformar los tipos de datos (fechas/números), lo que lleva a importaciones fallidas.
Antes de Empezar
Estos pasos rápidos previenen la mayoría de los errores en la traducción de CSV:
-
Haz una copia de seguridad
- Guarda
file.csv→file.original.csv. - Si el CSV incluye datos de clientes, elimina o anonimiza los campos sensibles antes de subirlo a cualquier sitio.
- Guarda
-
Identifica los campos “no traducibles” Mantén estos sin cambios:
- IDs, claves, SKUs, números de pedido
- URLs, correos electrónicos, rutas de archivos
- Marcadores de posición y variables (
{name},{{amount}},%s,:count) - Etiquetas, valores enum, códigos de estado internos (
PAID,REFUNDED) - Cualquier campo consumido por código (API keys, blobs JSON, fragmentos HTML)
- Si tienes dudas, consulta: /what-not-to-translate
-
Confirma el delimitador, las reglas de comillas y los finales de línea
- Si abres el CSV y “parece una sola columna”, probablemente el delimitador sea incorrecto.
- El CSV típico utiliza el delimitador
,y comillas"(ver RFC 4180: https://www.rfc-editor.org/rfc/rfc4180).
-
Confirma la codificación
- Prefiere UTF‑8 para contenido multilingüe.
- Si vas a abrir el CSV traducido en Excel en Windows, puede que necesites UTF‑8 con BOM para evitar caracteres corruptos.
- Antecedentes sobre BOM: https://unicode.org/faq/utf_bom.html
-
Opcional pero recomendado: agrega un
row_idestable Para CSVs que serán reimportados o emparejados posteriormente, agrega una columna de clave única (por ejemplo,row_id) para poder verificar que las filas no se reordenaron.
Método 1 — Traductores online compatibles con CSV (recomendado)
Los traductores compatibles con CSV tratan el CSV como datos estructurados, no “solo texto”, por lo que es menos probable que rompan los delimitadores, las comillas o el diseño de filas/columnas. Siempre ejecuta la lista de verificación de QA antes de importar.
Comparación de opciones neutrales
| Opción | Fortalezas | Compromisos | Mejor para |
|---|---|---|---|
| OpenL CSV Translator Online | Diseñado para estructura CSV; carga/descarga rápida | Flujo basado en carga; no ideal para datos sensibles | Borradores CSV rápidos y confiables |
| DeepL / Google Cloud / AWS Translate (API) | Automatizable; buena calidad; adecuado para procesos por lotes | Requiere ingeniería + manejo cuidadoso de CSV | Equipos que traducen muchos archivos |
| CAT tools (Smartling, Lokalise, Phrase, etc.) | Terminología/QA, colaboración | Más configuración + coste | Localización de producto/UI a escala |
| Fórmulas de hoja de cálculo (Sheets/Excel) | Sin herramientas adicionales | Fácil de autoformatear o corromper el CSV | Solo archivos pequeños y de bajo riesgo |
Límites y notas
- No subas datos sensibles que no estés autorizado a compartir. Si es necesario, exporta primero un CSV depurado.
- Si tu sistema requiere nombres de encabezado específicos, no traduzcas la fila de encabezados.
- Ejecuta siempre la lista de verificación de QA antes de importar el CSV traducido.
- Si utilizas una herramienta en línea, revisa sus límites de carga y los formatos compatibles en la página de la herramienta.
Paso a paso
-
Abre la herramienta
- Ejemplo: https://doc.openl.io/translate/csv
-
Elige los idiomas
- Selecciona tus idiomas de destino.
-
Sube tu CSV
- Sube o arrastra y suelta tu archivo
.csv. - Si tu CSV contiene varias columnas de texto, el traductor traducirá el contenido manteniendo seguros los separadores y las comillas.
- Sube o arrastra y suelta tu archivo
-
Descarga el CSV traducido
- Guárdalo con un nombre claro como
products_es.csv.
- Guárdalo con un nombre claro como
Mejores prácticas para mejores resultados
- Traduce solo las columnas visibles para el usuario: títulos de productos, descripciones, cadenas de la interfaz de usuario, notas para el cliente.
- Mantén los códigos estables: no traduzcas
status,type,sku,category_id,url,handle.
Método 2 — Google Sheets o Excel
Este flujo de trabajo puede funcionar, pero es más fácil cambiar accidentalmente el formato, los delimitadores o los tipos.
Google Sheets (archivos pequeños)
-
Importa el CSV
- Google Sheets → Archivo → Importar → Subir.
- Si tus datos aparecen en una sola columna, elige el separador correcto (coma vs punto y coma).
-
Protege las columnas “no traducir”
- Da formato a las columnas de ID como Texto sin formato primero (por ejemplo, SKU, order id) para evitar que
00123se convierta en123.
- Da formato a las columnas de ID como Texto sin formato primero (por ejemplo, SKU, order id) para evitar que
-
Traduce solo las columnas objetivo
- Usa
=GOOGLETRANSLATE(A2,"en","es")en una columna nueva, luego Copiar → Pegado especial → Solo valores. - No ejecutes fórmulas de traducción en columnas que contengan URLs, marcadores de posición, códigos o fórmulas.
- Usa
-
Exporta
- Archivo → Descargar → Valores separados por comas (.csv) (Google Sheets exporta en UTF‑8).
Excel (Windows) — cómo importar y exportar correctamente en UTF‑8
Excel es donde los errores de codificación ocurren con mayor frecuencia. Utiliza estos pasos para evitar caracteres ilegibles y problemas con los delimitadores.
A) Importar CSV sin caracteres ilegibles
- Datos → Desde texto/CSV
- En el cuadro de diálogo de importación:
- Origen del archivo / Codificación: selecciona 65001: Unicode (UTF‑8) (la redacción varía según la versión)
- Delimitador: Coma (
,) o punto y coma (;) para que coincida con tu archivo
- Haz clic en Cargar (o Transformar datos si necesitas forzar columnas de ID como Texto)
B) Exportar como UTF‑8 (y cuándo usar BOM)
- Archivo → Guardar como
- Para Tipo de archivo, elige:
- CSV UTF‑8 (delimitado por comas) (*.csv) (recomendado para texto multilingüe)
- Si tu sistema de destino rechaza BOM, exporta UTF‑8 sin BOM usando un script (ver “Procesamiento por lotes”) o vuelve a guardar con un editor de código.
Errores comunes
- Autoformato: las hojas de cálculo pueden convertir IDs como
00123en123. - Conversión de fechas:
2026-01-09puede mostrarse de forma diferente y exportarse de manera inconsistente. - Cambios de delimitador: las exportaciones pueden cambiar a
;dependiendo de la configuración regional.
Si utilizas este método, la sección de QA a continuación es obligatoria.
Flujo de trabajo avanzado — Tabla de traducción
Si tu CSV es una mezcla de datos “a traducir” y “no traducir”, crea una tabla de traducción separada para que la traducción nunca toque campos sensibles.
Paso 1: Crear una tabla de traducción
Crea un nuevo CSV (o hoja) como:
| row_id | field | source_text | context | translated_text |
|---|---|---|---|---|
| 101 | product_title | Wireless Mouse | E-commerce product title | Ratón inalámbrico |
| 101 | product_desc | Silent clicks, 2-year battery | Short description | Clics silenciosos, batería de 2 años |
| 102 | product_title | USB-C Charger | E-commerce product title | Cargador USB-C |
| 102 | product_desc | Fast charging for phones and tablets | Short description | Carga rápida para teléfonos y tabletas |
| 103 | product_title | Stainless Steel Water Bottle | Product title | Botella de agua de acero inoxidable |
| 103 | product_desc | BPA-free, keeps drinks cold 24h | Short description | Libre de BPA, mantiene las bebidas frías 24h |
| 104 | product_title | Noise-Canceling Headphones | Product title | Auriculares con cancelación de ruido |
| 104 | product_desc | Over-ear, Bluetooth 5.3 | Short description | Over-ear, Bluetooth 5.3 |
Paso 2: Traducir solo source_text
Traduce la columna source_text con el flujo de trabajo elegido y coloca el resultado en translated_text. (Un traductor en línea compatible con CSV suele ser más seguro que las hojas de cálculo).
Paso 3: Mapear las traducciones de vuelta
Une por row_id + field y escribe el texto traducido de vuelta en tu conjunto de datos original. Esto asegura que los ID, precios y campos del sistema nunca pasen por traducción.
Ejemplo (Python + pandas)
import pandas as pd
# Datos originales (mantener los tipos estables; tratar los ID como cadenas)
orig = pd.read_csv("products.csv", dtype=str, keep_default_na=False)
# Tabla de traducción después de traducir
tt = pd.read_csv("translation_table_es.csv", dtype=str, keep_default_na=False)
# Remodelar a un formato ancho (una fila por row_id)
wide = (
tt.pivot(index="row_id", columns="field", values="translated_text")
.add_suffix("__translated")
.reset_index()
)
merged = orig.merge(wide, on="row_id", how="left")
# Escribir de vuelta (campos de ejemplo)
merged["product_title"] = merged["product_title__translated"].where(
merged["product_title__translated"].ne(""), merged["product_title"]
)
merged["product_desc"] = merged["product_desc__translated"].where(
merged["product_desc__translated"].ne(""), merged["product_desc"]
)
merged.drop(columns=[c for c in merged.columns if c.endswith(“__translated”)], inplace=True) merged.to_csv(“products_es.csv”, index=False, encoding=“utf-8-sig”)
#### Ejemplo (patrón de unión/actualización SQL)
```sql
-- translation_table(row_id, field, translated_text)
-- products(row_id, product_title, product_desc, ...)
UPDATE products p
SET product_title = t.translated_text
FROM translation_table t
WHERE p.row_id = t.row_id
AND t.field = 'product_title'
AND t.translated_text IS NOT NULL
AND t.translated_text <> '';
Procesamiento por lotes (múltiples archivos CSV)
Si necesitas traducir muchos archivos CSV, evita pasos manuales en hojas de cálculo y utiliza un flujo de trabajo repetible:
-
Estandariza las entradas
- Normaliza a UTF‑8 (o UTF‑8 con BOM si tu importador lo requiere).
- Asegúrate de que cada archivo tenga una clave estable (
row_id/id) para el mapeo.
-
Genera tablas de traducción por archivo
- Extrae solo los campos traducibles en
translation_table_<file>.csv. - Mantén una columna
source_filesi prefieres una tabla combinada para todos los archivos.
- Extrae solo los campos traducibles en
-
Traduce las tablas
- Utiliza un flujo de trabajo con API o una herramienta compatible con CSV, archivo por archivo.
-
Vuelve a unir los resultados + exporta
- Haz el mapeo por
row_id + field(ysource_filesi se usa). - Exporta con la codificación que tu sistema de destino requiera.
- Haz el mapeo por
Bucle inicial mínimo (procesa muchos archivos de forma consistente):
for f in ./input/*.csv; do
base="$(basename "$f" .csv)"
# 1) extraer tabla de traducción (implementa según tu esquema)
# 2) traducir translation_table_${base}.csv -> translation_table_${base}_translated.csv
# 3) unir y exportar ${base}_translated.csv
echo "Procesado: $base"
done
Lista de verificación de QA posterior a la traducción
Después de descargar el CSV traducido, realiza estas comprobaciones antes de importar:
Comprobaciones rápidas
- Comparar el número de filas (macOS/Linux):
wc -l file.original.csv file.translated.csv - Verificar la consistencia de los delimitadores abriendo el archivo en un editor de texto plano y confirmando que los separadores se vean igual.
- Opcional: verificar la consistencia en el número de columnas con Python:
python -c "import csv,sys; p=sys.argv[1]; r=list(csv.reader(open(p,newline='',encoding='utf-8'))); print('rows',len(r),'max_cols',max(len(x) for x in r))" file.translated.csv
Si obtienes un error de decodificación Unicode, convierte el CSV a UTF-8 primero, o prueba con utf-8-sig:
python -c "import csv,sys; p=sys.argv[1]; r=list(csv.reader(open(p,newline='',encoding='utf-8-sig'))); print('rows',len(r),'max_cols',max(len(x) for x in r))" file.translated.csv
Verificaciones de estructura
- Cantidad de filas sin cambios: mismo número de filas de datos que el original.
- Cantidad de columnas sin cambios: cada fila tiene el mismo número de columnas.
- Delimitador sin cambios: coma vs punto y coma es consistente con tu importador.
- Comillas válidas: los campos con comas/saltos de línea permanecen correctamente entrecomillados.
Verificaciones de integridad de datos
- IDs y claves sin cambios: comparar
sku,id,row_id,handle. - URLs/emails sin cambios: sin espacios añadidos, sin dominios traducidos.
- Números preservados: precios, cantidades, decimales permanecen igual.
- Marcadores de posición preservados:
{name},{{count}},%s,:valuepermanecen intactos.
Verificaciones de calidad de traducción
- Terminología consistente: los términos clave de productos se traducen de la misma manera en todas las filas.
- Restricciones de longitud respetadas: las etiquetas de la interfaz no son demasiado largas (importante para aplicaciones).
- Sin restos de idioma mixto: buscar palabras comunes del idioma fuente que deberían estar traducidas.
Solución de problemas comunes en la traducción de archivos CSV
1) Las columnas se desplazan después de la traducción
Síntomas
- Tu importador indica “número incorrecto de columnas”
- Los valores aparecen bajo los encabezados incorrectos
Causas probables
- Un campo traducido contiene una comilla sin escapar (
") - Un campo traducido contiene una coma/salto de línea pero no está correctamente entrecomillado
Solución
- Asegúrate de que el CSV utiliza reglas de entrecomillado correctas (comillas dobles alrededor de los campos; comillas internas escapadas como
""). - Retraduce utilizando un flujo de trabajo compatible con CSV (en lugar de traducir texto CSV sin procesar).
2) Caracteres ilegibles (mojibake) como ???? o é
Causas probables
- Codificación incorrecta en la exportación/importación (UTF‑8 vs legado)
Solución
- Exporta como UTF‑8.
- Si se utiliza Excel en Windows, prueba UTF‑8 con BOM.
- Evita copiar/pegar manualmente, ya que puede cambiar la codificación.
3) Desaparición de ceros a la izquierda (00123 → 123)
Causas probables
- Formateo automático de la hoja de cálculo (Excel/Sheets)
Solución
- Trata las columnas de ID como texto antes de editar/exportar.
- Prefiere traducir con un flujo de trabajo compatible con CSV que no reescriba tus datos.
4) Fechas o decimales cambiaron de formato
Ejemplos
1,234.56se convierte en1.234,562026-01-09se convierte en09/01/2026
Solución
- No traduzcas columnas numéricas/de fechas.
- Mantén los valores legibles por máquina; localiza los formatos de visualización en tu capa de interfaz de usuario, no en los datos sin procesar.
5) Problema de seguridad: inyección de CSV (fórmulas de Excel)
Si una celda traducida comienza con =, +, - o @, al abrir el archivo en Excel puede evaluarse como una fórmula.
Solución
- Para CSVs que se abrirán en hojas de cálculo, escapa las celdas de riesgo anteponiendo una comilla simple (
') o sanitiza durante la exportación. - Considera eliminar los caracteres iniciales de fórmula del texto proporcionado por el usuario antes de la traducción/importación.
- Referencia: https://owasp.org/www-community/attacks/CSV_Injection
FAQ
¿Cómo traduzco un CSV sin romper las columnas?
Utiliza un flujo de trabajo compatible con CSV y verifica la estructura antes de importar:
- Traduce con un método compatible con CSV (Método 1)
- Realiza las “Revisiones rápidas” + la lista de verificación de QA para confirmar el conteo de filas/columnas y el entrecomillado válido
- Si tu CSV mezcla campos sensibles y texto orientado al usuario, utiliza el “Flujo de trabajo avanzado — Tabla de traducción”
¿Puedo traducir solo una columna en un CSV?
Sí. El enfoque más seguro es crear una tabla de traducción (row_id + source_text + context), traducir solo esa parte y luego mapearla de regreso. Esto previene cambios accidentales en los IDs y campos numéricos.
¿Debo traducir la fila de encabezado?
Depende de tu caso de uso:
- Traduce los encabezados si el CSV será leído por personas (informes, exportaciones).
- No traduzcas los encabezados si tu sistema/importador espera nombres de campo específicos (importaciones de e-commerce, bases de datos, aplicaciones).
Mi CSV usa punto y coma (;) en vez de comas. ¿Está bien?
Sí, pero asegúrate de que tu herramienta/importador use siempre el mismo delimitador. Muchas configuraciones regionales europeas usan punto y coma por defecto. Una discordancia es una razón común por la que fallan las importaciones de CSV.
¿Cómo manejo texto multilínea (saltos de línea) en las celdas?
Las celdas multilínea están permitidas en CSV, pero deben estar correctamente entrecomilladas. Si tu contenido traducido incluye saltos de línea, se recomienda encarecidamente usar un traductor compatible con CSV para evitar rupturas de filas.
Herramientas
- OpenL CSV Translator Online (ejemplo de herramienta compatible con CSV): https://doc.openl.io/translate/csv
- Para flujos de trabajo en Excel: consulta también “How to Translate Excel Online”: /how-to-translate-excel-online
- Para contenido Markdown: “How to Translate Markdown”: /how-to-translate-markdown
- Si necesitas reglas sobre qué mantener sin cambios: “What Not to Translate”: /what-not-to-translate
Resumen
Para traducir un archivo CSV de forma segura, preserva la estructura (delimitador, comillas, codificación) y protege los campos “no traducir” (IDs, URLs, marcadores de posición, números). Prefiere flujos de trabajo compatibles con CSV y verifica con la lista de control de QA antes de importar.


