非英語のグループ名がグループメッセージでエラー500を引き起こす

Discourse のデフォルト言語を日本語に設定しました。
すると、いくつかのデフォルトのグループ名が日本語に変換され、グループの URL(スラッグ)も日本語になっています。

例えば、スタッフグループの URL は /g/スタッフ です。
スタッフのアクティビティページの URL は /g/スタッフ/activity/posts です。

また、英語以外の名前のグループは、グループメッセージページ /g/スタッフ/messages にアクセスできません。
これらのページにアクセスしようとすると、「Server Error 500」のエラーメッセージが表示されます。

カスタマイズテキストページでこれらのテキストを探してみましたが、カスタマイズできないようです。

これはバグのようです。言語を英語に戻してページをリフレッシュしても、非英語のグループ名は依然として日本語のまま残っています。

2 つの質問があります:

  1. 非英語のグループにおけるグループメッセージのエラーを修正することは可能でしょうか?

  2. Discourse は非英語のグループ名を許可していない我认为。では、これらの名前を英語に戻すにはどうすればよいでしょうか?

追記:最新版にアップデートし、アプリを再構築しましたが、問題は解消されませんでした。

「いいね!」 1

最新の Discourse バージョンでは、この現象を再現できませんでした。:thinking:

ロケールを英語に更新すると、EnsureDbConsistency というスケジュールジョブを通じて、12 時間以内にグループ名が自動的に “staff” に更新されます。

「いいね!」 2

迅速なご返信をありがとうございます。 :grinning:

以下はエラーログに表示されたエラーです。 :thinking:

