← Volver al catálogo

📤 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 por pregenerate-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.ts y tener el scope write_translations en 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 digest de cada campo traducible antes de registrar.
  • mutation translationsRegister por producto/idioma con throttle.