Traducir un catálogo
Un catálogo de diez mil productos no se puede traducir uno por uno sin que alguien renuncie a la mitad del camino. El endpoint de Traducción de Catálogos recibe un feed de productos estructurado completo y devuelve cada título, descripción y atributo localizado, en un solo trabajo con un solo task_id, pensado para la escala real del e-commerce.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
El problema de traducir un catálogo a mano
Una herramienta de traducción genérica espera un párrafo, no una hoja de cálculo con un campo de título, otro de descripción, un atributo de talla y una lista de materiales repetida en diez mil filas. Hacerlo por una interfaz de texto por texto significa diez mil solicitudes, diez mil oportunidades de descuadrar un ítem con su fila de origen, y un proyecto que en la práctica nunca termina a tiempo. Este endpoint está construido para comerciantes, marketplaces y marcas que venden directo al consumidor y necesitan localizar un feed entero como unidad, no frase por frase.
Cómo se estructura el trabajo
Envía el catálogo como ítems estructurados, cada uno con sus campos, y el idioma o país destino; la tarea corre de forma asíncrona y devuelve un task_id de inmediato, porque un trabajo de este tamaño nunca es instantáneo. Al completarse, recibe la misma estructura con los campos traducibles de cada ítem localizados y cada ítem todavía enlazado a su identificador original, así que reimportarlo a su base de productos o PIM es un simple mapeo, no una reconciliación manual.
Por qué localizar catálogos es una disciplina aparte
Los catálogos de producto tienen restricciones que un texto normal no tiene: una entrada de tabla de tallas debe seguir siendo una entrada de tabla de tallas, un atributo enlazado a un SKU debe seguir siendo legible por máquina, y por lo general el nombre de marca no debería traducirse. Los marketplaces que se expandieron a nuevos países aprendieron esto de la manera difícil hace años, cuando traducir de forma literal atributos estructurados rompió filtros y facetas de búsqueda en la tienda. Este endpoint trata la estructura como una restricción de primer nivel, no como un añadido improvisado sobre un traductor de texto plano.
Cómo encaja en un flujo de catálogo
Como el resultado llega por webhook firmado, un montaje típico exporta los SKU nuevos o modificados del día, los envía como un solo trabajo, y deja que el webhook deposite el feed localizado directo en una tabla de staging para revisión antes de publicarlo en la tienda del mercado destino. Los catálogos grandes que se actualizan a diario pueden correr esto como un trabajo programado en lugar de una migración única, manteniendo cada catálogo por idioma sincronizado con el original sin que un traductor reescriba a mano cada listado nuevo.
Lo que sigue siendo decisión humana
El tono de marca, los avisos legales que exige un mercado específico y la taxonomía de categorías todavía merecen el criterio de una persona antes de publicar un catálogo traducido. Lo que este endpoint elimina es el cuello de botella mecánico: convertir diez mil ítems estructurados en diez mil localizados sin que un traductor vuelva a escribir el mismo nombre de campo nueve mil novecientas noventa y nueve veces más.
Qué puede hacer con ella
Expansión a un marketplace
Un vendedor que entra a un país nuevo envía su catálogo completo de 8.000 SKU como un solo trabajo y recibe cada título y descripción localizados, listos para importar antes del lanzamiento de la tienda.
Sincronización diaria del catálogo
Una tienda en línea corre un trabajo programado cada noche que envía solo los productos nuevos o editados, manteniendo la tienda traducida al día sin volver a traducir lo que no cambió.
Traducción de atributos y variantes
Una marca de moda localiza los atributos de talla, color y material de su catálogo mientras mantiene intactos los identificadores de SKU para el cruce de inventario.
Un mismo feed para varios mercados
Una marca que vende en cuatro países envía el mismo catálogo de origen cuatro veces, una por idioma, y combina los cuatro feeds localizados en su PIM multirregión.
Preguntas frecuentes
¿Cuántos productos puedo enviar en un solo trabajo?
El endpoint está pensado para feeds estructurados grandes, comúnmente de miles de ítems; los catálogos muy grandes se pueden dividir en varios trabajos enviados en paralelo si se prefiere.
¿La API de traducción de catálogos es gratis?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Se modifican mis identificadores de producto o SKU?
No, los identificadores pasan sin tocarse; solo se localizan los campos traducibles que especifique, como títulos, descripciones y atributos de texto.
¿Cuánto tarda un catálogo grande?
Corre de forma asíncrona y la duración escala con la cantidad de ítems; recibe un task_id de inmediato y el resultado llega por webhook o enlace firmado cuando el trabajo termina, no mediante una llamada bloqueante.
¿Puedo traducir a varios idiomas a la vez?
Cada trabajo apunta a un idioma; para varios mercados destino, envíe el mismo catálogo como trabajos separados, uno por idioma, que pueden correr en paralelo.
¿En qué formato debe estar el catálogo?
Envíe los ítems estructurados con sus campos identificados en lugar de un bloque de texto plano, porque el endpoint mapea cada campo por separado para preservar la estructura del producto al devolverlo.
¿Qué pasa si algunos ítems fallan?
El sistema reintenta automáticamente un ítem fallido hasta tres veces; si sigue sin poder procesarlo, recibe un error claro para ese ítem y nunca se cobra.
¿Mis datos de catálogo se guardan o se usan para entrenar modelos?
No. Sus datos se procesan para entregar el resultado y se eliminan después del período de retención; nunca se usan para entrenar modelos.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/translate/catalog \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/translate/catalog", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/translate/catalog",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/translate/catalog", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/translate/catalog", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"items": [
"valor-1",
"valor-2"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "translate.catalog",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_tokens | 20000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |