Añadir idiomas

Lingo.dev CLI facilita la expansión de tu proyecto a nuevos idiomas añadiendo locales de destino a tu configuración i18n.json y ejecutando un solo comando.

Cuando añades nuevos idiomas, el CLI genera archivos de traducción completos para los nuevos locales mientras preserva todas las traducciones existentes y mantiene el mismo sistema de fingerprinting de contenido.

Añadir tu primer idioma nuevo

Para añadir un nuevo idioma, actualiza el array targets en tu configuración i18n.json:

Configuración original:

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

Configuración actualizada con alemán:

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

Ejecutar npx lingo.dev@latest run crea el nuevo archivo de traducción al alemán:

locales/
  en.json    (source - unchanged)
  es.json    (existing - unchanged)
  fr.json    (existing - unchanged)
  de.json    (new - fully translated)

Cómo funciona la generación de nuevos idiomas

Lingo.dev CLI trata los nuevos idiomas de forma diferente a los existentes:

  1. Idiomas existentes — Solo se generan las traducciones faltantes
  2. Idiomas nuevos — Se crean archivos de traducción completos desde cero

Ejemplo con traducciones existentes parciales:

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

// locales/es.json (existing with missing translations)
{
  "welcome": "Bienvenido"
}

Después de añadir alemán y ejecutar el CLI:

// locales/es.json (gaps filled)
{
  "welcome": "Bienvenido",
  "button.save": "Guardar",
  "error.network": "Error de red"
}

// locales/de.json (complete new file)
{
  "welcome": "Willkommen",
  "button.save": "Speichern",
  "error.network": "Netzwerkfehler"
}

Añadir múltiples idiomas

Puedes añadir múltiples idiomas simultáneamente:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de", "ja", "zh"]
  }
}

El CLI procesa todos los idiomas nuevos, creando archivos de traducción completos para cada nuevo locale.

Variantes regionales

Lingo.dev CLI soporta variantes regionales de idiomas utilizando etiquetas de idioma BCP 47:

{
  "locale": {
    "source": "en-US",
    "targets": ["en-GB", "es-ES", "es-MX", "fr-FR", "fr-CA"]
  }
}

Esto genera archivos de traducción distintos para cada variante regional, teniendo en cuenta las diferencias en terminología, ortografía y contexto cultural.

Impacto en la estructura de archivos

El CLI crea nuevos archivos siguiendo tus patrones de bucket. Para diferentes formatos de archivo:

Buckets JSON:

locales/[locale].json → locales/de.json, locales/ja.json

Buckets Markdown:

content/[locale]/*.md → content/de/*.md, content/ja/*.md

Estructuras anidadas:

app/[locale]/messages.json → app/de/messages.json, app/ja/messages.json

Adición de idioma específico

Puedes generar traducciones para idiomas nuevos específicos usando la bandera --target-locale:

npx lingo.dev@latest run --target-locale de

Esto genera solo las traducciones al alemán, dejando otros idiomas nuevos para procesamiento posterior.

Eliminación de idioma

Para eliminar un idioma, simplemente elimínalo del array targets. El CLI no eliminará los archivos existentes, pero dejará de procesar ese locale:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr"]
  }
}

Puedes eliminar manualmente los archivos de traducción correspondientes si es necesario.