Añadir idiomas

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

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

Añadir tu primer nuevo idioma

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"]
    }
  }
}

Al ejecutar npx lingo.dev@latest i18n se crea el nuevo archivo de traducción en alemán:

locales/
  en.json    (fuente - sin cambios)
  es.json    (existente - sin cambios)
  fr.json    (existente - sin cambios)
  de.json    (nuevo - completamente traducido)

Cómo funciona la generación de nuevos idiomas

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

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

Ejemplo con traducciones parciales existentes:

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

// locales/es.json (existente con traducciones faltantes)
{
  "welcome": "Bienvenido"
}

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

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

// locales/de.json (archivo nuevo completo)
{
  "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"]
  }
}

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

Variantes regionales

Lingo.dev CLI admite 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

La 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 idiomas específicos

Puedes generar traducciones para nuevos idiomas específicos utilizando el flag --locale:

npx lingo.dev@latest i18n --locale de

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

Eliminación de idiomas

Para eliminar un idioma, simplemente elimínalo del array targets. La 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.