Admin -> Personalizar -> Texto se comportando mal

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.

4 curtidas