Formatos compatibles

Actualizado el hace 2 trimestres · 4 min de lectura

Obsoleto

Esta documentación cubre el CLI heredado (v0). La versión actual del CLI es la v1. Ver la documentación actual de CLI

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#