Einige Website-Texte können nicht angepasst werden

@sam, danke für deine Antwort. Ich habe drei Discourse-Instanzen mit verschiedenen Methoden bereitgestellt, und alle weisen dasselbe Problem auf, was mich zu der Annahme veranlasst, dass es sich nicht um ein Installationsproblem handelt.

Bei erneuter Prüfung meiner Plugins stellte ich fest, dass eines davon eine Locale-Datei (plugins/XXXX/config/locales/client.en.yml) mit folgendem Inhalt erstellt hatte:

en:
   js:

Das Löschen dieser Datei hat das Problem behoben. Nach einer kurzen Untersuchung der I18n-Implementierung stellte ich fest, dass deep_merge zum Zusammenführen von Übersetzungen während des Ladens verwendet wird:

    # File activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/simple.rb, line 31
31:         def store_translations(locale, data, options = {})
32:           locale = locale.to_sym
33:           translations[locale] ||= {}
34:           data = data.deep_symbolize_keys
35:           translations[locale].deep_merge!(data)
36:         end

Das obige YAML wird geparst als:

{"en": {"js": null}}

Dies führt nach dem Zusammenführen zum Löschen des gesamten Inhalts unter dem Schlüssel en.js. Als Plugin-Entwickler verstehe ich, dass dieses Problem von meinem eigenen Programmierfehler herrührt und ich die volle Verantwortung dafür trage. Ich glaube jedoch, dass Discourse von zusätzlichen Prüfungen profitieren könnte, um vor solchen Vorkommnissen zu warnen, insbesondere da Discourse bereits ein Design zur Überprüfung von Locale-Dateien hat, wie hier zu sehen ist here.

4 „Gefällt mir“