|
Documentación
Reservar una demoPlataforma
PlataformaMCPCLI
APIFlujos de trabajo
GuíasRegistro de cambios

Descripción general

  • @lingo.dev/cli

Primeros pasos

  • Guía rápida
  • Configuración
  • Ejemplos

Referencia

  • lingo push
  • lingo pull
  • lingo purge
  • Otros comandos

Configuración

  • Controles de claves
  • Formatos
  • Idiomas

Guías

  • Añadir un idioma
  • Traducciones existentes
  • Retraducción
  • Notas para traductores
  • Ejecuciones, estado y recuperación
  • CI/CD
  • Monorepos
  • Proyectos grandes

¿Buscas la versión anterior de la CLI (v0)? Consulta la documentación de la CLI antigua

Proyectos de ejemplo

Todos los ejemplos de abajo son repositorios reales con .lingo/config.json ya versionado y las traducciones ya preparadas, para que puedas leer la configuración junto al resultado que genera. La mayoría son aplicaciones que se pueden ejecutar; un par están ahí para mostrar un formato de archivo por sí mismo. Clona o haz fork de uno, ejecuta lingo link para vincular tu propio motor y haz push.

Elige primero un enfoque#

Hay dos formas de localizar con la CLI, y eso determina qué ejemplos te convienen.

Traduce los archivos que ya tienes. Tu framework guarda las traducciones en su propio formato — Rails YAML, Android XML, Laravel PHP, ARB, Markdown — y la CLI traduce esos archivos in situ. No cambia nada en tu código. Nueve de los once ejemplos de abajo funcionan así.

Escribe sin claves. Envuelves las cadenas en l.text(...) justo donde aparecen, lingo extract te genera un catálogo con claves hash y te olvidas de nombrar y mantener claves de traducción. A cambio, necesitas un paso de compilación y un paquete en tiempo de ejecución; eso es lo que muestran los dos ejemplos de aplicaciones web.

Aplicaciones móviles#

EjemploFormatoPor qué elegirlo
iOSxcode-xcstringsUn String Catalog reúne todos los idiomas, así que la ruta de destino es la misma que la de origen.
Androidandroidvalues/ sin más como origen, y los propios calificadores de Android (values-pt-rBR/)
FlutterflutterSe conservan los metadatos de @ y los placeholders de ICU; @@locale se reescribe en cada archivo

Aplicaciones web#

Los dos ejemplos sin claves. Ambos envuelven las cadenas con l.text(...) y generan su catálogo con lingo extract, así que la columna central muestra el paquete de runtime en lugar de un formato de archivo.

EjemploPaquetePor qué elegirlo
React + Vite@lingo.dev/reactAuthoring sin claves; las declaraciones generadas limitan l.text() a las cadenas extraídas
Next.js@lingo.dev/react-nextCreación sin claves con enrutado por idioma, hreflang y un selector: Pages Router

hreflang en producción

LingoHead construye sus URL de hreflang a partir de una prop baseUrl cuyo valor por defecto es una cadena vacía, así que, tal cual viene, las etiquetas son relativas. Los motores de búsqueda esperan URL absolutas: pásale el origen de tu sitio (<LingoHead baseUrl="https://example.com" />) antes de confiar en ellas.

Contenido y especificaciones#

EjemploFormatoPor qué elegirlo
Documentación en Markdownmd, mdxProsa por defecto, con campos de frontmatter y props de MDX activados de forma opcional
Markdocmarkdoc, jsonContenido de Next.js y textos de la interfaz en un solo push: tres entradas, cada una con opciones distintas.
OpenAPIyaml-openapiSolo resúmenes y descripciones; rutas, IDs de operación y enums intactos

Catálogos de frameworks#

EjemploFormatoPor qué elegirlo
Railsyaml-root-keyEl idioma es la clave raíz del YAML, así que se reescribe la propia clave raíz
Laravelphp, poCatálogos de Laravel más un archivo gettext; los placeholders :name se conservan en ambos
Módulos de TypeScripttypescriptCatálogos como módulos de TypeScript en lugar de JSON. Solo el formato: no los consume ninguna aplicación.

Los catálogos de TypeScript necesitan un default export

El formato typescript lee una exportación default: export default { … }, con o sin as const. Una exportación con nombre no genera contenido traducible y la ejecución termina con el código fuente copiado literalmente. Así que, si un push indica archivos localizados pero prácticamente cero tokens de salida, revisa primero la forma de la exportación.

Cómo usar uno de estos ejemplos#

bash
npm install -g @lingo.dev/cli
lingo login
lingo link          # writes your own orgId and engineId into .lingo/config.json
lingo push --wait

Ninguno de los ejemplos confirma orgId ni engineId; así se evita que una bifurcación haga push a través del motor de otra persona. lingo link rellena ambos localmente.

Si prefieres la GitHub App a la CLI

La GitHub App lee engineId del .lingo/config.json confirmado en tu repositorio: resuelve la organización a partir de la propia instalación de la App, pero el motor tiene que estar en el archivo. Después de hacer un fork, ejecuta lingo link y confirma la configuración actualizada antes de instalar la App.

No todos los formatos tienen ejemplo#

Estos once cubren los frameworks por los que más suele preguntar la gente, pero el CLI traduce dieciocho formatos. xliff, srt, Xcode .strings y .stringsdict, yaml genérico y JSON/JSONC independiente funcionan todos sin necesidad de tener aquí un repositorio; consulta Formats para ver la lista completa y la configuración que necesita cada uno.

Siguientes pasos#

Formatos
Los dieciocho formatos que traduce el CLI, incluidos los que aquí no tienen ejemplo
Configuración
Referencia completa de .lingo/config.json
Quickstart
Instala, autentícate y lanza tu primer push en unos minutos
GitHub App
Traduce en cada push, del lado del servidor

¿Te ha resultado útil esta página?

Mike ShulgaMike Shulga·Actualizado hace alrededor de 5 horas·4 min de lectura