اسم مجموعة غير إنجليزية يسبب خطأ 500 لرسالة المجموعة

لغة discourse الافتراضية الخاصة بي مضبوطة على اليابانية.
وقد تحولت بعض أسماء المجموعات الافتراضية إلى اليابانية، كما أن عناوين URL الخاصة بالمجموعات (Slug) مكتوبة أيضًا باليابانية.

على سبيل المثال، عنوان URL لمجموعة الطاقم هو /g/スタッフ
وعنوان URL لصفحة نشاط الطاقم هو /g/スタッフ/activity/posts

ولا يمكن زيارة صفحة الرسائل الخاصة بالمجموعات التي تحتوي على أسماء غير إنجليزية. /g/スタッフ/messages
عند محاولة الوصول إلى هذه الصفحات، تظهر رسالة خطأ في الخادم 500.

لقد حاولت البحث عن هذه النصوص في صفحة التخصيص، لكنني لا أعتقد أنني أستطيع تخصيصها.

يبدو أن الأمر يتعلق بنوع من الأخطاء، لأنه عند تغيير اللغة مرة أخرى إلى الإنجليزية وتحديث الصفحة، لا تزال أسماء المجموعات غير الإنجليزية كما هي باليابانية.

لدي سؤالان:

  1. هل من الممكن إصلاح خطأ رسائل المجموعة للمجموعات غير الإنجليزية؟

  2. أعتقد أن discourse لا يسمح بأسماء مجموعات غير إنجليزية. إذن كيف يمكنني إعادة هذه الأسماء إلى الإنجليزية؟

ملاحظة: قمت بالتحديث إلى أحدث إصدار وإعادة بناء التطبيق، لكن المشكلة لا تزال قائمة.

لم أتمكن من إعادة إنتاج هذه المشكلة في أحدث إصدار من Discourse. :thinking:

إذا قمت بتحديث الإعدادات المحلية (locale) إلى الإنجليزية، فسيتم تحديث اسم المجموعة تلقائيًا إلى “staff” خلال 12 ساعة عبر مهمة EnsureDbConsistency المجدولة.

شكرًا لك على ردك السريع. :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

التفاصيل:

معلومات
  • 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’
تتبع المسار
  • 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 <main>

  1. لقد حاولت إعادة تشغيل معالج إعداد Discourse، لكن المشكلة لا تزال قائمة.

  2. لقد جربت الوضع الآمن مع تعطيل جميع الإضافات، لكن المشكلة لا تزال قائمة.

  1. لقد حاولت أيضًا إعادة Discourse إلى اللغة الإنجليزية وتشغيل Jobs::EnsureDbConsistency في /sidekiq/scheduler، لكن أسماء المجموعات لا تزال باللغة اليابانية. :thinking:

:group_name=>“スタッフ”

يبدو أن معامل group_name غير مشفر عبر URL. ما هو المتصفح الذي تستخدمه؟

لم أتمكن من إعادة إنتاج هذه المشكلة في أحدث إصدار من Chrome.

أنا أستخدم Chrome مع أحدث تحديث. :grinning:
كما جربت Firefox و Opera، وجميعها تعاني من نفس المشكلة.

وجدت أن آخرين يواجهون نفس المشكلة أيضًا. :thinking:

لا يزال من غير الممكن بالنسبة لي إعادة إنتاج هذه المشكلة. بالنسبة لي، يقوم المتصفح بتشفير الرابط بنسبة مئوية للـ URL على النحو التالي:

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

… وينتج عن ذلك استجابة صحيحة من الخادم.

ما هي الإعدادات الافتراضية للغة والمتصفح لديك؟ هل هي الإنجليزية أم اليابانية؟

أتساءل لماذا لا يتم ترميز عناوين URL بالنسبة المئوية في متصفحك.

لدي Windows 10 مثبت عليه حزمة اللغة اليابانية والصينية.
حاليًا، تم تعيين Windows باللغة الصينية كافتراضي.
متصفح Chrome بلغة يابانية بينما Firefox بلغة إنجليزية. :sweat_smile:


بعد عدة اختبارات، اكتشفت سلوكًا غريبًا يتعلق بأسماء المجموعات.

على سبيل المثال، في تخصيص → نص، قمت بتعيين
groups.default_names.trust_level_0 = トラストレベル0
سيكون الرابط /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_0 إلى trust_level_0 وانتظرت يومًا واحدًا، سيعود الرابط إلى /g/trust_level_0/messages/ ويمكنني الوصول إلى الصفحة دون مشاكل.


إذا قمت بالتغيير إلى كلمة أخرى، مثل groups.default_names.trust_level_0 = Level 0 وانتظرت يومًا واحدًا، سيبقى الرابط دون تغيير. إذا كان الرابط باللغة اليابانية سيبقى باليابانية، وإذا كان بالإنجليزية سيبقى بالإنجليزية.


في الوقت الحالي، أعتقد أنني سأقوم بإعادة تعيين جميع أسماء المجموعات إلى الأسماء الإنجليزية، وهذا سيحل المشكلة. يجب أن تكون أسماء المجموعات مطابقة تمامًا للاسم الإنجليزي الافتراضي، وإلا فلن يعود الرابط إلى الإنجليزية.
على سبيل المثال، قبل بضعة أيام قمت بتعيين groups.default_names.admins إلى Admin، لأنني نسيت كتابة “s” بعد Admin، وبعد بضعة أيام لا يزال الرابط باللغة اليابانية.

أواجه نفس المشكلة تمامًا. استمرت هذه المشكلة لبعض الوقت، وخلالها قمت بتحديث Discourse عدة مرات.



Screenshot 2021-05-12 at 9.50.22 AM
لقد جربت التبديل إلى اللغتين الإنجليزية والصينية (تايوان)، واستخدمت كلًا من متصفح Google Chrome و Firefox.

لم نتمكن من تكرار هذه المشكلة، ما هي الخطوات الدقيقة المطلوبة لإحداثها؟

يحدث لي هذا عندما أقوم بتعطيل أسماء المستخدمين Unicode بعد تعيين اسم Unicode لمجموعة ما.

شكرًا جزيلاً! لقد اختفى مشكلتي الآن بعد تمكين أسماء المستخدمين Unicode.