|Labs
Agenda una demoPlataforma
React (Lingo Compiler)
Alpha
React (MCP)React (i18n)CLI anterior (v0)
Obsoleto

Lingo.dev CLI

  • Cómo funciona
  • Configuración
  • Inicio rápido
  • Monorepos

Configuración

  • Formatos compatibles
  • i18n.json
  • i18n.lock
  • Idiomas compatibles

Funciones

  • Traducciones existentes
  • Agregar idiomas
  • Sobrescrituras
  • Notas para traductores
  • Claves de traducción
  • Renombrado de claves
  • Bloqueo de claves
  • Ignorar claves
  • Preservación de claves
  • Extrae claves con IA

Rendimiento

  • Proyectos de gran escala
  • Procesamiento en paralelo
  • Estimación de costos

Retraducción

  • Retraducción automática
  • Retraducción
  • Eliminar traducciones

Esta documentación corresponde al CLI anterior (v0) y está obsoleta. El CLI actual es la v1. Consulta la documentación del CLI actual

Formatos compatibles

El CLI de Lingo.dev usa tipos de bucket para analizar y traducir distintos formatos de archivo. Cada tipo de bucket cuenta con un parser específico para un formato en particular. Configura uno o varios buckets en tu i18n.json para definir qué archivos debe traducir el CLI.

Tipos de bucket#

Tipo de bucketFormatoModo de salidaRequiere [locale]
jsonArchivos JSONArchivos separados por idiomaSí
json5Archivos JSON5Archivos separados por idiomaSí
jsoncArchivos JSONC (con comentarios)Archivos separados por idiomaSí
json-dictionaryDiccionario JSON (clave-valor plano)Archivos separados por idiomaSí
yamlArchivos YAMLArchivos separados por idiomaSí
yaml-root-keyYAML con claves raíz por idiomaModifica el archivo fuenteNo
markdownArchivos MarkdownArchivos separados por idiomaSí
mdxArchivos MDXArchivos separados por idiomaSí
markdocArchivos MarkdocArchivos separados por idiomaSí
htmlArchivos HTMLArchivos separados por idiomaSí
mjmlPlantillas de email en MJMLArchivos separados por idiomaSí
androidRecursos XML de AndroidArchivos separados por idiomaSí
xcode-stringsArchivos de Xcode .stringsArchivos separados por idiomaSí
xcode-stringsdictArchivos de Xcode .stringsdictArchivos separados por idiomaSí
xcode-xcstringsCatálogos de Xcode .xcstringsModifica el archivo fuenteNo
flutterArchivos ARB de FlutterArchivos separados por idiomaSí
poArchivos PO de GNU gettextArchivos separados por idiomaSí
propertiesArchivos de Java .propertiesArchivos separados por idiomaSí
csvArchivos CSVModifica el archivo fuenteNo
csv-per-localeArchivos CSV (uno por idioma)Archivos separados por idiomaSí
xmlArchivos XML genéricosArchivos separados por idiomaSí
xliffArchivos XLIFFArchivos separados por idiomaSí
srtArchivos de subtítulos SRTArchivos separados por idiomaSí
vttArchivos de subtítulos VTTArchivos separados por idiomaSí
phpArreglos de localización en PHPArchivos separados por idiomaSí
typescriptArchivos TypeScriptArchivos separados por idiomaSí
vue-jsonBloques JSON de Vue i18nArchivos separados por idiomaSí
txtArchivos de texto planoArchivos separados por idiomaSí

Modos de salida#

Los buckets funcionan en uno de estos dos modos de salida:

Archivos separados por idioma - el CLI crea un archivo distinto para cada idioma de destino. Los patrones de inclusión deben incluir el placeholder [locale]:

json
{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

Esto genera locales/en.json, locales/es.json, locales/fr.json, etc.

Modifica el archivo fuente - el CLI escribe las traducciones en el mismo archivo que contiene el contenido fuente. El placeholder [locale] no se usa:

json
{
  "buckets": {
    "csv": {
      "include": ["translations.csv"]
    }
  }
}

Los archivos CSV normalmente almacenan todos los idiomas en columnas dentro de un solo archivo. Los catálogos de Xcode .xcstrings y los YAML con claves raíz funcionan de forma similar.

Ejemplos de configuración#

App web con JSON#

json
{
  "buckets": {
    "json": {
      "include": ["src/locales/[locale].json"],
      "lockedKeys": ["brand/name"]
    }
  }
}

Sitio de documentación con Markdown#

json
{
  "buckets": {
    "markdown": {
      "include": ["docs/[locale]/*.md"],
      "exclude": ["docs/[locale]/drafts/*.md"]
    }
  }
}

App móvil (iOS + Android)#

json
{
  "buckets": {
    "xcode-xcstrings": {
      "include": ["ios/Localizable.xcstrings"]
    },
    "android": {
      "include": ["android/app/src/main/res/values-[locale]/strings.xml"]
    }
  }
}

Monorepo con múltiples formatos#

json
{
  "buckets": {
    "json": {
      "include": ["apps/web/locales/[locale].json"]
    },
    "mdx": {
      "include": ["packages/docs/content/[locale]/*.mdx"]
    },
    "flutter": {
      "include": ["apps/mobile/lib/l10n/app_[locale].arb"]
    }
  }
}

Funciones específicas por bucket#

Algunos buckets admiten funciones adicionales además de los patrones include/exclude:

FunciónBuckets compatiblesDescripción
Key LockingFormatos de clave-valor (JSON, YAML, etc.)Copia los valores fuente sin traducirlos
Key IgnoringFormatos de clave-valorExcluye por completo las claves de los archivos de destino
Key PreservingFormatos de clave-valorLas inicializa una vez y luego las protege de actualizaciones
Translator NotesJSONC, XCStringsAñade contexto mediante comentarios para mejorar la traducción

Reglas de los patrones de inclusión#

  • Los patrones son relativos a la ubicación del archivo i18n.json
  • Usa [locale] como placeholder para los códigos de idioma (obligatorio en los buckets de "archivos separados")
  • El asterisco (*) coincide con cualquier nombre de archivo: locales/[locale]/*.json
  • Los patrones recursivos (**) coinciden con archivos a cualquier nivel de profundidad: src/**/[locale].json, config/locales/**/[locale].yml. Cuando un patrón usa **, node_modules, .git, dist, build, .next y .turbo se excluyen de forma predeterminada; agrega tus propias entradas exclude encima según lo necesites (requiere CLI 0.135.0+)
  • Las extensiones de archivo no afectan el análisis: el tipo de bucket determina el parser

Siguientes pasos#

i18n.json
Referencia completa de configuración
Key Locking
Protege claves específicas de la traducción
Existing Translations
Agrega el CLI a un proyecto que ya tiene traducciones
Setup
Instala y configura el CLI

¿Te resultó útil esta página?

Max PrilutskiyMax Prilutskiy·Actualizado hace 5 días·4 min de lectura