|Labs
Reservar una demoPlataforma
React (Lingo Compiler)
Alpha
React (MCP)React (i18n)CLI antiguo (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
  • Añadir idiomas
  • Sobrescrituras
  • Notas para traductores
  • Claves de traducción
  • Cambio de nombre de claves
  • Bloqueo de claves
  • Ignorar claves
  • Conservación de claves
  • Extrae claves con IA

Rendimiento

  • Proyectos de gran tamaño
  • Procesamiento en paralelo
  • Estimación de costes

Retraducción

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

Esta documentación corresponde a la CLI antigua (v0) y está obsoleta. La CLI actual es la v1. Consulta la documentación de la CLI actual

Formatos compatibles

La CLI de Lingo.dev utiliza tipos de bucket para analizar y traducir distintos formatos de archivo. Cada tipo de bucket es un parser específico diseñado para un formato concreto. Configura uno o varios buckets en tu i18n.json para definir qué archivos debe traducir la CLI.

Tipos de bucket#

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

Modos de salida#

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

Archivos independientes por idioma: la CLI crea un archivo distinto para cada idioma de destino. Los patrones include deben contener el marcador [locale]:

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

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

Modifica el archivo de origen: la CLI escribe las traducciones en el mismo archivo que contiene el contenido original. En este caso, no se utiliza el marcador [locale]:

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

Los archivos CSV suelen almacenar todos los idiomas en columnas dentro de un único archivo. Los catálogos .xcstrings de Xcode y los archivos YAML con claves raíz funcionan de forma parecida.

Ejemplos de configuración#

Aplicación 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"]
    }
  }
}

Aplicación 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 varios 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 de cada bucket#

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

FunciónBuckets compatiblesDescripción
Key LockingFormatos de clave-valor (JSON, YAML, etc.)Copia los valores de origen 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 futuras actualizaciones
Translator NotesJSONC, XCStringsAporta contexto mediante comentarios para mejorar la traducción

Reglas de los patrones include#

  • Los patrones son relativos a la ubicación del archivo i18n.json
  • Usa [locale] como marcador para los códigos de idioma (obligatorio en los buckets de "archivos independientes")
  • 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 por defecto; añade tus propias entradas exclude además según lo necesites (requiere CLI 0.135.0+)
  • Las extensiones de archivo no afectan al análisis: el tipo de bucket determina qué parser se utiliza

Siguientes pasos#

i18n.json
Referencia completa de configuración
Key Locking
Protege claves concretas de la traducción
Existing Translations
Añade la CLI a un proyecto que ya tiene traducciones
Setup
Instala y configura la CLI

¿Te ha resultado útil esta página?

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