Cela se produit lorsqu’il existe une substitution de traduction pour une clé qui était auparavant une chaîne traduisible, mais qui a été convertie en Hash ultérieurement. C’est exactement ce qui s’est produit avec chatbot.prompt.system.
Cela semble être une régression. Je suis à peu près sûr que cela fonctionnait auparavant.
Je peux facilement reproduire cela avec un fichier de locale comme celui-ci :
en:
foo: "this is foo"
Allez dans Personnaliser –> Texte et remplacez “foo” par une valeur différente.
Ensuite, modifiez le fichier de locale pour qu’il ressemble à ceci :
en:
foo:
basic: "Basic Foo"
advanced: "Advanced Foo"
Visitez à nouveau Personnaliser –> Texte et recherchez “foo”. Discourse enregistrera l’erreur suivante.
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 ne devrait pas charger les substitutions de traduction s’il n’y a pas de chaîne anglaise correspondante.