Trabajar con traducciones existentes

Lingo.dev CLI se integra perfectamente con proyectos que ya tienen archivos de traducción, preservando el trabajo existente mientras completa las traducciones faltantes.

Cuando ejecutas la CLI en un proyecto con traducciones existentes, analiza lo que ya está traducido y solo genera contenido para las claves faltantes, manteniendo la calidad y consistencia de tus traducciones existentes.

Nota: Asegúrate de que tus archivos de idioma de destino estén vacíos y no contengan contenido en el idioma de origen. Tener contenido del idioma de origen en archivos de destino es una mala práctica y puede interferir con el proceso de traducción.

Cómo funciona

Lingo.dev CLI compara tu contenido de origen con los archivos de destino existentes para identificar brechas. Solo se generan las traducciones faltantes, dejando tu trabajo existente intacto.

Escenario de ejemplo:

// locales/en.json (source)
{
  "welcome": "Welcome to our app",
  "button.save": "Save",
  "button.cancel": "Cancel",
  "error.network": "Network error"
}

// locales/es.json (existing partial translations)
{
  "welcome": "Bienvenido a nuestra aplicación",
  "button.save": "Guardar"
}

Ejecutar npx lingo.dev@latest run genera solo las traducciones faltantes:

// locales/es.json (after CLI run)
{
  "welcome": "Bienvenido a nuestra aplicación",
  "button.save": "Guardar",
  "button.cancel": "Cancelar",
  "error.network": "Error de red"
}

Tus traducciones existentes de "welcome" y "button.save" permanecen sin cambios.

Primera ejecución con traducciones existentes

Cuando ejecutas Lingo.dev CLI por primera vez en un proyecto con traducciones existentes, crea el archivo i18n.lock basado en tu estado actual. Este archivo lockfile rastrea qué contenido ha sido procesado, asegurando que las traducciones existentes no se regeneren.

Flujo de trabajo:

  1. Escaneo inicial — La CLI identifica las traducciones existentes en los archivos de destino
  2. Análisis de brechas — Compara las claves de origen con los archivos de destino para encontrar traducciones faltantes
  3. Generación de traducciones — Crea solo las traducciones faltantes
  4. Creación del lockfile — Registra las huellas digitales del contenido para todo el contenido de origen

Migración desde sistemas de traducción legacy

Lingo.dev CLI funciona con archivos de traducción creados por cualquier herramienta, siempre que sigan formatos estándar como JSON, YAML u otros tipos de archivo compatibles.

Pasos de migración:

  1. Configurar i18n.json — Configura tus patrones de bucket para que coincidan con las ubicaciones de archivos existentes
  2. Ejecutar traducción inicial — CLI completa cualquier traducción faltante
  3. Revisar y confirmar — Las traducciones existentes se preservan, solo se llenan los vacíos

Ejemplo de migración:

// Your existing project structure
locales/
  en.json    (source)
  es.json    (partial translations from previous tool)
  fr.json    (partial translations from previous tool)

// i18n.json configuration
{
  "locale": {
    "source": "en",
    "targets": ["es", "fr"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

El CLI respeta tu estructura de archivos y traducciones existentes.

Gestión de la calidad de traducción

Las traducciones existentes pueden tener peor calidad que las traducciones generadas por motores de traducción de IA. Lingo.dev CLI proporciona opciones para actualizar traducciones cuando sea necesario:

Mantener traducciones existentes:

npx lingo.dev@latest run
# Preserves all existing translations, fills in gaps

Retraducir idiomas específicos:

npx lingo.dev@latest run --force --target-locale es
# Regenerates all Spanish translations

Retraducir claves específicas:

npx lingo.dev@latest run --force --key error.network
# Regenerates just the error.network key across all languages

Para más información sobre retraducción, consulta Retraducción.

Archivos de destino vacíos

Si tienes archivos de destino vacíos o archivos con solo algunas claves, Lingo.dev CLI los trata como parcialmente traducidos y completa el contenido faltante.

Ejemplo:

// locales/de.json (empty target file)
{}

Después de ejecutar el CLI, se convierte en un archivo de traducción completo con todas las claves de origen traducidas.

Inicialización del archivo de bloqueo

La primera ejecución crea un archivo i18n.lock que refleja tu estado existente. Esto evita que el CLI retraduzca contenido que ya estaba presente, incluso si no fue generado originalmente por Lingo.dev CLI.

Este archivo de bloqueo garantiza un comportamiento consistente entre las traducciones existentes y las nuevas en adelante.