Amministratore -> Personalizza -> Testo che si comporta male

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.

4 Mi Piace