16 de octubre de 2026 · API de idioma y localización · 6 minutos de lectura
Dirijo este sitio y su proyecto hermano en siete idiomas. En este momento son 7.206 archivos HTML traducidos en vivo en el disco entre los dos, no un push de una sola vez, una canalización continua que traduce nuevas páginas a medida que se escriben. Nunca he pagado un centavo por una API de traducción para hacerlo. Luego, una noche de agosto, la ruta gratuita en la que la construí hizo que Google prohibiera la IP de mi servidor durante 19 horas, y tuve que sentarme y fijar el precio de lo que costaría la versión honesta de esto.
Ambos sitios utilizan deep_translator o GoogleTranslator clase, que no llama a la API de traducción de Google Cloud pagada y con clave, sino que raspa translate.googleapis.com, el mismo punto de conexión que utiliza la página web gratuita translate.google.com. Sin clave API, sin panel de control de cuotas, sin SLA. Es gratis porque Google nunca aceptó vendértelo a ese precio; solo estás usando el backend de la página del consumidor directamente.
Eso funcionó bien durante meses. Luego, el 24 de agosto a las 19:56, todas las llamadas comenzaron a TranslationNotFound. Corrí un directo curl contra el mismo punto final y recuperó un HTTP 429: "Lo sentimos... su ordenador o red puede estar enviando consultas automatizadas." No es una interrupción de Google, un bloqueo antibot en nuestra IP específica, casi con toda seguridad ganado por nuestro propio volumen (trabajos por lotes por hora que traducen cientos de páginas en 29 ranuras de idiomas que admitimos internamente, 7 de los cuales son en vivo). Tardó aproximadamente 19 horas en despejarse.
Esta es la parte que realmente me preocupó una vez que la encontré. La función que envuelve la llamada del traductor se escribió para volver a intentarlo tres veces, luego darse por vencido y devolver el cadena original en inglés -- mientras la persona que llama aún registra la página como traducida correctamente. Eso significa que durante 19 horas, cualquier página nueva construida durante el bloque habría enviado silenciosamente texto en inglés dentro de una página alemana o japonesa, con señal de error cero en cualquier lugar. Una interrupción que se puede ver es un inconveniente. Una interrupción que informa el éxito mientras miente sobre el resultado es la que realmente daña la credibilidad de un sitio multilingüe, y lo habría seguido haciendo indefinidamente si no hubiera ido a buscar.
La solución era añadir MyMemoryTranslator -- también gratis, también desde deep_translator -- como una alternativa dentro de la misma función. Cuando el raspador de Google agota sus reintentos, MyMemory se prueba antes de darse por vencido. Necesita códigos con formato local (de-DEJefa, no tiene idea de), que es algo fácil de pasar por alto y obtener silenciosamente cero resultados si no lo mapeas por idioma.
Medí nuestra huella real en vivo para responder eso correctamente, en lugar de adivinar: 7.206 páginas traducidas en los siete idiomas en vivo de los dos sitios (español, alemán, francés, portugués, ruso, japonés, italiano), despojadas de marcado, llegan a aproximadamente 39 millones de caracteres de texto real visible. Con un precio a la tarifa actual publicada por personaje de cada proveedor para un pase único sobre esa instantánea exacta:
| Proveedor | Tasa | Coste de nuestros 39 MILLONES DE CARACTERES |
|---|---|---|
| Azure Translator | $ 10 / millones de caracteres | $390 |
| Amazon Translate | $ 15 / millones de caracteres | 585 |
| Traducción de Google Cloud (pagada, oficial) | $ 20 / millones de caracteres | 780 USD |
| DeepL API, plan de crecimiento | $ 27.50/millón + $ 26/mes base | ≈ $ 1,073+ |
Ninguno de esos números es grande para una empresa. Tampoco son nada para un proyecto paralelo y, lo que es más importante, se repetirían cada vez que el sitio agregue suficiente contenido nuevo para necesitar otro pase de traducción, lo que, dado que publicamos diariamente, está más cerca de una factura mensual que de una única. A nuestra tasa de publicación real, que es de $ 50-150/mes, dependiendo del proveedor, para siempre, por algo que el raspador gratuito hace a $ 0, siempre y cuando se mantenga por debajo del volumen que dispare el bloque de IP.
I want to be specific about where the free route actually ends, because "just use the free fallback" isn't a real substitute for a paid API at our scale. MyMemory's anonymous free tier caps out around 5,000 words a day. That's enough to absorb an occasional Google block without anyone noticing. It is nowhere close to enough to translate 7,200+ pages as a primary method -- it would take weeks to get through a backlog that size, assuming the quota resets reliably. It only works in our pipeline because it catches a rare failure window, not because it's a real alternative to GoogleTranslator, let alone to a paid vendor.
While I was in there fixing the outage, a routine audit turned up a translation quality bug that had nothing to do with the 429 block: our German UI's "Share:" label had been translated as "Aktie:" -- which means stock or equity share, not share-this-link -- across 326 pages from an older batch. Italian had the infinitive "Condividere:" instead of the correct imperative "Condividi:" on 330 pages; Russian had the same infinitive/imperative mix-up on 324; French was missing a required space before the colon on 325. All four are the kind of mistake a native speaker catches in two seconds and a generic MT engine, free or paid, just doesn't reliably avoid on short UI strings. I hand-fixed all four directly rather than re-running any translator on them -- for short, high-visibility microcopy like a Share button label, writing the correct phrase once in each language is faster and more reliable than trusting any engine, including the paid ones I priced above.
I'm keeping the free scraper-plus-fallback setup. At $0 against a realistic $50-150/month, the math still favors it, and the visible-failure fix means a future block degrades to "slower" instead of "silently wrong." But I'm treating the 19-hour block as a warning shot, not a one-off: if it starts recurring weekly instead of once every couple of months, the honest move is paying for Azure Translator at roughly $390 for our current backlog and a small monthly trickle after that, not finding a third free workaround. Free infrastructure that depends on an unofficial endpoint not noticing you is a cost you're deferring, not one you've eliminated -- and the day it stops working for good is not a day you want to be choosing a vendor under pressure.
¿Es nuevo en los precios de API basados en el uso en general? Comience con el guías gratuitas de costos de API.
Despliéguelo usted mismo: DigitalOcean — $200 de crédito gratis ↗ · VPS Hostinger ↗
Recuentos de páginas/caracteres medidos directamente contra nuestro propio árbol de archivos en vivo, 2026-10-16. Las tarifas de los proveedores provienen de la página de precios actual de cada proveedor (Azure, Amazon, Google Cloud, DeepL), las cifras de referencia no son cotizaciones en vivo: confirme los términos actuales directamente con cada proveedor antes de presupuestar.