Qual è il modo migliore per recuperare (e scrivere) programmaticamente stringhe di testo personalizzate per le traduzioni?

Ho usato l’interfaccia di amministrazione web per modificare diverse stringhe di Discourse. Per comodità[1] ho ignorato le versioni non inglesi. Ciò significa, ovviamente, che sono fuori sincronia.

In Fedora, utilizziamo Weblate per le traduzioni guidate dalla community. (Vedi https://translate.fedoraproject.org/). Mi piacerebbe collegarlo, idealmente in modo che ci sia un flusso di lavoro interamente automatico in cui, quando una stringa viene aggiornata in inglese tramite l’interfaccia di amministrazione, viene inviata a Weblate e, quando c’è una traduzione, ritorna.

Qual è il modo migliore per realizzarlo?


  1. pigrizia. ↩︎

2 Mi Piace

Implementazione di un’integrazione utilizzando la nostra API in cui si dovrebbe:

  • Effettuare il polling di Discourse per nuove sovrascritture (nessun webhook)
  • Inserire nuove traduzioni da Weblate nel tuo sito Discourse.

Questo è il riepilogo preliminare. Stiamo esaminando la quantificazione delle limitazioni esistenti, poiché la nostra API attuale restituisce solo una quantità fissa di sovrascritture di traduzione. Ciò significa che dovremmo apportare modifiche a tale endpoint API per farlo funzionare.

1 Mi Piace

Il polling sembra a posto — la traduzione non sarà comunque istantanea. Ma il coso del polling deve tenere traccia in qualche modo? È bello quando può essere stateless…

2 Mi Piace

Non c’è bisogno di tenere traccia di nulla sul tuo sito. Dovresti essere in grado di implementarlo stateless.

  • Per il polling, devi inviare una richiesta GET al seguente percorso sul tuo sito:
    /admin/customize/site_texts.json?locale=en&overridden=true&page=0

    Regola il parametro locale in base alle tue esigenze. L’API restituisce fino a 50 risultati e supporta la paginazione (parametro page).
    Il JSON includerà { "extras" : { "has_more" : true } } quando ci sono più risultati.

  • L’aggiornamento di un override di traduzione funziona inviando una richiesta PUT al seguente percorso:
    /admin/customize/site_texts/<id>

    Sostituisci <id> con l’ID della stringa che vuoi tradurre, ad esempio “js.user.username.instructions”.

    Il payload della richiesta PUT deve essere form data (Content-Type: application/x-www-form-urlencoded; charset=UTF-8) e deve includere i seguenti attributi:

    • site_text[value]: la traduzione
    • site_text[locale]: la locale, ad esempio “en”

    Essenzialmente, devi utilizzare le stesse chiamate API che utilizza l’interfaccia di amministrazione Customize Text.

4 Mi Piace

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