サイトのテキストの一部をカスタマイズできません

@sam、ご返信ありがとうございます。異なる方法で3つのDiscourseインスタンスをデプロイしましたが、すべて同じ問題が発生するため、インストールに問題があるとは考えていません。

プラグインを再確認したところ、そのうちの1つがロケールファイル(plugins/XXXX/config/locales/client.en.yml)を作成しており、その内容は以下のとおりでした。

en:
   js:

このファイルを削除したところ、問題は解決しました。I18nの実装について簡単に調査したところ、ロード中に翻訳をマージするためにdeep_mergeが使用されていることがわかりました。

    # File activesupport/lib/active_support/vendor/i18n-0.4.1/i18n/backend/simple.rb, line 31
31:         def store_translations(locale, data, options = {})
32:           locale = locale.to_sym
33:           translations[locale] ||= {}
34:           data = data.deep_symbolize_keys
35:           translations[locale].deep_merge!(data)
36:         end

上記のYAMLは次のように解析されます。

{"en": {"js": null}}

これにより、マージ後にen.jsキーの下のコンテンツ全体が削除されます。プラグイン開発者として、この問題は私自身のコーディングエラーに起因するものであり、その責任はすべて私にあることを理解しています。しかし、Discourseには、特にDiscourseがすでにロケールファイルを検査するための設計(こちらで見られるように)を持っていることを考慮すると、このような発生に対して警告するための追加チェックから恩恵を受けることができると信じています。

「いいね!」 4