📤 Push Translations (subir traducciones)
Archivo: agentes/marketing/push-translations.ts · Plist: _(ninguno)_ · Horario: Manual / one-shot (tras pregenerate-translations.ts y con scope write_translations)
Qué hace
Sube a Shopify las traducciones pre-generadas (data/translations/*.json) usando la mutation GraphQL translationsRegister. Para cada producto e idioma (de/fr/en) registra la traducción de title y body_html. REQUIERE que el access token tenga el scope write_translations. Resuelve el issue de Merchant language_mismatch una vez Google re-crawlea.
Cómo funciona
1. Carga .env y lista los JSON de data/translations/.
2. Por producto e idioma con datos: getDigests() consulta vía GraphQL los digest actuales del contenido traducible (Shopify exige el digest para registrar la traducción).
3. pushTranslations() construye los TranslationInput (title/body con su digest y locale) y ejecuta la mutation translationsRegister.
4. Cuenta ok/fallidas con throttle 250ms; imprime resumen.
Datos/APIs
- Shopify Admin GraphQL API (
2024-10):translatableResource(digests) +translationsRegister. Scope requerido:write_translations. - Vars .env:
SHOPIFY_STORE,SHOPIFY_ACCESS_TOKEN. - Entrada:
data/translations/*.json(producidos porpregenerate-translations.ts).
Cómo probarlo
cd /Users/user/rifai-agents && npx tsx agentes/marketing/push-translations.ts
Espera: "Pushing N productos × 3 idiomas" y un resumen X traducciones subidas · Y fallidas. Si el token no tiene write_translations, las mutations devuelven userErrors y todo cuenta como fallido. Escribe traducciones reales en Shopify.
Si se rompe / recuperar
- Sin plist. Pre-requisito: haber corrido
pregenerate-translations.tsy tener el scopewrite_translationsen la OAuth app. - Si todo falla con userErrors → casi seguro falta el scope (reinstalar app con el scope vía
install.ts). - Logs: stdout (redirigir a
/Users/user/rifai-agents/logs/push-translations.log).
Cómo replicarlo
- Lectura de los JSON de traducción.
- Patrón obligado de Shopify: leer
digestde cada campo traducible antes de registrar. - mutation
translationsRegisterpor producto/idioma con throttle.