# General Translation Knowledge Base: General Translation vs. i18n-tasks: ¿cuál deberías usar?
URL: https://generaltranslation.com/es/kb/general-translation-vs-i18n-tasks.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: i18n-tasks es una gema de Ruby que detecta claves de Rails I18n faltantes y sin usar, ordena los archivos de configuración regional y puede completar las claves faltantes mediante Google Translate, DeepL, OpenAI, Yandex o watsonx. General Translation traduce archivos de configuración regional completos con tu glosario, tus prompts personalizados y la revisión en el panel de control. Cumplen funciones distintas, y muchos equipos pueden usar ambas.
Category: Herramientas para flujos de trabajo
Last updated: 2026-10-16
Authors: Kevin Wu, Jackie Chen
Published: 2026-10-16

i18n-tasks es una herramienta de línea de comandos para aplicaciones Ruby que usan la gema i18n, lo que incluye todas las aplicaciones Rails. Analiza tu código en busca de llamadas como `t(".title")`, las compara con tus archivos de configuración regional e informa de las claves que faltan o que no se usan. Además, su comando `translate-missing` completa los huecos con un servicio de traducción automática para el que aportas tu propia clave. Es decir, revisa tus traducciones y puede traducir automáticamente una clave faltante, pero no las mantiene al día cuando cambia el texto en inglés. General Translation, en cambio, se encarga de la traducción: su CLI genera todos los archivos de configuración regional a partir de tu texto de origen en inglés, aplicando tu glosario y tus prompts personalizados. Por eso, más que competir, ambas herramientas se complementan.

## Lo que i18n-tasks hace bien

