Это происходит, когда существует переопределение перевода для ключа, который ранее был переводимой строкой, но позже был преобразован в хэш. Именно это произошло с chatbot.prompt.system.
Кажется, это регрессия. Я почти уверен, что раньше это работало.
Я могу легко воспроизвести это с помощью файла локализации, подобного этому:
en:
foo: "this is foo"
Перейдите в Настройки —> Текст и переопределите значение “foo” на другое.
Затем измените файл локализации так:
en:
foo:
basic: "Basic Foo"
advanced: "Advanced Foo"
Снова откройте Настройки —> Текст и выполните поиск по “foo”. Discourse запишет следующую ошибку:
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 не должен загружать переопределения переводов, если нет соответствующей английской строки.