관리자 -> 사용자 지정 -> 텍스트 동작 오류

이 문제는 이전에 번역 가능한 문자열이었던 키에 번역 오버라이드가 존재하지만, 나중에 Hash로 변환된 경우 발생합니다. chatbot.prompt.system의 경우에도 정확히 이런 일이 발생했습니다.

이것은 회귀(regression)로 보입니다. 과거에는 이 기능이 정상적으로 작동했던 것으로 확신합니다.

다음과 같은 로케일 파일로 이를 쉽게 재현할 수 있습니다:

en:
  foo: "this is foo"

Customize → Text로 이동하여 "foo"를 다른 값으로 오버라이드하세요.

그런 다음 로케일 파일을 다음과 같이 변경하세요:

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개의 좋아요