* **Detecta en el código claves faltantes y sin usar.** [Un escáner AST lee archivos `.rb` y `.html.erb`](https://github.com/glebm/i18n-tasks#features--limitations) (y un escáner de expresiones regulares cubre formatos como HAML), resuelve claves relativas como `t(".title")` e informa de las claves que se usan en el código pero faltan en una configuración regional, o que existen pero nunca se usan.
* **Comprobaciones que tienen en cuenta los plurales.** Con las reglas de plural de rails-i18n, [`missing` informa de las configuraciones regionales a las que les falta una forma CLDR](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md), como `few` y `many` en polaco.
* **Preparado para CI.** `missing`, `unused` y las demás comprobaciones terminan con estado 1 cuando encuentran problemas, y la gema incluye [plantillas de RSpec y Minitest](https://github.com/glebm/i18n-tasks/tree/main/templates) que hacen fallar tu suite de pruebas si hay claves faltantes o sin usar.
* **Mantenimiento de archivos.** [`normalize` ordena las claves](https://github.com/glebm/i18n-tasks#normalize) (y, con `-p`, las mueve a los archivos que asigna tu configuración), `mv` y `rm` renombran o eliminan claves en todas las configuraciones regionales, `find` muestra dónde se usa una clave y `check-consistent-interpolations` detecta un `%{count}` que se renombró o se perdió en la traducción.
* **Cinco backends de traducción.** [`translate-missing` funciona con Google Translate, DeepL, Yandex, OpenAI e IBM watsonx](https://github.com/glebm/i18n-tasks#translation-backends). Puedes [configurar los ID de glosario y las opciones de DeepL](https://github.com/glebm/i18n-tasks/blob/main/templates/config/i18n-tasks.yml), o bien el modelo de OpenAI (`gpt-4o-mini` de forma predeterminada), el prompt del sistema y un prompt por configuración regional. Los marcadores de posición `%{...}` se sustituyen por tokens antes del envío y se restauran después.
* **Gratuito.** Tiene [licencia MIT (versión 1.1.2)](https://rubygems.org/gems/i18n-tasks); pagas directamente a cada proveedor de traducción, normalmente por carácter o por token.

## Lo que i18n-tasks deja en tus manos

Este es el resultado de `missing` y `unused` en una pequeña aplicación Rails con archivos en inglés, polaco y español, en la que la vista de la bandeja de entrada usa una clave que nadie ha definido:

```text title="bundle exec i18n-tasks missing (excerpt)"
| Locale | Key                 | Value in other locales or source  |
|  all   | inbox.show.empty    | app/views/inbox/show.html.erb:3   |
|   es   | inbox.show.title    | en Inbox                          |
|   es   | inbox.show.unread   | en {"one" => "You have %{count} unread message.", ...} |
|   pl   | flash.saved         | en Saved.                         |
|   pl   | inbox.show.unread   | few, many                         |
```

```text title="bundle exec i18n-tasks unused"
| Locale | Key                 | Value    |
|   en   | inbox.show.archived | Archived |
```

Ese informe es preciso y útil. Cubrir los huecos es la parte del trabajo que sigue siendo cosa tuya:

* **El backend de Google envía valores de cadena.** En una ejecución con la llamada de red de ese backend simulada, `translate-missing es` envió los siguientes valores con los marcadores de posición enmascarados, sin las claves, el archivo ni la vista.

  ```text
  ["Inbox", "You have X__0 unread message.", "You have X__0 unread messages.", "Archived"]
  ```

* **Las formas plurales mantienen la estructura del inglés.** Para una clave en polaco que faltaba por completo, generó `one` y `other`, y la siguiente ejecución de `missing` señaló como pendientes `few, many`.

* **Los cambios en inglés no se vuelven a traducir.** [`translate-missing` rellena las claves que no existen en una configuración regional](https://github.com/glebm/i18n-tasks#translate-missing-keys). Si editas una cadena en inglés, las traducciones existentes no se modifican.

* **Una solicitud fallida a Google puede escribir archivos de todos modos.** Sin ninguna clave de API de Google configurada, `translate-missing --backend=google pl` advirtió de que el lote había fallado, indicó que había traducido dos claves, copió los valores en inglés en `pl.yml` y terminó con código 0. A partir de ahí, esas claves dejaron de aparecer en `missing`; solo `eq-base` (traducciones idénticas al origen) las mostraba.

## Dónde encaja General Translation

General Translation se encarga de generar las traducciones, mientras que i18n-tasks revisa los catálogos de Rails. Configura la CLI de `gt` para que apunte a tu archivo en inglés y ejecuta [`npx gt translate`](/docs/cli/reference/commands/translate) en CI. La CLI genera todas las configuraciones regionales de destino y, en ejecuciones posteriores, reutiliza las traducciones de las entradas que no han cambiado y vuelve a traducir aquellas cuyo texto en inglés se haya modificado. Cada ejecución aplica el [glosario y los prompts personalizados](/docs/platform/dashboard/guides/defining-context-for-translations) de tu proyecto, de modo que la terminología y el tono se mantienen coherentes en todos los archivos, y tu equipo puede [revisar y editar las traducciones](/docs/platform/dashboard/guides/reviewing-translations) en el panel de control.

Sigue usando i18n-tasks para analizar el código fuente en Ruby y validar los catálogos. Ejecuta la CLI de Node.js de General Translation para generar las traducciones y adapta el YAML resultante al formato de Rails, que usa la configuración regional como raíz, tal como se muestra en [General Translation vs. Rails I18n](/kb/general-translation-vs-rails-i18n). Usa ese flujo de trabajo con catálogos cuyas estructuras de claves de origen y de destino coincidan.

## i18n-tasks frente a General Translation de un vistazo

| Característica          | i18n-tasks                                                                   | General Translation                                                                                    |
| ----------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| Función                 | Analiza el código Ruby y detecta claves del catálogo que faltan o no se usan | Genera traducciones y las mantiene al día a medida que cambia el texto de origen                       |
| Validación de plurales  | Comprueba las categorías obligatorias de cada configuración regional         | Combina la generación con las comprobaciones de i18n-tasks                                             |
| Traducción automática   | `translate-missing`, mediante el proveedor que elijas                        | [`npx gt translate`](/docs/cli/reference/commands/translate)                                           |
| Contexto de traducción  | Depende del backend: DeepL acepta IDs de glosario y OpenAI acepta prompts    | El contenido y los metadatos de tu archivo, además del glosario y los prompts personalizados asignados |
| Cuando cambia el inglés | Las traducciones existentes no se modifican                                  | Las entradas modificadas se vuelven a traducir                                                         |
| Revisión                | Diff de Git                                                                  | Panel de control y diff de Git                                                                         |
| Costo                   | Gema gratuita; el proveedor cobra por carácter o por token                    | [Traducción basada en el uso](https://generaltranslation.com/pricing)                                  |

Elige solo i18n-tasks si los traductores escriben tus archivos de configuración regional y necesitas que la CI detecte claves faltantes o sin usar, o si solo quieres un borrador automático rápido para unas pocas cadenas. Usa General Translation si quieres que las traducciones se actualicen a medida que cambia el inglés, con una terminología coherente y revisión en el panel de control. Mantén i18n-tasks para analizar el código fuente de Rails y comprobar el catálogo.

## Uso de ambos en CI

Usa la configuración inicial del catálogo de inglés a español descrita en la [integración con Rails](/kb/general-translation-vs-rails-i18n). Ejecuta primero la traducción y el mapeo de configuraciones regionales y, a continuación, usa i18n-tasks para validar que las claves estén completas, así como las categorías de plural y los marcadores de posición:

```bash
npx gt translate
ruby script/export_rails_locales.rb                     # exporta los catálogos para Rails
bundle exec i18n-tasks missing                           # claves usadas en el código, incluidas las formas plurales
bundle exec i18n-tasks unused
bundle exec i18n-tasks check-consistent-interpolations   # %{name} coincide con el texto de origen
```

Cada comando de `i18n-tasks` termina con código de estado 1 si detecta un problema, de modo que el trabajo falla antes de que se fusione un archivo defectuoso. La CLI necesita un ID del proyecto y una clave de API con los permisos **Archivos &gt; Escritura** y **Cola de traducción &gt; Habilitada**, configurados como `GT_PROJECT_ID` y `GT_API_KEY`. (Consulta [Configurar la CLI](/docs/cli/guides/configuring#credentials)).

## Conclusiones clave

* i18n-tasks detecta claves faltantes, sin usar y con formas plurales incompletas en aplicaciones Rails.
* `translate-missing` rellena las claves faltantes, pero no modifica las traducciones existentes cuando editas el texto de origen en inglés.
* General Translation traduce archivos de configuración regional completos aplicando tu glosario y tus prompts personalizados, y los mantiene al día a medida que cambia el texto en inglés; ejecútalo antes de las comprobaciones de i18n-tasks dentro del mismo trabajo de CI.

## Related questions

- [General Translation vs. Rails I18n: ¿necesitas ambos?](https://generaltranslation.com/es/kb/general-translation-vs-rails-i18n.mdx): Rails I18n busca mensajes y da formato a fechas y números. General Translation genera las traducciones, las mantiene al día a medida que cambia tu texto en inglés y ofrece a tu equipo un panel de control para revisarlas. Usa ambos para publicar catálogos de Rails traducidos en cada lanzamiento.
- [General Translation vs. Mobility: ¿cuál deberías usar?](https://generaltranslation.com/es/kb/general-translation-vs-mobility.mdx): Mobility almacena los atributos traducidos de los modelos en tu base de datos. General Translation genera esas traducciones a través de su API, usando tu glosario y tus prompts personalizados. Usa ambos para traducir fichas de productos, publicaciones y otro contenido de la base de datos sin renunciar a tus modelos de Rails.
- [Alternativas a Google Translate: General Translation vs. Google Translate](https://generaltranslation.com/es/kb/general-translation-vs-google-translate.mdx): Google Translate es una forma rápida de traducir textos puntuales, pero lanzar un producto en otro idioma también exige traducir cada cadena en su contexto, mantener una terminología coherente, gestionar correctamente las variables y los plurales, revisar las traducciones y contar con un proceso de lanzamiento. General Translation entiende el contexto de cada cadena en tu código y automatiza todo el flujo de trabajo de localización, desde el código hasta la revisión y cada lanzamiento.
- [¿Por qué usar General Translation en lugar de un TMS (Smartling, Lokalise, Phrase, Crowdin o Transifex)?](https://generaltranslation.com/es/kb/general-translation-vs-tms.mdx): Un sistema de gestión de traducciones (TMS) como Smartling, Lokalise, Phrase, Crowdin o Transifex coordina a los traductores, pero los ingenieros siguen teniendo que extraer las cadenas, enviarlas, esperar las traducciones y volver a integrarlas en el producto. General Translation traduce el contenido de tu código junto con su contexto, incluye todos los idiomas en cada lanzamiento y funciona con bibliotecas de código abierto, sin dependencia de proveedor.
- [¿Cuál es el mejor software de localización para desarrolladores?](https://generaltranslation.com/es/kb/best-localization-software.mdx): Busca un único sistema que cubra todo el flujo, desde la biblioteca de i18n en tu código hasta la traducción y la entrega, en lugar de ir uniendo por separado una biblioteca, un sistema de gestión de traducciones y un proveedor de traducción.

## Previous and next questions

- Previous question: [General Translation frente al framework de traducción de Django: ¿necesitas ambos?](https://generaltranslation.com/es/kb/general-translation-vs-django-i18n.mdx)
- Next question: [General Translation vs. i18next, react-intl y next-intl: ¿qué biblioteca de i18n deberías usar?](https://generaltranslation.com/es/kb/general-translation-vs-i18n-libraries.mdx)

## Sitemap

See the [Knowledge Base sitemap](https://generaltranslation.com/es/kb/sitemap.md) for every article.
