Ich habe die Web-Admin-Oberfläche verwendet, um einige Discourse-Strings zu ändern. Aus Bequemlichkeit[1] habe ich die nicht-englischen Versionen ignoriert. Das bedeutet natürlich, dass sie nicht synchron sind.
In Fedora verwenden wir Weblate für gemeinschaftsbasierte Übersetzungen. (Siehe https://translate.fedoraproject.org/). Ich würde das gerne einrichten, idealerweise mit einem vollständig automatischen Workflow, bei dem jede Änderung eines Strings im Englischen über die Admin-Oberfläche an Weblate gesendet wird und bei jeder Übersetzung eine Rückmeldung erfolgt.
Implementieren Sie eine Integration mit unserer API, bei der Sie:
Fragen Sie Discourse nach neuen Overrides ab (keine Webhooks)
Pushen Sie neue Übersetzungen von Weblate auf Ihre Discourse-Site.
Das ist die vorläufige Zusammenfassung. Wir untersuchen die vorhandenen Einschränkungen, da unsere aktuelle API nur eine feste Menge an Übersetzung-Overrides zurückgibt. Das bedeutet, dass wir Änderungen an diesem API-Endpunkt vornehmen müssten, damit er funktioniert.
Das Abfragen scheint in Ordnung zu sein – die Übersetzung wird sowieso nicht sofort erfolgen. Aber muss das Abfrage-Ding irgendwie den Zustand speichern? Es ist schön, wenn es zustandslos sein kann…
Sie müssen nichts auf Ihrer Website verfolgen. Sie sollten in der Lage sein, sie zustandslos zu implementieren.
Für das Abfragen müssen Sie eine GET-Anfrage an den folgenden Pfad auf Ihrer Website senden: /admin/customize/site_texts.json?locale=en&overridden=true&page=0
Passen Sie den locale-Parameter nach Ihren Bedürfnissen an. Die API gibt bis zu 50 Ergebnisse zurück und unterstützt Paginierung (page-Parameter).
Das JSON enthält { "extras" : { "has_more" : true } }, wenn weitere Ergebnisse vorhanden sind.
Das Aktualisieren einer Überschreibungsübersetzung erfolgt durch Senden einer PUT-Anfrage an den folgenden Pfad: /admin/customize/site_texts/<id>
Ersetzen Sie <id> durch die ID des Strings, den Sie übersetzen möchten, z. B. „js.user.username.instructions“.
Die Nutzlast der PUT-Anfrage muss Formulardaten sein (Content-Type: application/x-www-form-urlencoded; charset=UTF-8) und muss die folgenden Attribute enthalten:
site_text[value]: die Übersetzung
site_text[locale]: das Gebietsschema, z. B. „en“
Im Wesentlichen müssen Sie dieselben API-Aufrufe verwenden, die die Admin-Oberfläche „Customize Text“ verwendet.