Админ -> Настроить -> Текст ведёт себя некорректно

Это происходит, когда существует переопределение перевода для ключа, который ранее был переводимой строкой, но позже был преобразован в хэш. Именно это произошло с 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 не должен загружать переопределения переводов, если нет соответствующей английской строки.

4 лайка