ActionController::UrlGenerationError (No route matches {:action=>\"private_messages_group\", :controller=>\"list\", :format=>\"json\", :group_name=>\"トラストレベル0\", :page=>1, :topic_ids=>nil, :username=>\"admin\"}

ActionController::UrlGenerationError (No route matches {:action=>\"private_messages_group\", :controller=>\"list\", :format=>\"json\", :group_name=>\"スタッフ\", :page=>1, :topic_ids=>nil, :username=>\"admin\"}, po

ActionController::UrlGenerationError (No route matches {:action=>\"private_messages_group\", :controller=>\"list\", :format=>\"json\", :group_name=>\"管理者\", :page=>1, :topic_ids=>nil, :username=>\"admin\"}, pos

ActionController::UrlGenerationError (No route matches {:action=>\"private_messages_group_archive\", :controller=>\"list\", :format=>\"json\", :group_name=>\"管理者\", :page=>1, :topic_ids=>nil, :username=>\"admi

詳細:

\"Info\"
  • ActionController::UrlGenerationError (No route matches {:action=>"private_messages_group", :controller=>"list", :format=>"json", :group_name=>"管理者", :page=>1, :topic_ids=>nil, :username=>"admin"}, possible unmatched constraints: [:group_name])
  • app/controllers/list_controller.rb:416:in `public_send’
  • app/controllers/list_controller.rb:416:in `construct_url_with’
  • app/controllers/list_controller.rb:175:in `message_route’
  • app/controllers/list_controller.rb:160:in `block in generate_message_route’
  • app/controllers/application_controller.rb:358:in `block in with_resolved_locale’
  • app/controllers/application_controller.rb:358:in `with_resolved_locale’
  • lib/middleware/omniauth_bypass_middleware.rb:68:in `call’
  • lib/content_security_policy/middleware.rb:12:in `call’
  • lib/middleware/anonymous_cache.rb:355:in `call’
  • config/initializers/100-quiet_logger.rb:23:in `call’
  • config/initializers/100-silence_logger.rb:31:in `call’
  • lib/middleware/enforce_hostname.rb:23:in `call’
  • lib/middleware/request_tracker.rb:177:in `call’
\"Backtrace\"
  • actionpack (6.0.3.5) lib/action_dispatch/journey/formatter.rb:57:in `generate’
  • actionpack (6.0.3.5) lib/action_dispatch/routing/route_set.rb:738:in `generate’
  • actionpack (6.0.3.5) lib/action_dispatch/routing/route_set.rb:769:in `generate’
  • actionpack (6.0.3.5) lib/action_dispatch/routing/route_set.rb:816:in `url_for’
  • actionpack (6.0.3.5) lib/action_dispatch/routing/route_set.rb:269:in `call’
  • actionpack (6.0.3.5) lib/action_dispatch/routing/route_set.rb:326:in `block in define_url_helper’
  • app/controllers/list_controller.rb:416:in `public_send’
  • app/controllers/list_controller.rb:416:in `construct_url_with’
  • app/controllers/list_controller.rb:175:in `message_route’
  • app/controllers/list_controller.rb:160:in `block in generate_message_route’
  • actionpack (6.0.3.5) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action’
  • actionpack (6.0.3.5) lib/abstract_controller/base.rb:195:in `process_action’
  • actionpack (6.0.3.5) lib/action_controller/metal/rendering.rb:30:in `process_action’
  • actionpack (6.0.3.5) lib/abstract_controller/callbacks.rb:42:in `block in process_action’
  • activesupport (6.0.3.5) lib/active_support/callbacks.rb:112:in `block in run_callbacks’
  • app/controllers/application_controller.rb:358:in `block in with_resolved_locale’
  • i18n (1.8.9) lib/i18n.rb:314:in `with_locale’
  • app/controllers/application_controller.rb:358:in `with_resolved_locale’
  • activesupport (6.0.3.5) lib/active_support/callbacks.rb:121:in `block in run_callbacks’
  • activesupport (6.0.3.5) lib/active_support/callbacks.rb:139:in `run_callbacks’
  • actionpack (6.0.3.5) lib/abstract_controller/callbacks.rb:41:in `process_action’
  • actionpack (6.0.3.5) lib/action_controller/metal/rescue.rb:22:in `process_action’
  • actionpack (6.0.3.5) lib/action_controller/metal/instrumentation.rb:33:in `block in process_action’
  • activesupport (6.0.3.5) lib/active_support/notifications.rb:180:in `block in instrument’
  • activesupport (6.0.3.5) lib/active_support/notifications/instrumenter.rb:24:in `instrument’
  • activesupport (6.0.3.5) lib/active_support/notifications.rb:180:in `instrument’
  • actionpack (6.0.3.5) lib/action_controller/metal/instrumentation.rb:32:in `process_action’
  • actionpack (6.0.3.5) lib/action_controller/metal/params_wrapper.rb:245:in `process_action’
  • activerecord (6.0.3.5) lib/active_record/railties/controller_runtime.rb:27:in `process_action’
  • actionpack (6.0.3.5) lib/abstract_controller/base.rb:136:in `process’
  • actionview (6.0.3.5) lib/action_view/rendering.rb:39:in `process’
  • rack-mini-profiler (2.3.1) lib/mini_profiler/profiling_methods.rb:111:in `block in profile_method’
  • actionpack (6.0.3.5) lib/action_controller/metal.rb:190:in `dispatch’
  • actionpack (6.0.3.5) lib/action_controller/metal.rb:254:in `dispatch’
  • actionpack (6.0.3.5) lib/action_dispatch/routing/route_set.rb:50:in `dispatch’
  • actionpack (6.0.3.5) lib/action_dispatch/routing/route_set.rb:33:in `serve’
  • actionpack (6.0.3.5) lib/action_dispatch/journey/router.rb:49:in `block in serve’
  • actionpack (6.0.3.5) lib/action_dispatch/journey/router.rb:32:in `each’
  • actionpack (6.0.3.5) lib/action_dispatch/journey/router.rb:32:in `serve’
  • actionpack (6.0.3.5) lib/action_dispatch/routing/route_set.rb:834:in `call’
  • lib/middleware/omniauth_bypass_middleware.rb:68:in `call’
  • rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call’
  • rack (2.2.3) lib/rack/conditional_get.rb:27:in `call’
  • rack (2.2.3) lib/rack/head.rb:12:in `call’
  • lib/content_security_policy/middleware.rb:12:in `call’
  • lib/middleware/anonymous_cache.rb:355:in `call’
  • rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context’
  • rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call’
  • actionpack (6.0.3.5) lib/action_dispatch/middleware/cookies.rb:648:in `call’
  • actionpack (6.0.3.5) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call’
  • activesupport (6.0.3.5) lib/active_support/callbacks.rb:101:in `run_callbacks’
  • actionpack (6.0.3.5) lib/action_dispatch/middleware/callbacks.rb:26:in `call’
  • actionpack (6.0.3.5) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call’
  • actionpack (6.0.3.5) lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call’
  • actionpack (6.0.3.5) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call’
  • logster (2.9.6) lib/logster/middleware/reporter.rb:43:in `call’
  • railties (6.0.3.5) lib/rails/rack/logger.rb:37:in `call_app’
  • railties (6.0.3.5) lib/rails/rack/logger.rb:28:in `call’
  • config/initializers/100-quiet_logger.rb:23:in `call’
  • config/initializers/100-silence_logger.rb:31:in `call’
  • actionpack (6.0.3.5) lib/action_dispatch/middleware/remote_ip.rb:81:in `call’
  • actionpack (6.0.3.5) lib/action_dispatch/middleware/request_id.rb:27:in `call’
  • lib/middleware/enforce_hostname.rb:23:in `call’
  • rack (2.2.3) lib/rack/method_override.rb:24:in `call’
  • actionpack (6.0.3.5) lib/action_dispatch/middleware/executor.rb:14:in `call’
  • rack (2.2.3) lib/rack/sendfile.rb:110:in `call’
  • actionpack (6.0.3.5) lib/action_dispatch/middleware/host_authorization.rb:76:in `call’
  • rack-mini-profiler (2.3.1) lib/mini_profiler/profiler.rb:373:in `call’
  • message_bus (3.3.4) lib/message_bus/rack/middleware.rb:61:in `call’
  • lib/middleware/request_tracker.rb:177:in `call’
  • railties (6.0.3.5) lib/rails/engine.rb:527:in `call’
  • railties (6.0.3.5) lib/rails/railtie.rb:190:in `public_send’
  • railties (6.0.3.5) lib/rails/railtie.rb:190:in `method_missing’
  • rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call’
  • rack (2.2.3) lib/rack/urlmap.rb:58:in `each’
  • rack (2.2.3) lib/rack/urlmap.rb:58:in `call’
  • unicorn (5.8.0) lib/unicorn/http_server.rb:634:in `process_client’
  • unicorn (5.8.0) lib/unicorn/http_server.rb:732:in `worker_loop’
  • unicorn (5.8.0) lib/unicorn/http_server.rb:548:in `spawn_missing_workers’
  • unicorn (5.8.0) lib/unicorn/http_server.rb:144:in `start’
  • unicorn (5.8.0) bin/unicorn:128:in `<top (required)>’
  • vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `load’
  • vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `’

  1. Discourse セットアップウィザードを再実行しましたが、問題は解決しませんでした。

  2. すべてのプラグインを無効化したセーフモードでも試しましたが、問題は解消されません。

  1. Discourse を英語に戻し、/sidekiq/schedulerJobs::EnsureDbConsistency をトリガーしましたが、これらのグループ名は依然として日本語のままです。 :thinking:

:group_name=>“スタッフ”

group_name パラメータが URL エンコードされていないようです。使用しているブラウザは何ですか?

最新の Chrome バージョンでは、この現象を再現できませんでした。

Chrome の最新バージョンを使用しています。:grinning:
Firefox や Opera でも試しましたが、すべて同じ問題が発生します。

他にも同様の問題に直面している方がいるようです。:thinking:

この問題は再現できません。私の環境では、ブラウザが以下のようにリンクをパーセントエンコーディングしています。

http://localhost:9292/topics/private-messages-group/arpit/%E3%82%B9%E3%82%BF%E3%83%83%E3%83%95.json

その結果、サーバーから適切なレスポンスが返ってきます。

お使いのブラウザとOSのデフォルトロケールは何ですか?英語ですか、それとも日本語ですか?

ブラウザでパーセントエンコーディングが行われない理由が気になっています。

My Wins 10 には日本語と中国語の言語パックの両方がインストールされています。
現在、Windows のデフォルト言語は中国語に設定されています。
Chrome は日本語ですが、Firefox は英語のままです。:sweat_smile:


複数のテストの結果、グループ名の挙動に奇妙な点があることが分かりました。

例えば、「Customize → Text」で
groups.default_names.trust_level_0トラストレベル0 に設定すると、
URL は /g/%E3%83%88%E3%83%A9%E3%82%B9%E3%83%88%E3%83%AC%E3%83%99%E3%83%AB4/messages となり、500 Internal Server Error が発生します。


groups.default_names.trust_level_0trust_level_0 に変更し、1 日待機すると、URL は /g/trust_level_0/messages/ に戻り、問題なくページにアクセスできるようになります。


groups.default_names.trust_level_0Level 0 のような他の単語に変更し、1 日待機しても、URL は変更されません。URL が日本語であれば日本語のまま、英語であれば英語のままです。


現時点では、すべてのグループ名を英語に戻せば問題が解決すると思います。グループ名はデフォルトの英語名と完全に一致している必要があります。そうでなければ、URL は英語に戻りません。
例えば、数日前に groups.default_names.adminsAdmin に設定しました(「Admin」の後に「s」を打ち忘れたため)。数日後現在でも、URL は日本語のまま変更されていません。

「いいね!」 2

私も全く同じ問題が発生しています。この問題はしばらく続いており、その間に Discourse を複数回更新しました。



Screenshot 2021-05-12 at 9.50.22 AM
ロケールを英語と中文(台湾)の両方に切り替えて試しましたが、Google Chrome と Firefox の両方で同じ状況です。

「いいね!」 2

再現することができませんでした。これを発生させるために必要な正確な手順を教えてください。

「いいね!」 3

Unicodeユーザー名を有効にした後に、グループのUnicode名を設定して無効にすると、この現象が発生します。

「いいね!」 7

どうもありがとうございます!Unicode ユーザー名を有効にしたところ、問題が解消されました。

「いいね!」 4