¿Cuál es la mejor manera de obtener (y escribir) programáticamente cadenas de texto personalizadas para traducciones?

He usado la interfaz de administración web para cambiar bastantes cadenas de Discourse. Por conveniencia[1], he ignorado las versiones no inglesas. Esto significa, por supuesto, que están desincronizadas.

En Fedora, usamos Weblate para traducciones impulsadas por la comunidad. (Ver https://translate.fedoraproject.org/). Me encantaría conectarlo, idealmente para que haya un flujo de trabajo completamente automático donde cuando se actualiza una cadena en inglés a través de la interfaz de administración, se envía a Weblate, y cuando hay una traducción, regresa.

¿Cuál es la mejor manera de lograr esto?


  1. pereza ↩︎

2 Me gusta

Implementar una integración usando nuestra API donde usted:

  • Consultaría Discourse para obtener nuevas sustituciones (sin webhooks)
  • Enviaría nuevas traducciones de Weblate a su sitio de Discourse.

Ese es el resumen preliminar. Estamos investigando cómo cuantificar las limitaciones existentes, ya que nuestra API actual solo devuelve una cantidad fija de sustituciones de traducción. Lo que significa que necesitaríamos hacer cambios en ese endpoint de la API para que funcione.

1 me gusta

La sondeo parece estar bien — la traducción no será instantánea de todos modos. Pero, ¿la cosa del sondeo necesita hacer un seguimiento de alguna manera? Es bueno cuando puede ser sin estado…

2 Me gusta

No es necesario realizar un seguimiento de nada en su sitio. Debería poder implementarlo sin estado.

  • Para sondeos, necesita enviar una solicitud GET a la siguiente ruta en su sitio:
    /admin/customize/site_texts.json?locale=en&overridden=true&page=0

Ajuste el parámetro locale según sus necesidades. La API devuelve hasta 50 resultados y admite paginación (parámetro page).
El JSON incluirá { "extras" : { "has_more" : true } } cuando haya más resultados.

  • Actualizar una traducción anulada funciona enviando una solicitud PUT a la siguiente ruta:
    /admin/customize/site_texts/<id>

Reemplace <id> con el ID de la cadena que desea traducir, por ejemplo, “js.user.username.instructions”.

La carga útil de la solicitud PUT debe ser datos de formulario (Content-Type: application/x-www-form-urlencoded; charset=UTF-8) y debe incluir los siguientes atributos:

  • site_text[value]: la traducción
  • site_text[locale]: la configuración regional, por ejemplo, “en”

Esencialmente, necesita usar las mismas llamadas a la API que utiliza la interfaz de administración Customize Text.

4 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.