Isso acontece quando há uma substituição de tradução para uma chave que anteriormente era uma string traduzível, mas foi convertida em um Hash posteriormente. É exatamente isso que aconteceu com chatbot.prompt.system.
Isso parece uma regressão. Tenho certeza de que isso funcionava no passado.
Posso reproduzir isso facilmente com um arquivo de localidade como este:
en:
foo: "this is foo"
Vá para Customize –> Text e substitua “foo” por um valor diferente.
Em seguida, altere o arquivo de localidade para que fique assim:
en:
foo:
basic: "Basic Foo"
advanced: "Advanced Foo"
Visite Customize –> Text novamente e procure por “foo”. O Discourse registrará o seguinte erro.
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'
O Discourse não deve carregar substituições de tradução se não houver uma string em inglês correspondente.