Was ist der beste Weg, um benutzerdefinierte Textzeichenfolgen programmatisch für Übersetzungen abzurufen (und zu schreiben)?

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.

Was ist der beste Weg, dies zu erreichen?


  1. Faulheit. ↩︎

2 „Gefällt mir“

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.

1 „Gefällt mir“

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…

2 „Gefällt mir“

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.

4 „Gefällt mir“

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