管理员 - 自定义 - 文本表现不佳

当一个键的翻译被覆盖,而该键以前是可翻译字符串,后来被转换为 Hash 时,就会发生这种情况。这正是 chatbot.prompt.system 所发生的情况。

这似乎是一个回归。我很确定过去这样做是有效的。

我可以用一个像这样的 locale 文件轻松重现它:

en:
  foo: "this is foo"

转到 Customize –> Text 并用不同的值覆盖“foo”。

然后,将 locale 文件更改为如下所示:

en:
  foo:
    basic: "Basic Foo"
    advanced: "Advanced Foo"

再次访问 Customize –> Text 并搜索“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 个赞