Questo si verifica quando esiste una sovrascrittura di traduzione per una chiave che in precedenza era una stringa traducibile, ma che è stata successivamente convertita in un Hash. Questo è esattamente ciò che è accaduto con chatbot.prompt.system.
Questo sembra una regressione. Sono abbastanza sicuro che in passato funzionasse.
Posso riprodurre facilmente questo problema con un file di localizzazione come questo:
en:
foo: "this is foo"
Vai su Personalizza → Testo e sovrascrivi “foo” con un valore diverso.
Quindi, modifica il file di localizzazione in modo che sia simile a questo:
en:
foo:
basic: "Basic Foo"
advanced: "Advanced Foo"
Visita di nuovo Personalizza → Testo e cerca “foo”. Discourse registrerà il seguente errore.
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 non dovrebbe caricare le sovrascritture di traduzione se non esiste una stringa inglese corrispondente.