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

Descripción general

  • @lingo.dev/cli

Primeros pasos

  • Inicio rápido
  • Configuración
  • Ejemplos

Referencia

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

Configuración

  • Controles de claves
  • Formatos
  • Idiomas

Guías

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

¿Buscas el CLI anterior (v0)? Consulta la documentación del CLI anterior

Proyectos de ejemplo

Cada ejemplo de abajo es un repositorio real con .lingo/config.json confirmado y las traducciones ya listas, para que puedas revisar la configuración junto al resultado que genera. La mayoría son aplicaciones que puedes ejecutar; un par están ahí solo para mostrar un formato de archivo por sí mismo. Clona o haz fork de uno, ejecuta lingo link para conectar tu propio motor y haz push.

Elige primero un enfoque#

Hay dos formas de localizar con la CLI, y eso define cuáles ejemplos te resultan relevantes.

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 directamente. Tu código no cambia en nada. Así funcionan nueve de los once ejemplos de abajo.

Escribe sin claves. Envuelves las cadenas donde aparecen con l.text(...), lingo extract te genera un catálogo con claves hash, y no hay claves de traducción que nombrar ni mantener. Eso suma un paso de compilación y un paquete en tiempo de ejecución, y es justo lo que muestran los dos ejemplos de apps web.

Apps móviles#

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

Apps web#

Los dos ejemplos sin claves. Ambos envuelven strings con l.text(...) y generan su catálogo con lingo extract, así que la columna del medio nombra el paquete de runtime en vez de un formato de archivo.

EjemploPaquetePor qué elegir este
React + Vite@lingo.dev/reactAuthoring sin claves; las declaraciones generadas limitan l.text() a los strings extraídos
Next.js@lingo.dev/react-nextCreación sin claves más enrutamiento por idioma, hreflang y un selector: Pages Router

hreflang en producción

LingoHead construye sus URLs de hreflang a partir de una prop baseUrl que, por defecto, está vacía, así que de entrada las etiquetas son relativas. Los motores de búsqueda esperan URLs absolutas: pásale el origen de tu sitio (<LingoHead baseUrl="https://example.com" />) antes de depender de ellas.

Contenido y especificaciones#

EjemploFormatoPor qué elegir este
Documentación en Markdownmd, mdxProsa por defecto, con campos de frontmatter y props de MDX activados de forma explícita
Markdocmarkdoc, jsonContenido de Next.js y strings de la interfaz en un solo push: tres entradas, cada una con opciones distintas.
OpenAPIyaml-openapiSolo resúmenes y descripciones; rutas, operation IDs y enums se mantienen intactos

Catálogos de frameworks#

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

Los catálogos de TypeScript necesitan un default export

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

Cómo usar uno de estos#

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 versiona orgId ni engineId; eso evita que un fork haga push a través del motor de otra persona. lingo link completa ambos localmente.

Si prefieres la GitHub App en lugar de la CLI

La GitHub App lee engineId desde el .lingo/config.json confirmado en tu repositorio: resuelve la organización desde 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 pregunta la gente, pero el CLI traduce dieciocho formatos. xliff, srt, Xcode .strings y .stringsdict, yaml genérico y JSON/JSONC independiente funcionan sin necesidad de tener un repositorio aquí; 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 haz tu primer push en minutos
GitHub App
Traduce en cada push, del lado del servidor

¿Te resultó útil esta página?

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