Dies geschieht, wenn es eine Übersetzung-Überschreibung für einen Schlüssel gibt, der zuvor eine übersetzbare Zeichenfolge war, aber später in einen Hash konvertiert wurde. Genau das ist mit chatbot.prompt.system passiert.
Dies scheint ein Rückschritt zu sein. Ich bin ziemlich sicher, dass dies in der Vergangenheit funktioniert hat.
Ich kann dies leicht mit einer Locale-Datei wie dieser reproduzieren:
en:
foo: "this is foo"
Gehen Sie zu Anpassen → Text und überschreiben Sie “foo” mit einem anderen Wert.
Ändern Sie dann die Locale-Datei wie folgt:
en:
foo:
basic: "Basic Foo"
advanced: "Advanced Foo"
Besuchen Sie Anpassen → Text erneut und suchen Sie nach “foo”. Discourse wird den folgenden Fehler protokollieren.
NoMethodError (undefined method `scan' for {:basic=>"Basic Foo", :advanced=>"Advanced Foo"}:Hash)
lib/i18n/i18n_interpolation_keys_finder.rb:6:in `find'
app/controllers/admin/site_texts_controller.rb:183:in `record_for'
app/controllers/admin/site_texts_controller.rb:249:in `block in find_translations'
app/controllers/admin/site_texts_controller.rb:234:in `each'
app/controllers/admin/site_texts_controller.rb:234:in `find_translations'
app/controllers/admin/site_texts_controller.rb:34:in `index'
Discourse sollte keine Übersetzung-Überschreibungen laden, wenn keine entsprechende englische Zeichenfolge vorhanden ist.