Localización de aplicaciones web

Max PrilutskiyCEO y cofundadorActualizado: hace 2 meses · 5 min de lectura

La CLI de Lingo.dev traduce los archivos de recursos de tu aplicación web —JSON, YAML, XLIFF, PO o PHP— con un motor de localización configurado. Configura i18n en tu framework, apunta la CLI a tus archivos de traducción y ejecútala.

Cómo funciona#

Todos los frameworks web cuentan con una biblioteca de i18n que carga las traducciones desde archivos de recursos: JSON en React, XLIFF en Angular, PO en Django, etc. La CLI traduce esos archivos directamente para que el framework incorpore las traducciones sin tocar el código.

1

Configura i18n en tu framework

Usa la biblioteca oficial de i18n de tu framework para añadir rutas según el idioma, una función de traducción y archivos de recursos en el idioma de origen. En cada sección de frameworks más abajo encontrarás un enlace a la guía oficial de configuración.

2

Configura la CLI

Ejecuta lingo init para crear un .lingo/config.json con tus idiomas de origen y destino, además de los patrones de archivo que quieres traducir; después, ejecuta lingo link para vincular tu organización y tu motor. La CLI detecta automáticamente el formato de cada archivo por su extensión, así que no hace falta indicar ningún tipo de bucket. Haz commit de .lingo/config.json.

3

Ejecuta las traducciones

Ejecuta lingo push y la CLI traducirá tus archivos de recursos con el motor de localización: las reglas del glosario, la voz de marca y la selección del modelo se aplican automáticamente.

Requisitos previos#

Instala la CLI e inicia sesión:

bash
npm install -g @lingo.dev/cli
lingo login

La CLI requiere Node.js 22+. En CI, omite el inicio de sesión interactivo y pasa una clave con --api-key o mediante la variable de entorno LINGO_API_KEY.

Cada ejecución de CLI envía el contenido a través de un motor de localización, la configuración que determina qué modelo de LLM, glosario, voz de marca y reglas se aplican. Crea uno en el panel de Lingo.dev y genera una API key. lingo link escribe el orgId y el engineId del motor en .lingo/config.json.

Configuración asistida por IA

El i18n MCP puede generar automáticamente toda la infraestructura de i18n de tu framework. Conéctalo a Claude Code, Cursor o GitHub Copilot y escribe "Set up i18n": el agente sigue una lista de 13 pasos para configurar las rutas, los archivos de traducción y un selector de idioma.

Frameworks de JavaScript#

El segmento de idioma de cada pattern se sustituye según el idioma de destino: public/locales/en/translation.json pasa a ser public/locales/de/translation.json, y así sucesivamente. La ruta de origen debe incluir el código del idioma de origen.

react-i18next carga traducciones desde archivos JSON y proporciona un hook useTranslation que asigna claves a cadenas traducidas en tiempo de ejecución.

json
{
  "orgId": "org_...",
  "engineId": "eng_...",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [{ "pattern": "public/locales/en/translation.json" }]
}

Frameworks del lado del servidor#

Laravel incluye localización integrada, que carga traducciones desde archivos PHP organizados por directorio de idioma.

json
{
  "orgId": "org_...",
  "engineId": "eng_...",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [{ "pattern": "lang/en/messages.php" }]
}

Ejecutar traducciones#

Con .lingo/config.json configurado, traduce todos los archivos de recursos con un solo comando:

bash
lingo push

La CLI lee tus archivos del idioma de origen, calcula qué ha cambiado desde la última ejecución usando el lockfile (.lingo/lock.json, versionado junto con tu configuración), traduce solo el delta y escribe los resultados en los archivos del idioma de destino. Las traducciones existentes se conservan: la CLI solo rellena las cadenas que faltan o se han actualizado.

En la primera ejecución, o después de añadir un nuevo idioma de destino, tradúcelo todo desde cero:

bash
lingo push --backfill-missing

Limita una ejecución a un subconjunto de archivos pasando un glob:

bash
lingo push "messages/**"

Para obtener las traducciones más recientes en otro entorno (por ejemplo, en otra máquina o en un paso de compilación) sin traducir, ejecuta lingo pull. Usa lingo check como control de despliegue para verificar que las traducciones están al día.

Siguientes pasos#